@internetarchive/elements 1.1.3-webdev-9226.1 → 1.1.3-webdev-9241.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 (228) hide show
  1. package/README.md +1 -33
  2. package/dist/src/elements/ia-button/ia-button.d.ts.map +1 -1
  3. package/dist/src/elements/ia-button/ia-button.js +2 -2
  4. package/dist/src/elements/ia-button/ia-button.js.map +1 -1
  5. package/dist/src/elements/ia-combo-box/ia-combo-box.d.ts.map +1 -1
  6. package/dist/src/elements/ia-combo-box/ia-combo-box.js +2 -3
  7. package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
  8. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +2 -2
  9. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
  10. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +5 -4
  11. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
  12. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
  13. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
  14. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +8 -5
  15. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
  16. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
  17. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +2 -3
  18. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
  19. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
  20. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +2 -3
  21. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
  22. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
  23. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +2 -3
  24. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
  25. package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
  26. package/dist/src/elements/ia-otp-form/ia-otp-form.js +2 -3
  27. package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
  28. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
  29. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +2 -3
  30. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
  31. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -2
  32. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  33. package/dist/src/elements/ia-radio-player/ia-radio-player.js +3 -9
  34. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  35. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
  36. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +2 -3
  37. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
  38. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
  39. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
  40. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +5 -4
  41. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
  42. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
  43. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
  44. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +12 -7
  45. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
  46. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
  47. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
  48. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
  49. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
  50. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
  51. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
  52. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
  53. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
  54. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
  55. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
  56. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
  57. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
  58. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
  59. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
  60. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
  61. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
  62. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
  63. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
  64. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
  65. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
  66. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
  67. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
  68. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
  69. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
  70. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
  71. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
  72. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
  73. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
  74. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
  75. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
  76. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
  77. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
  78. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
  79. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
  80. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
  81. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
  82. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
  83. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
  84. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
  85. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
  86. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
  87. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
  88. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
  89. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
  90. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
  91. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
  92. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
  93. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
  94. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
  95. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
  96. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
  97. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
  98. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
  99. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
  100. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
  101. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
  102. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
  103. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
  104. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
  105. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
  106. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
  107. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
  108. package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
  109. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
  110. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
  111. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
  112. package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
  113. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
  114. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
  115. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
  116. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
  117. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
  118. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
  119. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
  120. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
  121. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
  122. package/dist/src/elements/ia-topnav/data/menus.d.ts +17 -0
  123. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
  124. package/dist/src/elements/ia-topnav/data/menus.js +680 -0
  125. package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
  126. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
  127. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
  128. package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
  129. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
  130. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
  131. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
  132. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
  133. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
  134. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
  135. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
  136. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
  137. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
  138. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
  139. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
  140. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
  141. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
  142. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
  143. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
  144. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +287 -0
  145. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
  146. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
  147. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
  148. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
  149. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
  150. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
  151. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
  152. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
  153. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
  154. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
  155. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
  156. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
  157. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
  158. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
  159. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
  160. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
  161. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
  162. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
  163. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
  164. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
  165. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
  166. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
  167. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
  168. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
  169. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
  170. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
  171. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
  172. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
  173. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
  174. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
  175. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
  176. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
  177. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
  178. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
  179. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
  180. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
  181. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
  182. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
  183. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
  184. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
  185. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
  186. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +85 -0
  187. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
  188. package/dist/src/elements/ia-topnav/ia-topnav.js +434 -0
  189. package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
  190. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
  191. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
  192. package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
  193. package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
  194. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
  195. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
  196. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
  197. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
  198. package/dist/src/elements/ia-topnav/models.d.ts +59 -0
  199. package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
  200. package/dist/src/elements/ia-topnav/models.js +10 -0
  201. package/dist/src/elements/ia-topnav/models.js.map +1 -0
  202. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
  203. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
  204. package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
  205. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
  206. package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
  207. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
  208. package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
  209. package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
  210. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
  211. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +0 -4
  212. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
  213. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
  214. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +2 -3
  215. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
  216. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
  217. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
  218. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
  219. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
  220. package/dist/src/elements/index.d.ts +3 -0
  221. package/dist/src/elements/index.d.ts.map +1 -1
  222. package/dist/src/elements/index.js +3 -0
  223. package/dist/src/elements/index.js.map +1 -1
  224. package/package.json +5 -27
  225. package/dist/src/locales/es.d.ts +0 -40
  226. package/dist/src/locales/es.d.ts.map +0 -1
  227. package/dist/src/locales/es.js +0 -45
  228. package/dist/src/locales/es.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-primary-nav.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-primary-nav.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, PropertyValues, css, html, nothing } from 'lit';\nimport TrackedElement from './tracked-element';\nimport icons from './assets/img/icons';\nimport './ia-topnav-icon-hamburger';\nimport './ia-topnav-login-button';\nimport type { LoginButton } from './ia-topnav-login-button';\nimport './ia-topnav-media-menu';\nimport '@src/elements/ia-sr-only-text/ia-sr-only-text';\nimport logoWordmarkStacked from './assets/img/wordmark-stacked';\nimport { formatUrl } from './lib/helpers';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport {\n IATopNavConfig,\n IATopNavSecondIdentitySlotMode,\n TOPNAV_MOBILE_BREAKPOINT,\n} from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg, str } from '@lit/localize';\n\n@customElement('ia-topnav-primary-nav')\n@localized()\nexport class PrimaryNav extends TrackedElement {\n @property({ type: String }) mediaBaseHost = 'https://archive.org';\n @property({ type: String }) baseHost = '';\n @property({ type: Boolean }) hideSearch = false;\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) screenName = '';\n @property({ type: String })\n secondIdentitySlotMode: IATopNavSecondIdentitySlotMode = '';\n @property({ type: String }) selectedMenuOption = '';\n @property({ type: Boolean }) signedOutMenuOpen = false;\n @property({ type: Boolean }) userMenuOpen = false;\n @property({ type: Boolean }) mediaMenuAnimate = false;\n @property({ type: String }) username = '';\n @property({ type: String }) userProfileImagePath = '';\n @property({ type: Object }) currentTab:\n | { mediatype: string; moveTo: string }\n | undefined;\n signedOutMenuToggled: unknown;\n\n @query('button.user-menu') private userMenuButton?: HTMLButtonElement;\n @query('ia-topnav-login-button') private loginButton?: HTMLElement;\n\n updated(props: PropertyValues) {\n if (props.has('currentTab')) {\n // early return\n if (!this.currentTab || Object.keys(this.currentTab).length === 0)\n return nothing;\n\n const isUserMenuTab =\n this.currentTab && this.currentTab.mediatype === 'usermenu';\n if (isUserMenuTab) {\n const mediaButtons = Array.from(\n this.shadowRoot\n ?.querySelector('ia-topnav-media-menu')\n ?.shadowRoot?.querySelectorAll('ia-topnav-media-button') ?? [],\n );\n const lastMediaButton = mediaButtons.filter((element) => {\n return element.shadowRoot\n ?.querySelector('a')\n ?.classList.contains('images');\n });\n\n let nextElement;\n if (this.username) {\n nextElement = this.shadowRoot?.querySelector('a.upload');\n } else {\n nextElement = this.shadowRoot\n ?.querySelector('ia-topnav-login-button')\n ?.shadowRoot?.querySelector('span a');\n }\n\n const menuItemElement =\n lastMediaButton[0]?.shadowRoot?.querySelector('a.menu-item');\n\n const focusElement =\n this.currentTab.moveTo === 'next' ? nextElement : menuItemElement;\n\n if (focusElement) {\n (focusElement as HTMLElement).focus();\n }\n } else if (this.currentTab.moveTo === 'next') {\n if (this.shadowRoot?.querySelector('.user-menu')) {\n (this.shadowRoot?.querySelector('.user-menu') as HTMLElement).focus();\n } else {\n (\n this.shadowRoot\n ?.querySelector('ia-topnav-login-button')\n ?.shadowRoot?.querySelectorAll('span a')[0] as HTMLElement\n )?.focus();\n }\n }\n }\n }\n\n render() {\n // const mediaMenuTabIndex = this.openMenu === 'media' ? '' : '-1';\n return html`\n <nav class=${this.hideSearch ? 'hide-search' : ''}>\n <button\n class=\"hamburger\"\n @click=\"${this.toggleMediaMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHamburger\"\n title=${msg('Open main menu')}\n >\n <ia-topnav-icon-hamburger\n ?active=${this.openMenu === 'media'}\n ></ia-topnav-icon-hamburger>\n </button>\n\n <div class=${`branding ${this.secondLogoClass}`}>\n <a\n .href=${formatUrl('/' as string & Location, this.baseHost)}\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.config?.eventCategory}|NavHome\"\n title=${msg('Go home')}\n class=\"link-home\"\n >${icons.iaLogo}${logoWordmarkStacked}</a\n >\n ${this.secondLogoSlot}\n </div>\n <ia-topnav-media-menu\n .baseHost=${this.baseHost}\n .config=${this.config}\n ?mediaMenuAnimate=${this.mediaMenuAnimate}\n .selectedMenuOption=${this.selectedMenuOption}\n .openMenu=${this.openMenu}\n .currentTab=${this.currentTab}\n ></ia-topnav-media-menu>\n ${this.searchSlotContainer}\n <div class=\"right-side-section\">\n ${this.mobileDonateHeart} ${this.userStateTemplate}\n ${this.uploadButtonTemplate} ${this.searchMenu}\n </div>\n </nav>\n `;\n }\n\n /** Distance (px) from this element's right edge to the right edge of the account dropdown toggle. */\n getAccountDropdownOffset(): number {\n const hostRect = this.getBoundingClientRect();\n\n if (this.userMenuButton) {\n return hostRect.right - this.userMenuButton.getBoundingClientRect().right;\n }\n\n if (this.loginButton) {\n const loginRect = this.loginButton.getBoundingClientRect();\n const innerOffset = (\n this.loginButton as LoginButton\n ).getDropdownToggleOffset();\n return hostRect.right - loginRect.right + innerOffset;\n }\n\n return 0;\n }\n\n toggleMediaMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'media',\n },\n }),\n );\n }\n\n toggleSearchMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'search',\n },\n }),\n );\n }\n\n toggleUserMenu(e: Event) {\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'user',\n },\n }),\n );\n }\n\n get userIcon() {\n const userMenuClass = this.openMenu === 'user' ? 'active' : '';\n const userMenuToolTip =\n this.openMenu === 'user'\n ? msg('Close user menu')\n : msg('Expand user menu');\n\n return html`\n <button\n class=\"user-menu ${userMenuClass}\"\n title=\"${userMenuToolTip}\"\n @click=\"${this.toggleUserMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavUserMenu\"\n >\n <img\n src=\"${this.mediaBaseHost}${this.userProfileImagePath}\"\n alt=${msg(str`Profile picture for ${this.screenName}`)}\n />\n <span class=\"screen-name\" dir=\"auto\">${this.screenName}</span>\n </button>\n `;\n }\n\n get loginIcon() {\n return html`\n <ia-topnav-login-button\n .baseHost=${this.baseHost}\n .config=${this.config}\n .dropdownOpen=${this.signedOutMenuOpen}\n .openMenu=${this.openMenu}\n @signedOutMenuToggled=${this.signedOutMenuToggled}\n ></ia-topnav-login-button>\n `;\n }\n\n get searchMenuOpen() {\n return this.openMenu === 'search';\n }\n\n get allowSecondaryIcon() {\n return this.secondIdentitySlotMode === 'allow';\n }\n\n /**\n * The search slot container, rendered between ia-topnav-media-menu and\n * right-side-section so it sits left of the Upload button on desktop.\n */\n get searchSlotContainer() {\n if (this.hideSearch) return nothing;\n return html`\n <div class=\"search-container ${this.searchMenuOpen ? 'open' : ''}\">\n <slot name=\"search\"></slot>\n </div>\n `;\n }\n\n get searchMenu() {\n if (this.hideSearch) return nothing;\n\n return html`\n <button\n class=\"search-trigger\"\n @click=\"${this.toggleSearchMenu}\"\n data-event-click-tracking=\"${this.config?.eventCategory}|NavSearchOpen\"\n >\n ${icons.search}\n </button>\n `;\n }\n\n get mobileDonateHeart() {\n return html`\n <a\n class=\"mobile-donate-link\"\n .href=${formatUrl(\n '/donate/?origin=iawww-mbhrt' as string & Location,\n this.baseHost,\n )}\n >\n ${icons.donateUnpadded}\n <ia-sr-only-text>${msg('Donate to the archive')}</ia-sr-only-text>\n </a>\n `;\n }\n\n get uploadButtonTemplate() {\n return html` <a\n .href=\"${formatUrl('/upload' as string & Location, this.baseHost)}\"\n class=\"upload\"\n @focus=${this.toggleMediaMenu}\n >\n ${icons.upload}\n <span>${msg('Upload')}</span>\n </a>`;\n }\n\n get userStateTemplate() {\n return html`<div class=\"user-info\">\n ${this.username ? this.userIcon : this.loginIcon}\n </div>`;\n }\n\n get secondLogoSlot() {\n return this.allowSecondaryIcon\n ? html`\n <slot name=\"opt-sec-logo\"></slot>\n <slot name=\"opt-sec-logo-mobile\"></slot>\n `\n : nothing;\n }\n\n get secondLogoClass() {\n return this.allowSecondaryIcon ? 'second-logo' : '';\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n button:focus,\n input:focus {\n outline: none;\n }\n\n nav {\n position: relative;\n display: flex;\n height: 4rem;\n grid-template-areas: 'hamburger empty heart search user';\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;\n grid-template-columns: 4rem auto 4rem 4rem 4rem;\n -ms-grid-rows: 100%;\n grid-template-rows: 100%;\n background: var(--primaryNavBg);\n border-bottom: 1px solid var(--primaryNavBottomBorder);\n }\n\n nav.hide-search {\n grid-template-areas: 'hamburger empty heart user';\n -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;\n grid-template-columns: 4rem auto 4rem 4rem;\n }\n\n .right-side-section {\n display: flex;\n margin-left: auto;\n user-select: none;\n }\n button {\n background: none;\n color: inherit;\n border: none;\n font: inherit;\n cursor: pointer;\n }\n\n .branding {\n position: static;\n float: left;\n margin: 0 !important;\n padding: 0 5px 0 10px;\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n transform: translate(0, 0);\n }\n\n slot,\n .branding {\n display: flex;\n justify-content: left;\n align-items: center;\n }\n\n ia-topnav-media-menu {\n flex: 1;\n justify-self: stretch;\n }\n\n .ia-logo {\n height: 3rem;\n width: 2.7rem;\n display: inline-block;\n }\n .ia-wordmark {\n height: 3rem;\n width: 9.5rem;\n }\n .ia-logo,\n .ia-wordmark {\n margin-right: 5px;\n }\n\n .hamburger {\n -ms-grid-row: 1;\n -ms-grid-column: 1;\n grid-area: hamburger;\n padding: 0;\n }\n .hamburger svg {\n height: 4rem;\n width: 4rem;\n fill: var(--activeColor);\n }\n\n .mobile-donate-link {\n display: inline-block;\n }\n .mobile-donate-link svg {\n height: 4rem;\n width: 4rem;\n }\n .mobile-donate-link .fill-color {\n fill: rgb(255, 0, 0);\n }\n\n .search-trigger {\n padding: 0;\n }\n .search-trigger svg {\n height: 4rem;\n width: 4rem;\n }\n .search-trigger .fill-color {\n fill: var(--iconFill);\n }\n\n .search-container {\n display: none;\n }\n\n .search-container.open {\n display: flex;\n position: absolute;\n top: 0;\n right: 4rem;\n bottom: 0;\n left: 4rem;\n z-index: 3;\n padding: 0.5rem;\n border-radius: 1rem 1rem 0 0;\n background: var(--primaryNavBg);\n align-items: center;\n animation: fade-in 0.2s forwards;\n }\n\n .search-container ::slotted(*) {\n display: block;\n }\n\n .search-container slot {\n width: 100%;\n }\n\n @keyframes fade-in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n\n .upload {\n display: none;\n }\n\n .upload span {\n display: none;\n }\n\n .upload svg {\n height: 3rem;\n width: 3rem;\n }\n\n .screen-name {\n display: none;\n font-size: 1.3rem;\n vertical-align: middle;\n text-transform: uppercase;\n }\n\n .user-menu {\n color: var(--lightTextColor);\n padding: 0.5rem;\n height: 100%;\n }\n\n button.user-menu:hover,\n button.user-menu:focus {\n color: var(--linkHoverColor);\n outline: none;\n }\n\n .user-menu.active {\n border-radius: 1rem 1rem 0 0;\n background: var(--activeButtonBg);\n }\n\n .user-menu img {\n display: block;\n width: 3rem;\n height: 3rem;\n }\n\n .link-home {\n text-decoration: none;\n display: inline-flex;\n }\n a.link-home:focus,\n a.link-home:focus-visible {\n outline-offset: 1px;\n }\n\n @media only screen and (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) and (max-device-width: 905px) {\n .branding.second-logo {\n padding-right: 0;\n }\n }\n\n @media (min-width: 906px) {\n .branding.second-logo {\n padding-right: 20px;\n }\n }\n\n @media (max-width: ${TOPNAV_MOBILE_BREAKPOINT - 1}px) {\n slot[name='opt-sec-logo'] {\n display: none;\n }\n\n .right-side-section {\n display: initial;\n }\n .right-side-section .user-info {\n float: right;\n }\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n :host {\n --userIconWidth: 3.2rem;\n --userIconHeight: 3.2rem;\n }\n\n nav {\n display: flex;\n z-index: 4;\n height: 5rem;\n padding-right: 1.5rem;\n }\n\n slot[name='opt-sec-logo-mobile'] {\n display: none;\n }\n\n .ia-logo,\n .ia-wordmark {\n margin-right: 10px;\n }\n\n .hamburger,\n .search-trigger,\n .mobile-donate-link {\n display: none;\n }\n\n .user-info {\n display: block;\n float: right;\n vertical-align: middle;\n height: 100%;\n }\n\n .user-info .user-menu img {\n height: 3rem;\n width: 3rem;\n margin-right: 0.5rem;\n }\n\n .user-menu {\n padding: 1rem 0.5rem;\n }\n .user-menu.active {\n background: transparent;\n }\n\n .user-menu img {\n display: inline-block;\n vertical-align: middle;\n margin-right: 0.5rem;\n }\n\n .upload {\n display: block;\n padding: 1rem 0.5rem;\n float: right;\n font-size: 1.4rem;\n text-transform: uppercase;\n text-decoration: none;\n color: var(--lightTextColor);\n }\n .upload:active,\n .upload:focus,\n .upload:hover {\n color: var(--linkHoverColor);\n }\n .upload:focus-visible {\n outline: none;\n }\n\n .upload svg {\n vertical-align: middle;\n fill: var(--iconFill);\n }\n\n .upload:hover svg,\n .upload:focus svg,\n .upload:active svg {\n fill: var(--linkHoverColor);\n }\n\n .search-container,\n .search-container.open {\n display: flex;\n position: static;\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n align-items: center;\n padding: 0 0 0 1rem;\n background: transparent;\n border-radius: 0;\n z-index: auto;\n }\n\n .search-container slot {\n width: auto;\n }\n }\n\n @media (min-width: 990px) {\n .screen-name {\n display: inline-block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 165px;\n }\n\n .upload span {\n display: inline-block;\n vertical-align: middle;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import TrackedElement from './tracked-element.js';
3
+ import { IATopNavConfig } from './models.js';
4
+ export declare class SavePageForm extends TrackedElement {
5
+ config: IATopNavConfig;
6
+ inputValid: boolean;
7
+ render(): import("lit").TemplateResult<1>;
8
+ private validateURL;
9
+ get errorClass(): string;
10
+ static get styles(): CSSResultGroup;
11
+ }
12
+ //# sourceMappingURL=ia-topnav-save-page-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-save-page-form.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-save-page-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAChD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAA4B,MAAM,UAAU,CAAC;AAKpE,qBAEa,YAAa,SAAQ,cAAc;IAClB,MAAM,EAAE,cAAc,CAAuB;IAEhE,UAAU,UAAQ;IAE3B,MAAM;IA+BN,OAAO,CAAC,WAAW;IAgBnB,IAAI,UAAU,WAEb;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CAwDlC;CACF"}
@@ -0,0 +1,128 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html } from 'lit';
3
+ import TrackedElement from './tracked-element.js';
4
+ import { property, state } from 'lit/decorators.js';
5
+ import { customElement } from '../../util/custom-element.js';
6
+ import { TOPNAV_MOBILE_BREAKPOINT } from './models.js';
7
+ import { defaultTopNavConfig } from './data/menus.js';
8
+ import themeStyles from '../../themes/theme-styles.js';
9
+ import { localized, msg } from '@lit/localize';
10
+ let SavePageForm = class SavePageForm extends TrackedElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.config = defaultTopNavConfig;
14
+ this.inputValid = true;
15
+ }
16
+ render() {
17
+ return html `
18
+ <form
19
+ action="//web.archive.org/save"
20
+ method="post"
21
+ data-event-submit-tracking="${this.config.eventCategory}|SavePageSubmit"
22
+ @submit=${this.validateURL}
23
+ >
24
+ <h3>${msg('Save Page Now')}</h3>
25
+ <p>
26
+ ${msg('Capture a web page as it appears now for use as a trusted citation in the future.')}
27
+ </p>
28
+ <div>
29
+ <input
30
+ type="text"
31
+ aria-label=${msg('Enter a URL to save')}
32
+ name="url_preload"
33
+ id="url_preload"
34
+ placeholder="https://"
35
+ />
36
+ <input type="submit" value=${msg('Save')} />
37
+ </div>
38
+ <p class=${this.errorClass}>
39
+ ${msg('Please enter a valid web address')}
40
+ </p>
41
+ </form>
42
+ `;
43
+ }
44
+ validateURL(e) {
45
+ const target = e.target;
46
+ const urlInput = target.querySelector('[name="url_preload"]');
47
+ const valid = /\..{2,}$/.test(urlInput.value);
48
+ if (!valid) {
49
+ e.preventDefault();
50
+ this.inputValid = false;
51
+ return;
52
+ }
53
+ this.inputValid = true;
54
+ this.trackSubmit(e);
55
+ }
56
+ get errorClass() {
57
+ return `error${this.inputValid ? '' : ' visible'}`;
58
+ }
59
+ static get styles() {
60
+ return [
61
+ themeStyles,
62
+ css `
63
+ div {
64
+ display: grid;
65
+ grid-template-columns: 1fr auto;
66
+ grid-column-gap: 0.8rem;
67
+ margin: 0;
68
+ padding: 0;
69
+ border: none;
70
+ }
71
+
72
+ input[type='text'] {
73
+ width: 100%;
74
+ height: 3rem;
75
+ box-sizing: border-box;
76
+ border: 1px solid var(--savePageInputBorder);
77
+ border-radius: 0.5rem;
78
+ color: var(--grey13);
79
+ font-size: inherit;
80
+ }
81
+
82
+ input[type='submit'] {
83
+ -webkit-appearance: none;
84
+ -moz-appearance: none;
85
+ appearance: none;
86
+ padding: 0.4rem 0.8rem;
87
+ font: normal 1.3rem var(--themeFontFamily);
88
+ text-transform: uppercase;
89
+ color: var(--savePageSubmitText);
90
+ border: none;
91
+ border-radius: 16px;
92
+ background: var(--savePageSubmitBg);
93
+ cursor: pointer;
94
+ }
95
+
96
+ .error {
97
+ display: none;
98
+ margin-top: 0.5rem;
99
+ font-weight: bold;
100
+ color: var(--savePageErrorText);
101
+ }
102
+
103
+ .visible {
104
+ display: block;
105
+ }
106
+
107
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
108
+ h3 {
109
+ margin-top: 0;
110
+ font: normal 100 1.6rem var(--themeFontFamily);
111
+ }
112
+ }
113
+ `,
114
+ ];
115
+ }
116
+ };
117
+ __decorate([
118
+ property({ type: Object })
119
+ ], SavePageForm.prototype, "config", void 0);
120
+ __decorate([
121
+ state()
122
+ ], SavePageForm.prototype, "inputValid", void 0);
123
+ SavePageForm = __decorate([
124
+ customElement('ia-topnav-save-page-form'),
125
+ localized()
126
+ ], SavePageForm);
127
+ export { SavePageForm };
128
+ //# sourceMappingURL=ia-topnav-save-page-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-save-page-form.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-save-page-form.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAkB,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIxC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,cAAc;IAAzC;;QACuB,WAAM,GAAmB,mBAAmB,CAAC;QAEhE,eAAU,GAAG,IAAI,CAAC;IA8G7B,CAAC;IA5GC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;sCAIuB,IAAI,CAAC,MAAM,CAAC,aAAa;kBAC7C,IAAI,CAAC,WAAW;;cAEpB,GAAG,CAAC,eAAe,CAAC;;YAEtB,GAAG,CACH,mFAAmF,CACpF;;;;;yBAKc,GAAG,CAAC,qBAAqB,CAAC;;;;;uCAKZ,GAAG,CAAC,MAAM,CAAC;;mBAE/B,IAAI,CAAC,UAAU;YACtB,GAAG,CAAC,kCAAkC,CAAC;;;KAG9C,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,CAAc;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAyB,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CACnC,sBAAsB,CACH,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,WAAW;YACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6CoB,wBAAwB;;;;;;OAM9C;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAA8C;AAEhE;IAAR,KAAK,EAAE;gDAAmB;AAHhB,YAAY;IAFxB,aAAa,CAAC,0BAA0B,CAAC;IACzC,SAAS,EAAE;GACC,YAAY,CAiHxB","sourcesContent":["import { CSSResultGroup, css, html } from 'lit';\nimport TrackedElement from './tracked-element';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { IATopNavConfig, TOPNAV_MOBILE_BREAKPOINT } from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg } from '@lit/localize';\n\n@customElement('ia-topnav-save-page-form')\n@localized()\nexport class SavePageForm extends TrackedElement {\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n\n @state() inputValid = true;\n\n render() {\n return html`\n <form\n action=\"//web.archive.org/save\"\n method=\"post\"\n data-event-submit-tracking=\"${this.config.eventCategory}|SavePageSubmit\"\n @submit=${this.validateURL}\n >\n <h3>${msg('Save Page Now')}</h3>\n <p>\n ${msg(\n 'Capture a web page as it appears now for use as a trusted citation in the future.',\n )}\n </p>\n <div>\n <input\n type=\"text\"\n aria-label=${msg('Enter a URL to save')}\n name=\"url_preload\"\n id=\"url_preload\"\n placeholder=\"https://\"\n />\n <input type=\"submit\" value=${msg('Save')} />\n </div>\n <p class=${this.errorClass}>\n ${msg('Please enter a valid web address')}\n </p>\n </form>\n `;\n }\n\n private validateURL(e: SubmitEvent) {\n const target = e.target as HTMLFormElement;\n const urlInput = target.querySelector(\n '[name=\"url_preload\"]',\n ) as HTMLInputElement;\n const valid = /\\..{2,}$/.test(urlInput.value);\n\n if (!valid) {\n e.preventDefault();\n this.inputValid = false;\n return;\n }\n this.inputValid = true;\n this.trackSubmit(e);\n }\n\n get errorClass() {\n return `error${this.inputValid ? '' : ' visible'}`;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n div {\n display: grid;\n grid-template-columns: 1fr auto;\n grid-column-gap: 0.8rem;\n margin: 0;\n padding: 0;\n border: none;\n }\n\n input[type='text'] {\n width: 100%;\n height: 3rem;\n box-sizing: border-box;\n border: 1px solid var(--savePageInputBorder);\n border-radius: 0.5rem;\n color: var(--grey13);\n font-size: inherit;\n }\n\n input[type='submit'] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 0.4rem 0.8rem;\n font: normal 1.3rem var(--themeFontFamily);\n text-transform: uppercase;\n color: var(--savePageSubmitText);\n border: none;\n border-radius: 16px;\n background: var(--savePageSubmitBg);\n cursor: pointer;\n }\n\n .error {\n display: none;\n margin-top: 0.5rem;\n font-weight: bold;\n color: var(--savePageErrorText);\n }\n\n .visible {\n display: block;\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n h3 {\n margin-top: 0;\n font: normal 100 1.6rem var(--themeFontFamily);\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import DropdownMenu from './dropdown-menu.js';
2
+ export declare class SignedOutDropdown extends DropdownMenu {
3
+ }
4
+ //# sourceMappingURL=ia-topnav-signed-out-dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-signed-out-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-signed-out-dropdown.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAE3C,qBACa,iBAAkB,SAAQ,YAAY;CAAG"}
@@ -0,0 +1,10 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from '../../util/custom-element.js';
3
+ import DropdownMenu from './dropdown-menu.js';
4
+ let SignedOutDropdown = class SignedOutDropdown extends DropdownMenu {
5
+ };
6
+ SignedOutDropdown = __decorate([
7
+ customElement('ia-topnav-signed-out-dropdown')
8
+ ], SignedOutDropdown);
9
+ export { SignedOutDropdown };
10
+ //# sourceMappingURL=ia-topnav-signed-out-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-signed-out-dropdown.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-signed-out-dropdown.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAGpC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,YAAY;CAAG,CAAA;AAAzC,iBAAiB;IAD7B,aAAa,CAAC,+BAA+B,CAAC;GAClC,iBAAiB,CAAwB","sourcesContent":["import { customElement } from '@src/util/custom-element';\nimport DropdownMenu from './dropdown-menu';\n\n@customElement('ia-topnav-signed-out-dropdown')\nexport class SignedOutDropdown extends DropdownMenu {}\n"]}
@@ -0,0 +1,7 @@
1
+ import DropdownMenu from './dropdown-menu.js';
2
+ export default class UserMenu extends DropdownMenu {
3
+ username: string;
4
+ screenName: string;
5
+ render(): import("lit").TemplateResult<1>;
6
+ }
7
+ //# sourceMappingURL=ia-topnav-user-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-user-menu.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-user-menu.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IACpB,QAAQ,SAAM;IACd,UAAU,SAAM;IAE5C,MAAM;CAgBP"}
@@ -0,0 +1,39 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import DropdownMenu from './dropdown-menu.js';
4
+ import { property } from 'lit/decorators.js';
5
+ import { customElement } from '../../util/custom-element.js';
6
+ let UserMenu = class UserMenu extends DropdownMenu {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.username = '';
10
+ this.screenName = '';
11
+ }
12
+ render() {
13
+ return html `
14
+ <div class="nav-container">
15
+ <nav
16
+ class="${this.menuClass}"
17
+ aria-hidden=${!this.open}
18
+ aria-expanded=${this.open}
19
+ >
20
+ <h3>${this.screenName}</h3>
21
+ <ul>
22
+ ${this.dropdownItems}
23
+ </ul>
24
+ </nav>
25
+ </div>
26
+ `;
27
+ }
28
+ };
29
+ __decorate([
30
+ property({ type: String })
31
+ ], UserMenu.prototype, "username", void 0);
32
+ __decorate([
33
+ property({ type: String })
34
+ ], UserMenu.prototype, "screenName", void 0);
35
+ UserMenu = __decorate([
36
+ customElement('ia-topnav-user-menu')
37
+ ], UserMenu);
38
+ export default UserMenu;
39
+ //# sourceMappingURL=ia-topnav-user-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-user-menu.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG1C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAAnC;;QACe,aAAQ,GAAG,EAAE,CAAC;QACd,eAAU,GAAG,EAAE,CAAC;IAkB9C,CAAC;IAhBC,MAAM;QACJ,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,SAAS;wBACT,CAAC,IAAI,CAAC,IAAI;0BACR,IAAI,CAAC,IAAI;;gBAEnB,IAAI,CAAC,UAAU;;cAEjB,IAAI,CAAC,aAAa;;;;KAI3B,CAAC;IACJ,CAAC;CACF,CAAA;AAnB6B;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,qBAAqB,CAAC;GAChB,QAAQ,CAoB5B;eApBoB,QAAQ","sourcesContent":["import { html } from 'lit';\nimport DropdownMenu from './dropdown-menu';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\n@customElement('ia-topnav-user-menu')\nexport default class UserMenu extends DropdownMenu {\n @property({ type: String }) username = '';\n @property({ type: String }) screenName = '';\n\n render() {\n return html`\n <div class=\"nav-container\">\n <nav\n class=\"${this.menuClass}\"\n aria-hidden=${!this.open}\n aria-expanded=${this.open}\n >\n <h3>${this.screenName}</h3>\n <ul>\n ${this.dropdownItems}\n </ul>\n </nav>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { IAWaybackSearchForm } from '../../elements/ia-wayback-search-form/ia-wayback-search-form.js';
3
+ /**
4
+ * The Wayback Machine search form shown inside the topnav's wayback slider.
5
+ * It is `ia-wayback-search-form` with the topnav's layout on top.
6
+ */
7
+ export declare class IATopNavWaybackSearch extends IAWaybackSearchForm {
8
+ static get styles(): CSSResultGroup;
9
+ }
10
+ //# sourceMappingURL=ia-topnav-wayback-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-wayback-search.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-wayback-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAGlG;;;GAGG;AACH,qBACa,qBAAsB,SAAQ,mBAAmB;IAC5D,MAAM,KAAK,MAAM,IAAI,cAAc,CA+ClC;CACF"}
@@ -0,0 +1,64 @@
1
+ import { __decorate } from "tslib";
2
+ import { css } from 'lit';
3
+ import { customElement } from '../../util/custom-element.js';
4
+ import { IAWaybackSearchForm } from '../../elements/ia-wayback-search-form/ia-wayback-search-form.js';
5
+ import { TOPNAV_MOBILE_BREAKPOINT } from './models.js';
6
+ /**
7
+ * The Wayback Machine search form shown inside the topnav's wayback slider.
8
+ * It is `ia-wayback-search-form` with the topnav's layout on top.
9
+ */
10
+ let IATopNavWaybackSearch = class IATopNavWaybackSearch extends IAWaybackSearchForm {
11
+ static get styles() {
12
+ return [
13
+ super.styles,
14
+ css `
15
+ p {
16
+ margin-bottom: 1rem;
17
+ font-size: 1.6rem;
18
+ text-align: center;
19
+ }
20
+
21
+ fieldset {
22
+ padding: 0.5rem;
23
+ border-radius: 5px;
24
+ box-shadow: none;
25
+ }
26
+
27
+ input {
28
+ padding-left: 3rem;
29
+ margin-top: 0.3rem;
30
+ font-size: 1.4rem;
31
+ border-color: #bca38e;
32
+ background: #fff;
33
+ }
34
+
35
+ input::placeholder,
36
+ input::-webkit-input-placeholder {
37
+ color: #8e8e8e;
38
+ }
39
+
40
+ .search-field svg {
41
+ top: 50%;
42
+ transform: translateY(-50%);
43
+ }
44
+
45
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
46
+ fieldset a,
47
+ .search-field {
48
+ display: block;
49
+ width: auto;
50
+ }
51
+
52
+ fieldset a {
53
+ margin: 0 1.5rem;
54
+ }
55
+ }
56
+ `,
57
+ ];
58
+ }
59
+ };
60
+ IATopNavWaybackSearch = __decorate([
61
+ customElement('ia-topnav-wayback-search')
62
+ ], IATopNavWaybackSearch);
63
+ export { IATopNavWaybackSearch };
64
+ //# sourceMappingURL=ia-topnav-wayback-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-wayback-search.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-wayback-search.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAkB,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;GAGG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,mBAAmB;IAC5D,MAAM,KAAK,MAAM;QACf,OAAO;YACL,KAAK,CAAC,MAAM;YACZ,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA+BoB,wBAAwB;;;;;;;;;;;OAW9C;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAjDY,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAiDjC","sourcesContent":["import { css, CSSResultGroup } from 'lit';\nimport { customElement } from '@src/util/custom-element';\n\nimport { IAWaybackSearchForm } from '@src/elements/ia-wayback-search-form/ia-wayback-search-form';\nimport { TOPNAV_MOBILE_BREAKPOINT } from './models';\n\n/**\n * The Wayback Machine search form shown inside the topnav's wayback slider.\n * It is `ia-wayback-search-form` with the topnav's layout on top.\n */\n@customElement('ia-topnav-wayback-search')\nexport class IATopNavWaybackSearch extends IAWaybackSearchForm {\n static get styles(): CSSResultGroup {\n return [\n super.styles,\n css`\n p {\n margin-bottom: 1rem;\n font-size: 1.6rem;\n text-align: center;\n }\n\n fieldset {\n padding: 0.5rem;\n border-radius: 5px;\n box-shadow: none;\n }\n\n input {\n padding-left: 3rem;\n margin-top: 0.3rem;\n font-size: 1.4rem;\n border-color: #bca38e;\n background: #fff;\n }\n\n input::placeholder,\n input::-webkit-input-placeholder {\n color: #8e8e8e;\n }\n\n .search-field svg {\n top: 50%;\n transform: translateY(-50%);\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n fieldset a,\n .search-field {\n display: block;\n width: auto;\n }\n\n fieldset a {\n margin: 0 1.5rem;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import './ia-topnav-wayback-search.js';
3
+ import TrackedElement from './tracked-element.js';
4
+ import './ia-topnav-save-page-form.js';
5
+ import { IATopNavConfig, IATopNavLink } from './models.js';
6
+ export declare class WaybackSlider extends TrackedElement {
7
+ archiveItLinks: IATopNavLink[];
8
+ baseHost: string;
9
+ browserExtensionsLinks: IATopNavLink[];
10
+ config: IATopNavConfig;
11
+ mobileAppsLinks: IATopNavLink[];
12
+ render(): import("lit").TemplateResult<1>;
13
+ get mobileAppsItems(): import("lit").TemplateResult<1>[];
14
+ get browserExtensionsItems(): import("lit").TemplateResult<1>[];
15
+ get archiveItItems(): import("lit").TemplateResult<1>[];
16
+ private linkList;
17
+ analyticsEvent(title: string): string;
18
+ static get styles(): CSSResultGroup;
19
+ }
20
+ //# sourceMappingURL=ia-topnav-wayback-slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-wayback-slider.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-wayback-slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAChD,OAAO,4BAA4B,CAAC;AACpC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,4BAA4B,CAAC;AAIpC,OAAO,EACL,cAAc,EACd,YAAY,EAEb,MAAM,UAAU,CAAC;AAMlB,qBAEa,aAAc,SAAQ,cAAc;IACpB,cAAc,EAAE,YAAY,EAAE,CAAM;IACnC,QAAQ,SAAM;IACf,sBAAsB,EAAE,YAAY,EAAE,CAAM;IAC3C,MAAM,EAAE,cAAc,CAAuB;IAC9C,eAAe,EAAE,YAAY,EAAE,CAAM;IAEhE,MAAM;IA+BN,IAAI,eAAe,sCAElB;IAED,IAAI,sBAAsB,sCAEzB;IAED,IAAI,cAAc,sCAEjB;IAED,OAAO,CAAC,QAAQ;IAkBhB,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,MAAM,KAAK,MAAM,IAAI,cAAc,CAgClC;CACF"}
@@ -0,0 +1,131 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html } from 'lit';
3
+ import './ia-topnav-wayback-search.js';
4
+ import TrackedElement from './tracked-element.js';
5
+ import './ia-topnav-save-page-form.js';
6
+ import { formatUrl, toSentenceCase } from './lib/helpers.js';
7
+ import { property } from 'lit/decorators.js';
8
+ import { customElement } from '../../util/custom-element.js';
9
+ import { TOPNAV_MOBILE_BREAKPOINT, } from './models.js';
10
+ import { defaultTopNavConfig } from './data/menus.js';
11
+ import { subnavListCSS } from './subnav-list-styles.js';
12
+ import themeStyles from '../../themes/theme-styles.js';
13
+ import { localized, msg } from '@lit/localize';
14
+ let WaybackSlider = class WaybackSlider extends TrackedElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.archiveItLinks = [];
18
+ this.baseHost = '';
19
+ this.browserExtensionsLinks = [];
20
+ this.config = defaultTopNavConfig;
21
+ this.mobileAppsLinks = [];
22
+ }
23
+ render() {
24
+ return html `
25
+ <div class="grid">
26
+ <ia-topnav-wayback-search
27
+ .waybackPagesArchived=${this.config.waybackPagesArchived ?? ''}
28
+ ></ia-topnav-wayback-search>
29
+ <div class="link-lists">
30
+ <div>
31
+ <h4>${msg('Mobile Apps')}</h4>
32
+ <ul class="mobile-apps">
33
+ ${this.mobileAppsItems}
34
+ </ul>
35
+ <h4>${msg('Browser Extensions')}</h4>
36
+ <ul class="browser-extensions">
37
+ ${this.browserExtensionsItems}
38
+ </ul>
39
+ </div>
40
+ <div>
41
+ <h4>${msg('Archive-It Subscription')}</h4>
42
+ <ul class="archive-it">
43
+ ${this.archiveItItems}
44
+ </ul>
45
+ </div>
46
+ </div>
47
+ <ia-topnav-save-page-form
48
+ .config=${this.config}
49
+ ></ia-topnav-save-page-form>
50
+ </div>
51
+ `;
52
+ }
53
+ get mobileAppsItems() {
54
+ return this.linkList(this.mobileAppsLinks, 'Wayback');
55
+ }
56
+ get browserExtensionsItems() {
57
+ return this.linkList(this.browserExtensionsLinks, 'Wayback');
58
+ }
59
+ get archiveItItems() {
60
+ return this.linkList(this.archiveItLinks, 'ArchiveIt');
61
+ }
62
+ linkList(links, eventPrefix) {
63
+ return links.map((link) => html `<li>
64
+ <a
65
+ .href=${formatUrl(link.url, this.baseHost)}
66
+ @click=${this.trackClick}
67
+ data-event-click-tracking="${this.analyticsEvent(`${eventPrefix}${link.title}`)}"
68
+ target=${link.external ? '_blank' : ''}
69
+ rel=${link.external ? 'noreferrer noopener' : ''}
70
+ >${link.title}</a
71
+ >
72
+ </li>`);
73
+ }
74
+ analyticsEvent(title) {
75
+ return `${this.config?.eventCategory}|${toSentenceCase(title)}`;
76
+ }
77
+ static get styles() {
78
+ return [
79
+ themeStyles,
80
+ subnavListCSS,
81
+ css `
82
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
83
+ :host {
84
+ display: block;
85
+ grid-column: 1 / 4;
86
+ padding: 0 1.5rem;
87
+ }
88
+
89
+ h4 {
90
+ margin-top: 0;
91
+ font: normal 100 1.6rem var(--themeFontFamily);
92
+ }
93
+
94
+ .grid {
95
+ display: grid;
96
+ grid-template-columns: minmax(auto, 260px) 1fr minmax(auto, 260px);
97
+ /* Possible for 890 - 935: minmax(auto, 260px) 1fr minmax(auto, 260px) */
98
+ grid-column-gap: 2.5rem;
99
+ }
100
+
101
+ .link-lists {
102
+ display: grid;
103
+ grid-template-columns: calc(50% - 1.25rem) calc(50% - 1.25rem);
104
+ grid-column-gap: 2.5rem;
105
+ }
106
+ }
107
+ `,
108
+ ];
109
+ }
110
+ };
111
+ __decorate([
112
+ property({ type: Array })
113
+ ], WaybackSlider.prototype, "archiveItLinks", void 0);
114
+ __decorate([
115
+ property({ type: String })
116
+ ], WaybackSlider.prototype, "baseHost", void 0);
117
+ __decorate([
118
+ property({ type: Array })
119
+ ], WaybackSlider.prototype, "browserExtensionsLinks", void 0);
120
+ __decorate([
121
+ property({ type: Object })
122
+ ], WaybackSlider.prototype, "config", void 0);
123
+ __decorate([
124
+ property({ type: Array })
125
+ ], WaybackSlider.prototype, "mobileAppsLinks", void 0);
126
+ WaybackSlider = __decorate([
127
+ customElement('ia-topnav-wayback-slider'),
128
+ localized()
129
+ ], WaybackSlider);
130
+ export { WaybackSlider };
131
+ //# sourceMappingURL=ia-topnav-wayback-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-wayback-slider.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-wayback-slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, css, html } from 'lit';\nimport './ia-topnav-wayback-search';\nimport TrackedElement from './tracked-element';\nimport './ia-topnav-save-page-form';\nimport { formatUrl, toSentenceCase } from './lib/helpers';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport {\n IATopNavConfig,\n IATopNavLink,\n TOPNAV_MOBILE_BREAKPOINT,\n} from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport { subnavListCSS } from './subnav-list-styles';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg } from '@lit/localize';\n\n@customElement('ia-topnav-wayback-slider')\n@localized()\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 render() {\n return html`\n <div class=\"grid\">\n <ia-topnav-wayback-search\n .waybackPagesArchived=${this.config.waybackPagesArchived ?? ''}\n ></ia-topnav-wayback-search>\n <div class=\"link-lists\">\n <div>\n <h4>${msg('Mobile Apps')}</h4>\n <ul class=\"mobile-apps\">\n ${this.mobileAppsItems}\n </ul>\n <h4>${msg('Browser Extensions')}</h4>\n <ul class=\"browser-extensions\">\n ${this.browserExtensionsItems}\n </ul>\n </div>\n <div>\n <h4>${msg('Archive-It Subscription')}</h4>\n <ul class=\"archive-it\">\n ${this.archiveItItems}\n </ul>\n </div>\n </div>\n <ia-topnav-save-page-form\n .config=${this.config}\n ></ia-topnav-save-page-form>\n </div>\n `;\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 static get styles(): CSSResultGroup {\n return [\n themeStyles,\n subnavListCSS,\n css`\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n :host {\n display: block;\n grid-column: 1 / 4;\n padding: 0 1.5rem;\n }\n\n h4 {\n margin-top: 0;\n font: normal 100 1.6rem var(--themeFontFamily);\n }\n\n .grid {\n display: grid;\n grid-template-columns: minmax(auto, 260px) 1fr minmax(auto, 260px);\n /* Possible for 890 - 935: minmax(auto, 260px) 1fr minmax(auto, 260px) */\n grid-column-gap: 2.5rem;\n }\n\n .link-lists {\n display: grid;\n grid-template-columns: calc(50% - 1.25rem) calc(50% - 1.25rem);\n grid-column-gap: 2.5rem;\n }\n }\n `,\n ];\n }\n}\n"]}