@internetarchive/elements 1.1.4-webdev-9274.0 → 1.1.6

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 (255) hide show
  1. package/README.md +33 -0
  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 +3 -2
  7. package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
  8. package/dist/src/elements/ia-donation-form/currency-validator.d.ts +16 -0
  9. package/dist/src/elements/ia-donation-form/currency-validator.d.ts.map +1 -0
  10. package/dist/src/elements/ia-donation-form/currency-validator.js +37 -0
  11. package/dist/src/elements/ia-donation-form/currency-validator.js.map +1 -0
  12. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts +21 -0
  13. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts.map +1 -0
  14. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js +182 -0
  15. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js.map +1 -0
  16. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts +34 -0
  17. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts.map +1 -0
  18. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js +54 -0
  19. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js.map +1 -0
  20. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts +62 -0
  21. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts.map +1 -0
  22. package/dist/src/elements/ia-donation-form/models/donation-request.js +35 -0
  23. package/dist/src/elements/ia-donation-form/models/donation-request.js.map +1 -0
  24. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts +67 -0
  25. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts.map +1 -0
  26. package/dist/src/elements/ia-donation-form/models/donation-response.js +57 -0
  27. package/dist/src/elements/ia-donation-form/models/donation-response.js.map +1 -0
  28. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts +8 -0
  29. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts.map +1 -0
  30. package/dist/src/elements/ia-donation-form/models/donation-type.js +7 -0
  31. package/dist/src/elements/ia-donation-form/models/donation-type.js.map +1 -0
  32. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts +38 -0
  33. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts.map +1 -0
  34. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js +27 -0
  35. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js.map +1 -0
  36. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts +10 -0
  37. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts.map +1 -0
  38. package/dist/src/elements/ia-donation-form/models/payment-provider.js +9 -0
  39. package/dist/src/elements/ia-donation-form/models/payment-provider.js.map +1 -0
  40. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +2 -2
  41. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
  42. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +4 -5
  43. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
  44. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
  45. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
  46. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +5 -8
  47. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
  48. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
  49. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +3 -2
  50. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
  51. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
  52. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +3 -2
  53. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
  54. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
  55. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +3 -2
  56. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
  57. package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
  58. package/dist/src/elements/ia-otp-form/ia-otp-form.js +3 -2
  59. package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
  60. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
  61. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +3 -2
  62. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
  63. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  64. package/dist/src/elements/ia-radio-player/ia-radio-player.js +3 -2
  65. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  66. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
  67. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +3 -2
  68. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
  69. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
  70. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
  71. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +4 -5
  72. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
  73. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
  74. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
  75. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +7 -12
  76. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
  77. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
  78. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
  79. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
  80. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
  81. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
  82. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
  83. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
  84. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
  85. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
  86. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
  87. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
  88. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
  89. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
  90. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
  91. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
  92. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
  93. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
  94. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
  95. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
  96. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
  97. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
  98. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
  99. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
  100. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
  101. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
  102. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
  103. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
  104. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
  105. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
  106. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
  107. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
  108. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
  109. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
  110. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
  111. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
  112. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
  113. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
  114. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
  115. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
  116. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
  117. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
  118. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
  119. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
  120. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
  121. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
  122. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
  123. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
  124. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
  125. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
  126. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
  127. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
  128. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
  129. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
  130. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
  131. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
  132. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
  133. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
  134. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
  135. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
  136. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
  137. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
  138. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
  139. package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
  140. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
  141. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
  142. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
  143. package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
  144. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
  145. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
  146. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
  147. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
  148. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
  149. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
  150. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
  151. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
  152. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
  153. package/dist/src/elements/ia-topnav/data/menus.d.ts +14 -0
  154. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
  155. package/dist/src/elements/ia-topnav/data/menus.js +675 -0
  156. package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
  157. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
  158. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
  159. package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
  160. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
  161. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
  162. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
  163. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
  164. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
  165. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
  166. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
  167. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
  168. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
  169. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
  170. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
  171. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
  172. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
  173. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
  174. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
  175. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +307 -0
  176. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
  177. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
  178. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
  179. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
  180. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
  181. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
  182. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
  183. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
  184. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
  185. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
  186. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
  187. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
  188. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
  189. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
  190. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
  191. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
  192. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
  193. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
  194. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
  195. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
  196. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
  197. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
  198. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
  199. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
  200. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
  201. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
  202. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
  203. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
  204. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
  205. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
  206. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
  207. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
  208. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
  209. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
  210. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
  211. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
  212. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
  213. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
  214. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
  215. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
  216. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
  217. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +91 -0
  218. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
  219. package/dist/src/elements/ia-topnav/ia-topnav.js +445 -0
  220. package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
  221. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
  222. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
  223. package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
  224. package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
  225. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
  226. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
  227. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
  228. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
  229. package/dist/src/elements/ia-topnav/models.d.ts +59 -0
  230. package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
  231. package/dist/src/elements/ia-topnav/models.js +10 -0
  232. package/dist/src/elements/ia-topnav/models.js.map +1 -0
  233. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
  234. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
  235. package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
  236. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
  237. package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
  238. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
  239. package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
  240. package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
  241. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
  242. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +4 -0
  243. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
  244. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
  245. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +3 -2
  246. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
  247. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
  248. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
  249. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
  250. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
  251. package/dist/src/locales/es.d.ts +40 -0
  252. package/dist/src/locales/es.d.ts.map +1 -0
  253. package/dist/src/locales/es.js +45 -0
  254. package/dist/src/locales/es.js.map +1 -0
  255. package/package.json +25 -3
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, html, LitElement, } from 'lit';
3
3
  import { property, state } from 'lit/decorators.js';
4
4
  import { customElement } from '../../util/custom-element.js';
5
- import { msg } from '@lit/localize';
5
+ import { localized, msg } from '@lit/localize';
6
6
  import { SectionMarkerMode } from './models.js';
7
7
  import './ia-section-marker.js';
8
8
  /**
@@ -48,8 +48,6 @@ let IAScrubberBar = class IAScrubberBar extends LitElement {
48
48
  this.sectionMarkerPercentages = [];
49
49
  /** Whether the markers either side of the playhead point towards it */
50
50
  this.expandSectionMarkers = false;
51
- /** The accessible name for the slider */
52
- this.label = msg('Playback position');
53
51
  /**
54
52
  * The position actually shown.
55
53
  *
@@ -86,7 +84,7 @@ let IAScrubberBar = class IAScrubberBar extends LitElement {
86
84
  <input
87
85
  id="slider"
88
86
  type="range"
89
- aria-label=${this.label}
87
+ aria-label=${this.label ?? msg('Playback position')}
90
88
  min=${this.min}
91
89
  max=${this.max}
92
90
  step=${this.step}
@@ -382,7 +380,8 @@ __decorate([
382
380
  state()
383
381
  ], IAScrubberBar.prototype, "currentValue", void 0);
384
382
  IAScrubberBar = __decorate([
385
- customElement('ia-scrubber-bar')
383
+ customElement('ia-scrubber-bar'),
384
+ localized()
386
385
  ], IAScrubberBar);
387
386
  export { IAScrubberBar };
388
387
  //# sourceMappingURL=ia-scrubber-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ia-scrubber-bar.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg } from '@lit/localize';\n\nimport { SectionMarkerMode } from './models';\n\nimport './ia-section-marker';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n ValueChange: 'valuechange',\n UserInteractionStarted: 'userInteractionStarted',\n UserInteractionEnded: 'userInteractionEnded',\n};\n\n/**\n * The keys that move a range input.\n *\n * Only these count as scrubbing. Tab in particular must not, since it takes\n * focus away and its keyup lands on whatever it moved to, never here.\n */\nconst VALUE_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * The section boundaries either side of the playhead.\n *\n * `undefined` where there is no boundary on that side, which is the case at\n * the very start and the very end of the track.\n */\ninterface SurroundingMarkers {\n lower?: number;\n upper?: number;\n}\n\n/**\n * A range slider styled as a playback scrubber, with optional section markers\n * laid over the track.\n */\n@customElement('ia-scrubber-bar')\nexport class IAScrubberBar extends LitElement {\n /** The current position along the track */\n @property({ type: Number }) value = 0;\n\n /** The lowest position the scrubber can reach */\n @property({ type: Number }) min = 0;\n\n /** The highest position the scrubber can reach */\n @property({ type: Number }) max = 100;\n\n /** How finely the scrubber can be moved */\n @property({ type: Number }) step = 0.1;\n\n /** Where to draw section boundaries, as percentages of the track */\n @property({ type: Array }) sectionMarkerPercentages: number[] = [];\n\n /** Whether the markers either side of the playhead point towards it */\n @property({ type: Boolean }) expandSectionMarkers = false;\n\n /** The accessible name for the slider */\n @property({ type: String }) label = msg('Playback position');\n\n /**\n * The position actually shown.\n *\n * `value` is driven from outside by whatever is playing the audio, but while\n * the listener is scrubbing their position wins. Keeping the two apart is\n * what stops playback updates fighting the drag.\n */\n @state() private currentValue = 0;\n\n private userIsInteracting = false;\n\n /** How far along the track the playhead is, as a percentage */\n get percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n\n return ((this.currentValue - this.min) / range) * 100;\n }\n\n render(): TemplateResult {\n const surrounding = this.surroundingMarkers;\n\n return html`\n <div class=\"container\" style=\"--fill-percent--: ${this.percentage}%\">\n <div class=\"color-fill\"></div>\n\n <div class=\"marker-container\">\n ${this.sectionMarkerPercentages.map(\n (markerPercent) => html`\n <ia-section-marker\n data-location=${markerPercent}\n style=\"left: ${markerPercent}%\"\n .markerMode=${this.markerModeFor(markerPercent, surrounding)}\n ></ia-section-marker>\n `,\n )}\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n aria-label=${this.label}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n .value=${String(this.currentValue)}\n @mousedown=${this.interactionStarted}\n @mouseup=${this.interactionEnded}\n @touchstart=${this.interactionStarted}\n @touchend=${this.interactionEnded}\n @touchcancel=${this.interactionEnded}\n @keydown=${this.handleKeyDown}\n @keyup=${this.handleKeyUp}\n @blur=${this.handleBlur}\n @input=${this.handleSlide}\n @change=${this.handleSlide}\n />\n </div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (this.userIsInteracting || !changedProperties.has('value')) return;\n\n this.currentValue = this.value;\n }\n\n /**\n * The section boundaries immediately below and above the playhead.\n *\n * Returns nothing when the markers aren't meant to react to the playhead, so\n * every marker falls back to its resting state.\n */\n private get surroundingMarkers(): SurroundingMarkers {\n if (!this.expandSectionMarkers) return {};\n\n const sorted = this.sortedMarkers;\n\n return {\n lower: sorted.filter((percent) => percent <= this.currentValue).pop(),\n upper: sorted.find((percent) => percent > this.currentValue),\n };\n }\n\n /**\n * The marker percentages in ascending numeric order.\n *\n * Sorted on a copy with an explicit comparator: the default `sort()` orders\n * lexicographically, which puts 100 before 9, and it sorts in place, which\n * would reorder the caller's own array.\n */\n private get sortedMarkers(): number[] {\n return [...this.sectionMarkerPercentages].sort((a, b) => a - b);\n }\n\n private markerModeFor(\n markerPercent: number,\n surrounding: SurroundingMarkers,\n ): SectionMarkerMode {\n if (markerPercent === surrounding.upper) return SectionMarkerMode.left;\n if (markerPercent === surrounding.lower) return SectionMarkerMode.right;\n\n return SectionMarkerMode.neither;\n }\n\n private handleSlide(e: Event): void {\n this.currentValue = parseFloat((e.target as HTMLInputElement).value);\n\n this.dispatchEvent(\n new CustomEvent<{ value: number }>(Events.ValueChange, {\n detail: { value: this.currentValue },\n }),\n );\n }\n\n private interactionStarted(): void {\n this.userIsInteracting = true;\n this.dispatchEvent(new Event(Events.UserInteractionStarted));\n }\n\n /**\n * Starts an interaction when the slider is scrubbed from the keyboard.\n *\n * Without this, arrowing along the bar sets the value but leaves\n * `userIsInteracting` false, so the next playback tick snaps the thumb back\n * to the playhead mid-scrub.\n *\n * Guarded against the auto-repeat that holding a key produces, which would\n * otherwise emit a fresh `userInteractionStarted` on every repeat.\n */\n private handleKeyDown(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key) || this.userIsInteracting) return;\n\n this.interactionStarted();\n }\n\n private handleKeyUp(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key)) return;\n\n this.interactionEnded();\n }\n\n /**\n * Releases an interaction that focus left behind.\n *\n * A keyup can go missing, e.g. focus moves while the key is still down, and\n * an interaction left latched on would ignore playback updates for good.\n */\n private handleBlur(): void {\n if (!this.userIsInteracting) return;\n\n this.interactionEnded();\n }\n\n /**\n * Ends the interaction.\n *\n * Bound to `touchcancel` as well as `touchend`, because a touch the system\n * takes over never delivers `touchend`, and an interaction left latched on\n * would ignore playback updates from then on.\n */\n private interactionEnded(): void {\n this.userIsInteracting = false;\n this.dispatchEvent(new Event(Events.UserInteractionEnded));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --scrubber-bar-height--: var(--ia-theme-scrubber-bar-height, 20px);\n --scrubber-marker-inset--: var(--ia-theme-scrubber-marker-inset, 10px);\n\n --scrubber-thumb-color--: var(--ia-theme-scrubber-thumb-color, #fff);\n --scrubber-thumb-diameter--: var(\n --ia-theme-scrubber-thumb-diameter,\n 20px\n );\n --scrubber-thumb-border--: var(\n --ia-theme-scrubber-thumb-border,\n 1px solid #000\n );\n --scrubber-thumb-border-radius--: var(\n --ia-theme-scrubber-thumb-border-radius,\n 50%\n );\n /*\n Centres the thumb on the track. The thumb is content-box, so its\n border adds 1px above and below the diameter, hence the extra -1px.\n Comes out at -6px for the default track and thumb sizes.\n */\n --scrubber-thumb-top-margin--: var(\n --ia-theme-scrubber-thumb-top-margin,\n calc(\n (\n var(--scrubber-track-height--) - var(\n --scrubber-thumb-diameter--\n )\n ) /\n 2 - 1px\n )\n );\n\n --scrubber-track-height--: var(--ia-theme-scrubber-track-height, 10px);\n --scrubber-track-border--: var(\n --ia-theme-scrubber-track-border,\n 1px solid #fff\n );\n --scrubber-track-border-radius--: var(\n --ia-theme-scrubber-track-border-radius,\n 5px\n );\n --scrubber-track-color--: var(\n --ia-theme-scrubber-track-color,\n rgba(0, 0, 0, 0.1)\n );\n --scrubber-track-fill-color--: var(\n --ia-theme-scrubber-track-fill-color,\n #3272b6\n );\n\n /*\n How far off the bottom the track sits. The fill and the section\n markers both line up against this, so they follow the track when its\n height is themed. Comes out at 7px for the default sizes.\n */\n --scrubber-track-offset--: calc(\n (var(--scrubber-bar-height--) - var(--scrubber-track-height--)) / 2 +\n 2px\n );\n }\n\n .container {\n position: relative;\n height: var(--scrubber-bar-height--);\n }\n\n /*\n The fill is a plain element rather than a track pseudo-element, so the\n played portion is just a hard gradient stop driven by a custom property.\n */\n .color-fill {\n height: var(--scrubber-track-height--);\n border-radius: 1em;\n position: absolute;\n bottom: var(--scrubber-track-offset--);\n left: 2px;\n right: -2px;\n background: linear-gradient(\n to right,\n var(--scrubber-track-fill-color--) 0%,\n var(--scrubber-track-fill-color--) var(--fill-percent--),\n var(--scrubber-track-color--) var(--fill-percent--),\n var(--scrubber-track-color--) 100%\n );\n }\n\n .marker-container {\n position: absolute;\n left: var(--scrubber-marker-inset--);\n right: var(--scrubber-marker-inset--);\n height: 100%;\n }\n\n ia-section-marker {\n position: absolute;\n width: 2rem;\n height: var(--scrubber-track-height--);\n bottom: var(--scrubber-track-offset--);\n /*\n The left offset puts the marker where it belongs, but the divider runs\n down the middle of the marker, so it shifts back by half its own width\n to line the divider up with that point.\n */\n transform: translateX(-50%);\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n appearance: none;\n height: var(--scrubber-bar-height--);\n padding: 0;\n width: 100%;\n background: none;\n outline: none;\n position: absolute;\n bottom: 0;\n }\n\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n box-sizing: content-box;\n margin-top: var(--scrubber-thumb-top-margin--);\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-moz-range-thumb {\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-webkit-slider-runnable-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-progress {\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ia-scrubber-bar.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg } from '@lit/localize';\n\nimport { SectionMarkerMode } from './models';\n\nimport './ia-section-marker';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n ValueChange: 'valuechange',\n UserInteractionStarted: 'userInteractionStarted',\n UserInteractionEnded: 'userInteractionEnded',\n};\n\n/**\n * The keys that move a range input.\n *\n * Only these count as scrubbing. Tab in particular must not, since it takes\n * focus away and its keyup lands on whatever it moved to, never here.\n */\nconst VALUE_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * The section boundaries either side of the playhead.\n *\n * `undefined` where there is no boundary on that side, which is the case at\n * the very start and the very end of the track.\n */\ninterface SurroundingMarkers {\n lower?: number;\n upper?: number;\n}\n\n/**\n * A range slider styled as a playback scrubber, with optional section markers\n * laid over the track.\n */\n@customElement('ia-scrubber-bar')\n@localized()\nexport class IAScrubberBar extends LitElement {\n /** The current position along the track */\n @property({ type: Number }) value = 0;\n\n /** The lowest position the scrubber can reach */\n @property({ type: Number }) min = 0;\n\n /** The highest position the scrubber can reach */\n @property({ type: Number }) max = 100;\n\n /** How finely the scrubber can be moved */\n @property({ type: Number }) step = 0.1;\n\n /** Where to draw section boundaries, as percentages of the track */\n @property({ type: Array }) sectionMarkerPercentages: number[] = [];\n\n /** Whether the markers either side of the playhead point towards it */\n @property({ type: Boolean }) expandSectionMarkers = false;\n\n /** The accessible name for the slider. Defaults to \"Playback position\". */\n @property({ type: String }) label?: string;\n\n /**\n * The position actually shown.\n *\n * `value` is driven from outside by whatever is playing the audio, but while\n * the listener is scrubbing their position wins. Keeping the two apart is\n * what stops playback updates fighting the drag.\n */\n @state() private currentValue = 0;\n\n private userIsInteracting = false;\n\n /** How far along the track the playhead is, as a percentage */\n get percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n\n return ((this.currentValue - this.min) / range) * 100;\n }\n\n render(): TemplateResult {\n const surrounding = this.surroundingMarkers;\n\n return html`\n <div class=\"container\" style=\"--fill-percent--: ${this.percentage}%\">\n <div class=\"color-fill\"></div>\n\n <div class=\"marker-container\">\n ${this.sectionMarkerPercentages.map(\n (markerPercent) => html`\n <ia-section-marker\n data-location=${markerPercent}\n style=\"left: ${markerPercent}%\"\n .markerMode=${this.markerModeFor(markerPercent, surrounding)}\n ></ia-section-marker>\n `,\n )}\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n aria-label=${this.label ?? msg('Playback position')}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n .value=${String(this.currentValue)}\n @mousedown=${this.interactionStarted}\n @mouseup=${this.interactionEnded}\n @touchstart=${this.interactionStarted}\n @touchend=${this.interactionEnded}\n @touchcancel=${this.interactionEnded}\n @keydown=${this.handleKeyDown}\n @keyup=${this.handleKeyUp}\n @blur=${this.handleBlur}\n @input=${this.handleSlide}\n @change=${this.handleSlide}\n />\n </div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (this.userIsInteracting || !changedProperties.has('value')) return;\n\n this.currentValue = this.value;\n }\n\n /**\n * The section boundaries immediately below and above the playhead.\n *\n * Returns nothing when the markers aren't meant to react to the playhead, so\n * every marker falls back to its resting state.\n */\n private get surroundingMarkers(): SurroundingMarkers {\n if (!this.expandSectionMarkers) return {};\n\n const sorted = this.sortedMarkers;\n\n return {\n lower: sorted.filter((percent) => percent <= this.currentValue).pop(),\n upper: sorted.find((percent) => percent > this.currentValue),\n };\n }\n\n /**\n * The marker percentages in ascending numeric order.\n *\n * Sorted on a copy with an explicit comparator: the default `sort()` orders\n * lexicographically, which puts 100 before 9, and it sorts in place, which\n * would reorder the caller's own array.\n */\n private get sortedMarkers(): number[] {\n return [...this.sectionMarkerPercentages].sort((a, b) => a - b);\n }\n\n private markerModeFor(\n markerPercent: number,\n surrounding: SurroundingMarkers,\n ): SectionMarkerMode {\n if (markerPercent === surrounding.upper) return SectionMarkerMode.left;\n if (markerPercent === surrounding.lower) return SectionMarkerMode.right;\n\n return SectionMarkerMode.neither;\n }\n\n private handleSlide(e: Event): void {\n this.currentValue = parseFloat((e.target as HTMLInputElement).value);\n\n this.dispatchEvent(\n new CustomEvent<{ value: number }>(Events.ValueChange, {\n detail: { value: this.currentValue },\n }),\n );\n }\n\n private interactionStarted(): void {\n this.userIsInteracting = true;\n this.dispatchEvent(new Event(Events.UserInteractionStarted));\n }\n\n /**\n * Starts an interaction when the slider is scrubbed from the keyboard.\n *\n * Without this, arrowing along the bar sets the value but leaves\n * `userIsInteracting` false, so the next playback tick snaps the thumb back\n * to the playhead mid-scrub.\n *\n * Guarded against the auto-repeat that holding a key produces, which would\n * otherwise emit a fresh `userInteractionStarted` on every repeat.\n */\n private handleKeyDown(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key) || this.userIsInteracting) return;\n\n this.interactionStarted();\n }\n\n private handleKeyUp(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key)) return;\n\n this.interactionEnded();\n }\n\n /**\n * Releases an interaction that focus left behind.\n *\n * A keyup can go missing, e.g. focus moves while the key is still down, and\n * an interaction left latched on would ignore playback updates for good.\n */\n private handleBlur(): void {\n if (!this.userIsInteracting) return;\n\n this.interactionEnded();\n }\n\n /**\n * Ends the interaction.\n *\n * Bound to `touchcancel` as well as `touchend`, because a touch the system\n * takes over never delivers `touchend`, and an interaction left latched on\n * would ignore playback updates from then on.\n */\n private interactionEnded(): void {\n this.userIsInteracting = false;\n this.dispatchEvent(new Event(Events.UserInteractionEnded));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --scrubber-bar-height--: var(--ia-theme-scrubber-bar-height, 20px);\n --scrubber-marker-inset--: var(--ia-theme-scrubber-marker-inset, 10px);\n\n --scrubber-thumb-color--: var(--ia-theme-scrubber-thumb-color, #fff);\n --scrubber-thumb-diameter--: var(\n --ia-theme-scrubber-thumb-diameter,\n 20px\n );\n --scrubber-thumb-border--: var(\n --ia-theme-scrubber-thumb-border,\n 1px solid #000\n );\n --scrubber-thumb-border-radius--: var(\n --ia-theme-scrubber-thumb-border-radius,\n 50%\n );\n /*\n Centres the thumb on the track. The thumb is content-box, so its\n border adds 1px above and below the diameter, hence the extra -1px.\n Comes out at -6px for the default track and thumb sizes.\n */\n --scrubber-thumb-top-margin--: var(\n --ia-theme-scrubber-thumb-top-margin,\n calc(\n (\n var(--scrubber-track-height--) - var(\n --scrubber-thumb-diameter--\n )\n ) /\n 2 - 1px\n )\n );\n\n --scrubber-track-height--: var(--ia-theme-scrubber-track-height, 10px);\n --scrubber-track-border--: var(\n --ia-theme-scrubber-track-border,\n 1px solid #fff\n );\n --scrubber-track-border-radius--: var(\n --ia-theme-scrubber-track-border-radius,\n 5px\n );\n --scrubber-track-color--: var(\n --ia-theme-scrubber-track-color,\n rgba(0, 0, 0, 0.1)\n );\n --scrubber-track-fill-color--: var(\n --ia-theme-scrubber-track-fill-color,\n #3272b6\n );\n\n /*\n How far off the bottom the track sits. The fill and the section\n markers both line up against this, so they follow the track when its\n height is themed. Comes out at 7px for the default sizes.\n */\n --scrubber-track-offset--: calc(\n (var(--scrubber-bar-height--) - var(--scrubber-track-height--)) / 2 +\n 2px\n );\n }\n\n .container {\n position: relative;\n height: var(--scrubber-bar-height--);\n }\n\n /*\n The fill is a plain element rather than a track pseudo-element, so the\n played portion is just a hard gradient stop driven by a custom property.\n */\n .color-fill {\n height: var(--scrubber-track-height--);\n border-radius: 1em;\n position: absolute;\n bottom: var(--scrubber-track-offset--);\n left: 2px;\n right: -2px;\n background: linear-gradient(\n to right,\n var(--scrubber-track-fill-color--) 0%,\n var(--scrubber-track-fill-color--) var(--fill-percent--),\n var(--scrubber-track-color--) var(--fill-percent--),\n var(--scrubber-track-color--) 100%\n );\n }\n\n .marker-container {\n position: absolute;\n left: var(--scrubber-marker-inset--);\n right: var(--scrubber-marker-inset--);\n height: 100%;\n }\n\n ia-section-marker {\n position: absolute;\n width: 2rem;\n height: var(--scrubber-track-height--);\n bottom: var(--scrubber-track-offset--);\n /*\n The left offset puts the marker where it belongs, but the divider runs\n down the middle of the marker, so it shifts back by half its own width\n to line the divider up with that point.\n */\n transform: translateX(-50%);\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n appearance: none;\n height: var(--scrubber-bar-height--);\n padding: 0;\n width: 100%;\n background: none;\n outline: none;\n position: absolute;\n bottom: 0;\n }\n\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n box-sizing: content-box;\n margin-top: var(--scrubber-thumb-top-margin--);\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-moz-range-thumb {\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-webkit-slider-runnable-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-progress {\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n `;\n }\n}\n"]}
@@ -16,9 +16,9 @@ export type MediaTypeIcon = 'audio' | 'collection' | 'etree' | 'images' | 'searc
16
16
  * 4. three animated dots (the default)
17
17
  */
18
18
  export declare class IAStatusIndicator extends LitElement {
19
- loadingTitle: string;
20
- successTitle: string;
21
- errorTitle: string;
19
+ loadingTitle?: string;
20
+ successTitle?: string;
21
+ errorTitle?: string;
22
22
  mode: LoadingStatus;
23
23
  mediatype?: MediaTypeIcon;
24
24
  hideDots: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ia-status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAEd,UAAU,EAEV,cAAc,EAGd,cAAc,EACf,MAAM,KAAK,CAAC;AAyBb,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,IAAI,GACJ,OAAO,GACP,KAAK,CAAC;AAeV;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAEnB,YAAY,SAAqB;IAGjC,YAAY,SAAkB;IAG9B,UAAU,SAAgB;IAG1B,IAAI,EAAE,aAAa,CAAa;IAGhC,SAAS,CAAC,EAAE,aAAa,CAAC;IAGzB,QAAQ,UAAS;IAGrC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,cAAc,CAAyC;IAG/D,OAAO,CAAC,WAAW,CAAS;IAGrC,OAAO,CAAC,WAAW,CAA2D;IAE9E,MAAM,IAAI,cAAc;IAYxB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAapB,UAAU,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI;IAmB9C,OAAO,CAAC,aAAa;IAUrB,YAAY,IAAI,IAAI;IAYpB,oBAAoB,IAAI,IAAI;IAS5B;;;OAGG;IACH,OAAO,KAAK,mBAAmB,GAE9B;IAED;;;;;OAKG;IACH,OAAO,KAAK,gBAAgB,GAG3B;IAED,6EAA6E;IAC7E,OAAO,KAAK,aAAa,GAExB;IAED;;;;;;OAMG;IACH,OAAO,KAAK,wBAAwB,GAYnC;IAED,oEAAoE;IACpE,OAAO,KAAK,aAAa,GA4BxB;IAED,8DAA8D;IAC9D,OAAO,KAAK,WAAW,GAoBtB;IAED;;;OAGG;IACH,OAAO,KAAK,qBAAqB,GAKhC;IAED,OAAO,CAAC,oBAAoB;IAK5B,wCAAwC;IACxC,OAAO,KAAK,wBAAwB,GAyBnC;IAED,gCAAgC;IAChC,OAAO,KAAK,sBAAsB,GAkBjC;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CAgKlC;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"ia-status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAEd,UAAU,EAEV,cAAc,EAGd,cAAc,EACf,MAAM,KAAK,CAAC;AAyBb,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,IAAI,GACJ,OAAO,GACP,KAAK,CAAC;AAeV;;;;;;;;GAQG;AACH,qBAEa,iBAAkB,SAAQ,UAAU;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,aAAa,CAAa;IAGhC,SAAS,CAAC,EAAE,aAAa,CAAC;IAGzB,QAAQ,UAAS;IAGrC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,cAAc,CAAyC;IAG/D,OAAO,CAAC,WAAW,CAAS;IAGrC,OAAO,CAAC,WAAW,CAA2D;IAE9E,MAAM,IAAI,cAAc;IAYxB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,YAAY;IAapB,UAAU,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI;IAmB9C,OAAO,CAAC,aAAa;IAUrB,YAAY,IAAI,IAAI;IAYpB,oBAAoB,IAAI,IAAI;IAS5B;;;OAGG;IACH,OAAO,KAAK,mBAAmB,GAE9B;IAED;;;;;OAKG;IACH,OAAO,KAAK,gBAAgB,GAG3B;IAED,6EAA6E;IAC7E,OAAO,KAAK,aAAa,GAExB;IAED;;;;;;OAMG;IACH,OAAO,KAAK,wBAAwB,GAYnC;IAED,oEAAoE;IACpE,OAAO,KAAK,aAAa,GA4BxB;IAED,8DAA8D;IAC9D,OAAO,KAAK,WAAW,GAoBtB;IAED;;;OAGG;IACH,OAAO,KAAK,qBAAqB,GAKhC;IAED,OAAO,CAAC,oBAAoB;IAK5B,wCAAwC;IACxC,OAAO,KAAK,wBAAwB,GAyBnC;IAED,gCAAgC;IAChC,OAAO,KAAK,sBAAsB,GAkBjC;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CAgKlC;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, unsafeCSS, html, LitElement, nothing, svg, } from 'lit';
3
3
  import { property, state } from 'lit/decorators.js';
4
4
  import { customElement } from '../../util/custom-element.js';
5
- import { msg } from '@lit/localize';
5
+ import { localized, msg } from '@lit/localize';
6
6
  import themeStyles from '../../themes/theme-styles.js';
7
7
  import { maskedIcon } from '../../util/masked-icon.js';
8
8
  import audioIcon from './icons/audio.svg';
@@ -43,12 +43,6 @@ const MEDIATYPE_ICONS = {
43
43
  let IAStatusIndicator = class IAStatusIndicator extends LitElement {
44
44
  constructor() {
45
45
  super(...arguments);
46
- /* An optional title to use for the loading state of the indicator. Will be used for screen readers. */
47
- this.loadingTitle = msg('Loading...');
48
- /* An optional title to use for the success state of the indicator. Will be used for screen readers. */
49
- this.successTitle = msg('Success');
50
- /* An optional title to use for the error state of the indicator. Will be used for screen readers. */
51
- this.errorTitle = msg('Error');
52
46
  /* The state of the indicator that should be shown */
53
47
  this.mode = 'loading';
54
48
  /* Renders a bare ring, with no dots in the middle. Ignored when a center icon is present. */
@@ -201,7 +195,7 @@ let IAStatusIndicator = class IAStatusIndicator extends LitElement {
201
195
  xmlns:xlink="http://www.w3.org/1999/xlink"
202
196
  role="status"
203
197
  >
204
- <title>${this.loadingTitle}</title>
198
+ <title>${this.loadingTitle ?? msg('Loading...')}</title>
205
199
  <g stroke="none" stroke-width="1" fill-rule="evenodd">
206
200
  <path
207
201
  class="loading-ring"
@@ -230,7 +224,7 @@ let IAStatusIndicator = class IAStatusIndicator extends LitElement {
230
224
  xmlns:xlink="http://www.w3.org/1999/xlink"
231
225
  role="status"
232
226
  >
233
- <title>${this.loadingTitle}</title>
227
+ <title>${this.loadingTitle ?? msg('Loading...')}</title>
234
228
  <g fill-rule="evenodd">
235
229
  <path
236
230
  class="loading-ring"
@@ -267,7 +261,7 @@ let IAStatusIndicator = class IAStatusIndicator extends LitElement {
267
261
  xmlns:xlink="http://www.w3.org/1999/xlink"
268
262
  role="status"
269
263
  >
270
- <title>${this.successTitle}</title>
264
+ <title>${this.successTitle ?? msg('Success')}</title>
271
265
  <g stroke="none" stroke-width="1" fill-rule="evenodd">
272
266
  <path
273
267
  class="success-icon"
@@ -294,7 +288,7 @@ let IAStatusIndicator = class IAStatusIndicator extends LitElement {
294
288
  xmlns:xlink="http://www.w3.org/1999/xlink"
295
289
  role="status"
296
290
  >
297
- <title>${this.errorTitle}</title>
291
+ <title>${this.errorTitle ?? msg('Error')}</title>
298
292
  <path
299
293
  class="error-icon"
300
294
  d="m56.4612493 8.80450354 41.8901185 75.94632926c1.7706782 2.8433173 2.1150372 5.2623412 1.0330766 7.2570716-1.0819604 1.9947304-3.26978 2.9920956-6.5634587 2.9920956h-85.69973905c-3.29367873 0-5.46954894-.9973652-6.52761065-2.9920956-1.0580617-1.9947304-.70175345-4.4137543 1.06892476-7.2570716l41.89011844-75.12308969c1.8184757-2.84331737 3.9693609-4.37738627 6.4526556-4.60220671s4.6341799 1.03483527 6.4526556 3.77896714zm28.5387507 75.19549646-35.037482-62-34.962518 62zm-31-34.7484359v-10.2515641h-8v10.2515641l2.089172 14.7484359h3.8184713zm-8 19.7484359v8h8v-8z"
@@ -492,7 +486,8 @@ __decorate([
492
486
  state()
493
487
  ], IAStatusIndicator.prototype, "_canAnimate", void 0);
494
488
  IAStatusIndicator = __decorate([
495
- customElement('ia-status-indicator')
489
+ customElement('ia-status-indicator'),
490
+ localized()
496
491
  ], IAStatusIndicator);
497
492
  export { IAStatusIndicator };
498
493
  //# sourceMappingURL=ia-status-indicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ia-status-indicator.js","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n unsafeCSS,\n CSSResultGroup,\n html,\n LitElement,\n nothing,\n PropertyValues,\n svg,\n SVGTemplateResult,\n TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg } from '@lit/localize';\n\nimport themeStyles from '@src/themes/theme-styles';\nimport { maskedIcon } from '@src/util/masked-icon';\n\nimport audioIcon from './icons/audio.svg';\nimport collectionIcon from './icons/collection.svg';\nimport etreeIcon from './icons/etree.svg';\nimport imagesIcon from './icons/images.svg';\nimport searchIcon from './icons/search.svg';\nimport softwareIcon from './icons/software.svg';\nimport textsIcon from './icons/texts.svg';\nimport tvIcon from './icons/tv.svg';\nimport videoIcon from './icons/video.svg';\nimport webIcon from './icons/web.svg';\n\n/** How long a mode change takes to fade. Drives both the CSS and the timer. */\nconst FADE_DURATION_MS = 250;\n\n/** One layer per mode, always rendered in this order. See render(). */\nconst LAYER_ORDER: LoadingStatus[] = ['ready', 'loading', 'success', 'error'];\n\nexport type LoadingStatus = 'ready' | 'loading' | 'success' | 'error';\n\n/**\n * The mediatype glyphs this element ships. These are *icon* names, which do not\n * map one-to-one onto archive.org mediatype values — a consumer holding a\n * `MediaType` translates at its own call site (e.g. `movies` -> `video`).\n */\nexport type MediaTypeIcon =\n | 'audio'\n | 'collection'\n | 'etree'\n | 'images'\n | 'search'\n | 'software'\n | 'texts'\n | 'tv'\n | 'video'\n | 'web';\n\nconst MEDIATYPE_ICONS: Record<MediaTypeIcon, string> = {\n audio: audioIcon,\n collection: collectionIcon,\n etree: etreeIcon,\n images: imagesIcon,\n search: searchIcon,\n software: softwareIcon,\n texts: textsIcon,\n tv: tvIcon,\n video: videoIcon,\n web: webIcon,\n};\n\n/**\n * Renders an SVG indicator, which defaults to an animated circular indicator.\n *\n * In `loading` mode the middle of the ring resolves in this order:\n * 1. slotted `icon` content\n * 2. the `mediatype` glyph\n * 3. nothing, when `hideDots` is set\n * 4. three animated dots (the default)\n */\n@customElement('ia-status-indicator')\nexport class IAStatusIndicator extends LitElement {\n /* An optional title to use for the loading state of the indicator. Will be used for screen readers. */\n @property({ type: String }) loadingTitle = msg('Loading...');\n\n /* An optional title to use for the success state of the indicator. Will be used for screen readers. */\n @property({ type: String }) successTitle = msg('Success');\n\n /* An optional title to use for the error state of the indicator. Will be used for screen readers. */\n @property({ type: String }) errorTitle = msg('Error');\n\n /* The state of the indicator that should be shown */\n @property({ type: String }) mode: LoadingStatus = 'loading';\n\n /* An optional mediatype glyph to render in the middle of the loading ring */\n @property({ type: String }) mediatype?: MediaTypeIcon;\n\n /* Renders a bare ring, with no dots in the middle. Ignored when a center icon is present. */\n @property({ type: Boolean }) hideDots = false;\n\n /* Whether a consumer has slotted their own center icon */\n @state() private hasSlottedIcon = false;\n\n /* The modes still fading out after a change. More than one when changes overlap. */\n @state() private _outgoingModes: ReadonlySet<LoadingStatus> = new Set();\n\n /* Set once the first render is done, so the element doesn't fade in on mount */\n @state() private _canAnimate = false;\n\n /* One per outgoing mode, clearing it once its own fade is over */\n private _fadeTimers = new Map<LoadingStatus, ReturnType<typeof setTimeout>>();\n\n render(): TemplateResult {\n // Every mode has its own layer element that never moves, whatever order\n // the changes come in. Moving an element cancels the transition it's in\n // the middle of, so a layer partway through a fade would snap to its end\n // value. A layer only has content while it's on screen.\n return html`\n <div class=\"layers ${this._canAnimate ? 'animate' : ''}\">\n ${LAYER_ORDER.map((mode) => this.layerTemplate(mode))}\n </div>\n `;\n }\n\n /**\n * One mode's artwork, stacked in the same cell as the other layers so that\n * a mode change fades between them. At rest only the active layer has\n * content; an outgoing one is emptied as soon as its fade is over, so the\n * shadow tree holds a single mode's markup and a single `<title>`.\n */\n private layerTemplate(mode: LoadingStatus): TemplateResult {\n // `mode` is a public string attribute, so a consumer can hand us anything.\n // An unrecognised one matches no layer and draws nothing.\n const isActive = mode === this.mode;\n const isOutgoing = !isActive && this._outgoingModes.has(mode);\n const state = isActive ? 'active' : isOutgoing ? 'outgoing' : '';\n\n return html`<div\n class=\"layer ${state}\"\n aria-hidden=${isActive ? nothing : 'true'}\n >\n ${isActive || isOutgoing ? this.modeTemplate(mode) : nothing}\n </div>`;\n }\n\n private modeTemplate(mode: LoadingStatus): TemplateResult {\n switch (mode) {\n case 'ready':\n return this.placeholderTemplate;\n case 'loading':\n return this.loadingIndicatorTemplate;\n case 'success':\n return this.successIndicatorTemplate;\n case 'error':\n return this.errorIndicatorTemplate;\n }\n }\n\n willUpdate(changedProps: PropertyValues): void {\n if (!changedProps.has('mode')) return;\n // Hold on to the mode we're leaving so both can be on screen together for\n // the length of the fade.\n const previous = changedProps.get('mode') as LoadingStatus | undefined;\n if (previous === undefined || previous === this.mode) return;\n\n // The mode coming back in may still be fading out from an earlier change.\n // Its layer just turns around, so it's no longer outgoing.\n this.stopFadingOut(this.mode);\n\n this._outgoingModes = new Set(this._outgoingModes).add(previous);\n clearTimeout(this._fadeTimers.get(previous));\n this._fadeTimers.set(\n previous,\n setTimeout(() => this.stopFadingOut(previous), FADE_DURATION_MS),\n );\n }\n\n private stopFadingOut(mode: LoadingStatus): void {\n clearTimeout(this._fadeTimers.get(mode));\n this._fadeTimers.delete(mode);\n if (!this._outgoingModes.has(mode)) return;\n\n const outgoing = new Set(this._outgoingModes);\n outgoing.delete(mode);\n this._outgoingModes = outgoing;\n }\n\n firstUpdated(): void {\n // Fading applies to mode changes, not to the element appearing. Waiting a\n // frame is what makes that true: enabling it inline would put the\n // transition in the element's very first computed style, and it would\n // fade up from nothing on mount.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this._canAnimate = true;\n });\n });\n }\n\n disconnectedCallback(): void {\n this._fadeTimers.forEach((timer) => clearTimeout(timer));\n this._fadeTimers.clear();\n // Nothing reschedules these timers, so leaving the modes set would strand\n // the outgoing layers on reconnect.\n this._outgoingModes = new Set();\n super.disconnectedCallback();\n }\n\n /**\n * The `ready` state: reserves the indicator's space without drawing, so a\n * consumer's layout doesn't shift once the indicator appears.\n */\n private get placeholderTemplate(): TemplateResult {\n return html`<div class=\"placeholder\"></div>`;\n }\n\n /**\n * The asset URL for the current mediatype, if it maps to a glyph we ship.\n *\n * Unmapped values (e.g. archive.org's `account` or `data`) resolve to\n * undefined and degrade to the default dots rather than a broken mask.\n */\n private get mediatypeIconUrl(): string | undefined {\n if (!this.mediatype) return undefined;\n return MEDIATYPE_ICONS[this.mediatype];\n }\n\n /** Whether the middle of the ring is occupied by a glyph rather than dots */\n private get hasCenterIcon(): boolean {\n return this.hasSlottedIcon || !!this.mediatypeIconUrl;\n }\n\n /**\n * A circular loading indicator to render when processing.\n *\n * Two ring geometries are kept deliberately: the original 120x120 ring is\n * tuned for the dots, and the roomier 100x100 ring leaves space for a center\n * glyph. Keeping both means existing consumers see no visual change.\n */\n private get loadingIndicatorTemplate(): TemplateResult {\n const hasCenterIcon = this.hasCenterIcon;\n return html`\n <div class=\"indicator\">\n ${hasCenterIcon ? this.iconRingSvg : this.dottedRingSvg}\n <span class=\"center\" ?hidden=${!hasCenterIcon}>\n <slot name=\"icon\" @slotchange=${this.handleIconSlotChange}>\n ${this.mediatypeIconTemplate}\n </slot>\n </span>\n </div>\n `;\n }\n\n /** The original ring, with the three animated dots in the middle */\n private get dottedRingSvg(): SVGTemplateResult {\n return svg`\n <svg\n class=\"loading-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.loadingTitle}</title>\n <g stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\">\n <path\n class=\"loading-ring\"\n d=\"M60,10 C69.8019971,10 78.9452178,12.8205573 86.6623125,17.6943223 L76.4086287,27.9484118 C71.4880919,25.4243078 65.9103784,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 C96,53.3014663 94.1704984,47.0302355 90.9839104,41.6587228 L101.110332,31.5326452 C106.715332,39.6116982 110,49.4222615 110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z\"\n ></path>\n <g\n class=\"loading-dots ${this.hideDots ? 'hidden' : ''}\"\n transform=\"translate(40.000000, 55.000000)\"\n >\n <circle id=\"left-dot\" cx=\"5\" cy=\"5\" r=\"5\"></circle>\n <circle id=\"middle-dot\" cx=\"20\" cy=\"5\" r=\"5\"></circle>\n <circle id=\"right-dot\" cx=\"35\" cy=\"5\" r=\"5\"></circle>\n </g>\n </g>\n </svg>\n `;\n }\n\n /** The roomier ring, used when a glyph occupies the middle */\n private get iconRingSvg(): SVGTemplateResult {\n return svg`\n <svg\n class=\"loading-indicator icon-ring\"\n viewBox=\"0 0 100 100\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.loadingTitle}</title>\n <g fill-rule=\"evenodd\">\n <path\n class=\"loading-ring\"\n fill-rule=\"nonzero\"\n d=\"m17.8618849 11.6970233c18.5864635-15.59603144 45.6875867-15.59603102 64.2740497.000001 1.9271446 1.6170806 2.1785128 4.4902567.5614466 6.4174186-1.6170661 1.9271618-4.4902166 2.1785323-6.4173612.5614517-15.1996922-12.75416882-37.3625282-12.75416916-52.5622206-.000001-15.19969387 12.7541707-19.04823077 34.5805019-9.1273354 51.7641499 9.9208955 17.183646 30.7471499 24.7638499 49.3923323 17.9774983 18.6451823-6.7863521 29.7266014-25.9801026 26.2811129-45.5206248-.436848-2.4775114 1.2174186-4.8400696 3.6949079-5.2769215 2.4774893-.4368518 4.8400264 1.2174296 5.2768744 3.694941 4.2132065 23.8945096-9.3373563 47.3649806-32.137028 55.6634567-22.799672 8.2984758-48.2663986-.9707372-60.39785211-21.9832155-12.1314534-21.012481-7.42539173-47.7021198 11.16107351-63.2981544z\"\n ></path>\n </g>\n </svg>\n `;\n }\n\n /**\n * The bundled mediatype glyph. `maskedIcon` supplies the mask geometry and\n * the decorative `aria-hidden`; this component supplies the size and paint.\n */\n private get mediatypeIconTemplate(): TemplateResult | typeof nothing {\n const url = this.mediatypeIconUrl;\n if (!url) return nothing;\n\n return maskedIcon(url);\n }\n\n private handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasSlottedIcon = slot.assignedNodes({ flatten: false }).length > 0;\n }\n\n /** A check mark to render on success */\n private get successIndicatorTemplate(): TemplateResult {\n return html`\n <svg\n class=\"success-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.successTitle}</title>\n <g stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\">\n <path\n class=\"success-icon\"\n d=\"M60,10 C70.5816709,10 80.3955961,13.2871104 88.4763646,18.8959201 L78.3502633,29.0214223 C72.9767592,25.8315427 66.7022695,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 L95.995,59.46 L108.327675,47.128668 C109.350926,50.9806166 109.925886,55.015198 109.993301,59.1731586 L110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z\"\n ></path>\n <polygon\n class=\"success-icon\"\n transform=\"translate(75.000000, 41.500000) rotate(44.000000) translate(-75.000000, -41.500000) \"\n points=\"96 85 54 85 54 65 76 64.999 76 -2 96 -2\"\n ></polygon>\n </g>\n </svg>\n `;\n }\n\n /** An \"!\" to render on error */\n private get errorIndicatorTemplate(): TemplateResult {\n return html`\n <svg\n class=\"error-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.errorTitle}</title>\n <path\n class=\"error-icon\"\n d=\"m56.4612493 8.80450354 41.8901185 75.94632926c1.7706782 2.8433173 2.1150372 5.2623412 1.0330766 7.2570716-1.0819604 1.9947304-3.26978 2.9920956-6.5634587 2.9920956h-85.69973905c-3.29367873 0-5.46954894-.9973652-6.52761065-2.9920956-1.0580617-1.9947304-.70175345-4.4137543 1.06892476-7.2570716l41.89011844-75.12308969c1.8184757-2.84331737 3.9693609-4.37738627 6.4526556-4.60220671s4.6341799 1.03483527 6.4526556 3.77896714zm28.5387507 75.19549646-35.037482-62-34.962518 62zm-31-34.7484359v-10.2515641h-8v10.2515641l2.089172 14.7484359h3.8184713zm-8 19.7484359v8h8v-8z\"\n />\n </svg>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --indicator-width--: var(--icon-width);\n\n /* Loading */\n --loading-ring-color--: var(--primary-text-color);\n --loading-dot-color--: var(--primary-text-color);\n --loading-icon-color--: var(--primary-text-color);\n\n /* Success */\n --success-icon-color--: var(--color-success);\n\n /* Error */\n --error-icon-color--: var(--color-danger);\n\n display: inline-block;\n width: var(--indicator-width--);\n }\n\n /* Every mode occupies the same cell, so the element keeps one size */\n .layers {\n display: grid;\n }\n\n .layer {\n grid-area: 1 / 1;\n opacity: 0;\n }\n\n .animate .layer {\n transition: opacity ${unsafeCSS(FADE_DURATION_MS)}ms ease-out;\n }\n\n .layer.active {\n opacity: 1;\n }\n\n /* A ring on its way out would otherwise keep animating unseen */\n .layer.outgoing .loading-ring,\n .layer.outgoing .loading-dots > * {\n animation-play-state: paused;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .animate .layer {\n transition: none;\n }\n }\n\n .placeholder {\n height: var(--indicator-width--);\n }\n\n /* Stacks the center glyph over the ring */\n .indicator {\n position: relative;\n display: block;\n }\n\n .indicator svg {\n display: block;\n width: 100%;\n height: auto;\n }\n\n .center {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n }\n\n .center[hidden] {\n display: none;\n }\n\n /*\n * Sized to fit within the icon ring's inner diameter. maskedIcon sets\n * the mask itself; background-color is what paints the glyph, so it\n * recolors with the ring.\n */\n .ia-icon {\n width: 50%;\n height: 50%;\n background-color: var(--loading-icon-color--);\n }\n\n /* Block, so the svg isn't padded out by the line box it would sit in */\n .success-indicator,\n .error-indicator {\n display: block;\n }\n\n .success-icon {\n fill: var(--success-icon-color--);\n }\n\n .error-icon {\n fill: var(--error-icon-color--);\n }\n\n .loading-ring {\n fill: var(--loading-ring-color--);\n animation: rotate 1.3s infinite linear;\n transform-origin: 50px 50px;\n transform-box: fill-box;\n }\n\n .loading-dots {\n fill: var(--loading-dot-color--);\n transition: opacity 0.25s ease-out;\n }\n\n .loading-dots.hidden {\n display: none;\n }\n\n .loading-dots > * {\n opacity: 0;\n animation: dot 1.3s infinite;\n }\n\n .loading-dots #left-dot {\n animation-delay: 0.2s;\n }\n\n .loading-dots #middle-dot {\n animation-delay: 0.4s;\n }\n\n .loading-dots #right-dot {\n animation-delay: 0.6s;\n }\n\n @keyframes rotate {\n 0% {\n transform: rotate(-360deg);\n }\n 100% {\n /* This frame is supposed to be inferred, but Safari doesn't rotate it unless we're explicit */\n transform: rotate(0deg);\n }\n }\n\n @keyframes dot {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ia-status-indicator': IAStatusIndicator;\n }\n}\n"]}
1
+ {"version":3,"file":"ia-status-indicator.js","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n unsafeCSS,\n CSSResultGroup,\n html,\n LitElement,\n nothing,\n PropertyValues,\n svg,\n SVGTemplateResult,\n TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg } from '@lit/localize';\n\nimport themeStyles from '@src/themes/theme-styles';\nimport { maskedIcon } from '@src/util/masked-icon';\n\nimport audioIcon from './icons/audio.svg';\nimport collectionIcon from './icons/collection.svg';\nimport etreeIcon from './icons/etree.svg';\nimport imagesIcon from './icons/images.svg';\nimport searchIcon from './icons/search.svg';\nimport softwareIcon from './icons/software.svg';\nimport textsIcon from './icons/texts.svg';\nimport tvIcon from './icons/tv.svg';\nimport videoIcon from './icons/video.svg';\nimport webIcon from './icons/web.svg';\n\n/** How long a mode change takes to fade. Drives both the CSS and the timer. */\nconst FADE_DURATION_MS = 250;\n\n/** One layer per mode, always rendered in this order. See render(). */\nconst LAYER_ORDER: LoadingStatus[] = ['ready', 'loading', 'success', 'error'];\n\nexport type LoadingStatus = 'ready' | 'loading' | 'success' | 'error';\n\n/**\n * The mediatype glyphs this element ships. These are *icon* names, which do not\n * map one-to-one onto archive.org mediatype values — a consumer holding a\n * `MediaType` translates at its own call site (e.g. `movies` -> `video`).\n */\nexport type MediaTypeIcon =\n | 'audio'\n | 'collection'\n | 'etree'\n | 'images'\n | 'search'\n | 'software'\n | 'texts'\n | 'tv'\n | 'video'\n | 'web';\n\nconst MEDIATYPE_ICONS: Record<MediaTypeIcon, string> = {\n audio: audioIcon,\n collection: collectionIcon,\n etree: etreeIcon,\n images: imagesIcon,\n search: searchIcon,\n software: softwareIcon,\n texts: textsIcon,\n tv: tvIcon,\n video: videoIcon,\n web: webIcon,\n};\n\n/**\n * Renders an SVG indicator, which defaults to an animated circular indicator.\n *\n * In `loading` mode the middle of the ring resolves in this order:\n * 1. slotted `icon` content\n * 2. the `mediatype` glyph\n * 3. nothing, when `hideDots` is set\n * 4. three animated dots (the default)\n */\n@customElement('ia-status-indicator')\n@localized()\nexport class IAStatusIndicator extends LitElement {\n /* An optional title to use for the loading state of the indicator. Will be used for screen readers. Defaults to \"Loading...\". */\n @property({ type: String }) loadingTitle?: string;\n\n /* An optional title to use for the success state of the indicator. Will be used for screen readers. Defaults to \"Success\". */\n @property({ type: String }) successTitle?: string;\n\n /* An optional title to use for the error state of the indicator. Will be used for screen readers. Defaults to \"Error\". */\n @property({ type: String }) errorTitle?: string;\n\n /* The state of the indicator that should be shown */\n @property({ type: String }) mode: LoadingStatus = 'loading';\n\n /* An optional mediatype glyph to render in the middle of the loading ring */\n @property({ type: String }) mediatype?: MediaTypeIcon;\n\n /* Renders a bare ring, with no dots in the middle. Ignored when a center icon is present. */\n @property({ type: Boolean }) hideDots = false;\n\n /* Whether a consumer has slotted their own center icon */\n @state() private hasSlottedIcon = false;\n\n /* The modes still fading out after a change. More than one when changes overlap. */\n @state() private _outgoingModes: ReadonlySet<LoadingStatus> = new Set();\n\n /* Set once the first render is done, so the element doesn't fade in on mount */\n @state() private _canAnimate = false;\n\n /* One per outgoing mode, clearing it once its own fade is over */\n private _fadeTimers = new Map<LoadingStatus, ReturnType<typeof setTimeout>>();\n\n render(): TemplateResult {\n // Every mode has its own layer element that never moves, whatever order\n // the changes come in. Moving an element cancels the transition it's in\n // the middle of, so a layer partway through a fade would snap to its end\n // value. A layer only has content while it's on screen.\n return html`\n <div class=\"layers ${this._canAnimate ? 'animate' : ''}\">\n ${LAYER_ORDER.map((mode) => this.layerTemplate(mode))}\n </div>\n `;\n }\n\n /**\n * One mode's artwork, stacked in the same cell as the other layers so that\n * a mode change fades between them. At rest only the active layer has\n * content; an outgoing one is emptied as soon as its fade is over, so the\n * shadow tree holds a single mode's markup and a single `<title>`.\n */\n private layerTemplate(mode: LoadingStatus): TemplateResult {\n // `mode` is a public string attribute, so a consumer can hand us anything.\n // An unrecognised one matches no layer and draws nothing.\n const isActive = mode === this.mode;\n const isOutgoing = !isActive && this._outgoingModes.has(mode);\n const state = isActive ? 'active' : isOutgoing ? 'outgoing' : '';\n\n return html`<div\n class=\"layer ${state}\"\n aria-hidden=${isActive ? nothing : 'true'}\n >\n ${isActive || isOutgoing ? this.modeTemplate(mode) : nothing}\n </div>`;\n }\n\n private modeTemplate(mode: LoadingStatus): TemplateResult {\n switch (mode) {\n case 'ready':\n return this.placeholderTemplate;\n case 'loading':\n return this.loadingIndicatorTemplate;\n case 'success':\n return this.successIndicatorTemplate;\n case 'error':\n return this.errorIndicatorTemplate;\n }\n }\n\n willUpdate(changedProps: PropertyValues): void {\n if (!changedProps.has('mode')) return;\n // Hold on to the mode we're leaving so both can be on screen together for\n // the length of the fade.\n const previous = changedProps.get('mode') as LoadingStatus | undefined;\n if (previous === undefined || previous === this.mode) return;\n\n // The mode coming back in may still be fading out from an earlier change.\n // Its layer just turns around, so it's no longer outgoing.\n this.stopFadingOut(this.mode);\n\n this._outgoingModes = new Set(this._outgoingModes).add(previous);\n clearTimeout(this._fadeTimers.get(previous));\n this._fadeTimers.set(\n previous,\n setTimeout(() => this.stopFadingOut(previous), FADE_DURATION_MS),\n );\n }\n\n private stopFadingOut(mode: LoadingStatus): void {\n clearTimeout(this._fadeTimers.get(mode));\n this._fadeTimers.delete(mode);\n if (!this._outgoingModes.has(mode)) return;\n\n const outgoing = new Set(this._outgoingModes);\n outgoing.delete(mode);\n this._outgoingModes = outgoing;\n }\n\n firstUpdated(): void {\n // Fading applies to mode changes, not to the element appearing. Waiting a\n // frame is what makes that true: enabling it inline would put the\n // transition in the element's very first computed style, and it would\n // fade up from nothing on mount.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this._canAnimate = true;\n });\n });\n }\n\n disconnectedCallback(): void {\n this._fadeTimers.forEach((timer) => clearTimeout(timer));\n this._fadeTimers.clear();\n // Nothing reschedules these timers, so leaving the modes set would strand\n // the outgoing layers on reconnect.\n this._outgoingModes = new Set();\n super.disconnectedCallback();\n }\n\n /**\n * The `ready` state: reserves the indicator's space without drawing, so a\n * consumer's layout doesn't shift once the indicator appears.\n */\n private get placeholderTemplate(): TemplateResult {\n return html`<div class=\"placeholder\"></div>`;\n }\n\n /**\n * The asset URL for the current mediatype, if it maps to a glyph we ship.\n *\n * Unmapped values (e.g. archive.org's `account` or `data`) resolve to\n * undefined and degrade to the default dots rather than a broken mask.\n */\n private get mediatypeIconUrl(): string | undefined {\n if (!this.mediatype) return undefined;\n return MEDIATYPE_ICONS[this.mediatype];\n }\n\n /** Whether the middle of the ring is occupied by a glyph rather than dots */\n private get hasCenterIcon(): boolean {\n return this.hasSlottedIcon || !!this.mediatypeIconUrl;\n }\n\n /**\n * A circular loading indicator to render when processing.\n *\n * Two ring geometries are kept deliberately: the original 120x120 ring is\n * tuned for the dots, and the roomier 100x100 ring leaves space for a center\n * glyph. Keeping both means existing consumers see no visual change.\n */\n private get loadingIndicatorTemplate(): TemplateResult {\n const hasCenterIcon = this.hasCenterIcon;\n return html`\n <div class=\"indicator\">\n ${hasCenterIcon ? this.iconRingSvg : this.dottedRingSvg}\n <span class=\"center\" ?hidden=${!hasCenterIcon}>\n <slot name=\"icon\" @slotchange=${this.handleIconSlotChange}>\n ${this.mediatypeIconTemplate}\n </slot>\n </span>\n </div>\n `;\n }\n\n /** The original ring, with the three animated dots in the middle */\n private get dottedRingSvg(): SVGTemplateResult {\n return svg`\n <svg\n class=\"loading-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.loadingTitle ?? msg('Loading...')}</title>\n <g stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\">\n <path\n class=\"loading-ring\"\n d=\"M60,10 C69.8019971,10 78.9452178,12.8205573 86.6623125,17.6943223 L76.4086287,27.9484118 C71.4880919,25.4243078 65.9103784,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 C96,53.3014663 94.1704984,47.0302355 90.9839104,41.6587228 L101.110332,31.5326452 C106.715332,39.6116982 110,49.4222615 110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z\"\n ></path>\n <g\n class=\"loading-dots ${this.hideDots ? 'hidden' : ''}\"\n transform=\"translate(40.000000, 55.000000)\"\n >\n <circle id=\"left-dot\" cx=\"5\" cy=\"5\" r=\"5\"></circle>\n <circle id=\"middle-dot\" cx=\"20\" cy=\"5\" r=\"5\"></circle>\n <circle id=\"right-dot\" cx=\"35\" cy=\"5\" r=\"5\"></circle>\n </g>\n </g>\n </svg>\n `;\n }\n\n /** The roomier ring, used when a glyph occupies the middle */\n private get iconRingSvg(): SVGTemplateResult {\n return svg`\n <svg\n class=\"loading-indicator icon-ring\"\n viewBox=\"0 0 100 100\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.loadingTitle ?? msg('Loading...')}</title>\n <g fill-rule=\"evenodd\">\n <path\n class=\"loading-ring\"\n fill-rule=\"nonzero\"\n d=\"m17.8618849 11.6970233c18.5864635-15.59603144 45.6875867-15.59603102 64.2740497.000001 1.9271446 1.6170806 2.1785128 4.4902567.5614466 6.4174186-1.6170661 1.9271618-4.4902166 2.1785323-6.4173612.5614517-15.1996922-12.75416882-37.3625282-12.75416916-52.5622206-.000001-15.19969387 12.7541707-19.04823077 34.5805019-9.1273354 51.7641499 9.9208955 17.183646 30.7471499 24.7638499 49.3923323 17.9774983 18.6451823-6.7863521 29.7266014-25.9801026 26.2811129-45.5206248-.436848-2.4775114 1.2174186-4.8400696 3.6949079-5.2769215 2.4774893-.4368518 4.8400264 1.2174296 5.2768744 3.694941 4.2132065 23.8945096-9.3373563 47.3649806-32.137028 55.6634567-22.799672 8.2984758-48.2663986-.9707372-60.39785211-21.9832155-12.1314534-21.012481-7.42539173-47.7021198 11.16107351-63.2981544z\"\n ></path>\n </g>\n </svg>\n `;\n }\n\n /**\n * The bundled mediatype glyph. `maskedIcon` supplies the mask geometry and\n * the decorative `aria-hidden`; this component supplies the size and paint.\n */\n private get mediatypeIconTemplate(): TemplateResult | typeof nothing {\n const url = this.mediatypeIconUrl;\n if (!url) return nothing;\n\n return maskedIcon(url);\n }\n\n private handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasSlottedIcon = slot.assignedNodes({ flatten: false }).length > 0;\n }\n\n /** A check mark to render on success */\n private get successIndicatorTemplate(): TemplateResult {\n return html`\n <svg\n class=\"success-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.successTitle ?? msg('Success')}</title>\n <g stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\">\n <path\n class=\"success-icon\"\n d=\"M60,10 C70.5816709,10 80.3955961,13.2871104 88.4763646,18.8959201 L78.3502633,29.0214223 C72.9767592,25.8315427 66.7022695,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 L95.995,59.46 L108.327675,47.128668 C109.350926,50.9806166 109.925886,55.015198 109.993301,59.1731586 L110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z\"\n ></path>\n <polygon\n class=\"success-icon\"\n transform=\"translate(75.000000, 41.500000) rotate(44.000000) translate(-75.000000, -41.500000) \"\n points=\"96 85 54 85 54 65 76 64.999 76 -2 96 -2\"\n ></polygon>\n </g>\n </svg>\n `;\n }\n\n /** An \"!\" to render on error */\n private get errorIndicatorTemplate(): TemplateResult {\n return html`\n <svg\n class=\"error-indicator\"\n viewBox=\"0 0 120 120\"\n preserveAspectRatio=\"none\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n role=\"status\"\n >\n <title>${this.errorTitle ?? msg('Error')}</title>\n <path\n class=\"error-icon\"\n d=\"m56.4612493 8.80450354 41.8901185 75.94632926c1.7706782 2.8433173 2.1150372 5.2623412 1.0330766 7.2570716-1.0819604 1.9947304-3.26978 2.9920956-6.5634587 2.9920956h-85.69973905c-3.29367873 0-5.46954894-.9973652-6.52761065-2.9920956-1.0580617-1.9947304-.70175345-4.4137543 1.06892476-7.2570716l41.89011844-75.12308969c1.8184757-2.84331737 3.9693609-4.37738627 6.4526556-4.60220671s4.6341799 1.03483527 6.4526556 3.77896714zm28.5387507 75.19549646-35.037482-62-34.962518 62zm-31-34.7484359v-10.2515641h-8v10.2515641l2.089172 14.7484359h3.8184713zm-8 19.7484359v8h8v-8z\"\n />\n </svg>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --indicator-width--: var(--icon-width);\n\n /* Loading */\n --loading-ring-color--: var(--primary-text-color);\n --loading-dot-color--: var(--primary-text-color);\n --loading-icon-color--: var(--primary-text-color);\n\n /* Success */\n --success-icon-color--: var(--color-success);\n\n /* Error */\n --error-icon-color--: var(--color-danger);\n\n display: inline-block;\n width: var(--indicator-width--);\n }\n\n /* Every mode occupies the same cell, so the element keeps one size */\n .layers {\n display: grid;\n }\n\n .layer {\n grid-area: 1 / 1;\n opacity: 0;\n }\n\n .animate .layer {\n transition: opacity ${unsafeCSS(FADE_DURATION_MS)}ms ease-out;\n }\n\n .layer.active {\n opacity: 1;\n }\n\n /* A ring on its way out would otherwise keep animating unseen */\n .layer.outgoing .loading-ring,\n .layer.outgoing .loading-dots > * {\n animation-play-state: paused;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .animate .layer {\n transition: none;\n }\n }\n\n .placeholder {\n height: var(--indicator-width--);\n }\n\n /* Stacks the center glyph over the ring */\n .indicator {\n position: relative;\n display: block;\n }\n\n .indicator svg {\n display: block;\n width: 100%;\n height: auto;\n }\n\n .center {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n }\n\n .center[hidden] {\n display: none;\n }\n\n /*\n * Sized to fit within the icon ring's inner diameter. maskedIcon sets\n * the mask itself; background-color is what paints the glyph, so it\n * recolors with the ring.\n */\n .ia-icon {\n width: 50%;\n height: 50%;\n background-color: var(--loading-icon-color--);\n }\n\n /* Block, so the svg isn't padded out by the line box it would sit in */\n .success-indicator,\n .error-indicator {\n display: block;\n }\n\n .success-icon {\n fill: var(--success-icon-color--);\n }\n\n .error-icon {\n fill: var(--error-icon-color--);\n }\n\n .loading-ring {\n fill: var(--loading-ring-color--);\n animation: rotate 1.3s infinite linear;\n transform-origin: 50px 50px;\n transform-box: fill-box;\n }\n\n .loading-dots {\n fill: var(--loading-dot-color--);\n transition: opacity 0.25s ease-out;\n }\n\n .loading-dots.hidden {\n display: none;\n }\n\n .loading-dots > * {\n opacity: 0;\n animation: dot 1.3s infinite;\n }\n\n .loading-dots #left-dot {\n animation-delay: 0.2s;\n }\n\n .loading-dots #middle-dot {\n animation-delay: 0.4s;\n }\n\n .loading-dots #right-dot {\n animation-delay: 0.6s;\n }\n\n @keyframes rotate {\n 0% {\n transform: rotate(-360deg);\n }\n 100% {\n /* This frame is supposed to be inferred, but Safari doesn't rotate it unless we're explicit */\n transform: rotate(0deg);\n }\n }\n\n @keyframes dot {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ia-status-indicator': IAStatusIndicator;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-audio.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-audio.ts"],"names":[],"mappings":";AAEA,wBAyBE"}
@@ -0,0 +1,28 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ width="40px"
5
+ height="40px"
6
+ viewBox="0 0 40 40"
7
+ version="1.1"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ aria-labelledby="audioTitleID audioDescID"
10
+ >
11
+ <title id="audioTitleID">Audio icon</title>
12
+ <desc id="audioDescID">An illustration of an audio speaker.</desc>
13
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
14
+ <g transform="translate(10, 8)" class="fill-color">
15
+ <path
16
+ d="M19.4264564,11.8585048 L19.4264564,20.7200433 C19.4264564,22.3657576 18.8838179,23.2519114 16.8489237,23.2519114 C12.2364969,23.125318 7.75972977,23.125318 3.14730298,23.2519114 C1.24806842,23.2519114 0.569770368,22.492351 0.569770368,20.7200433 L0.569770368,2.74377955 C0.569770368,1.09806526 1.11240881,0.211911416 3.14730298,0.211911416 C7.75972977,0.338504822 12.2364969,0.338504822 16.8489237,0.211911416 C18.7481583,0.211911416 19.4264564,0.971471855 19.4264564,2.74377955 C19.2907967,5.78202131 19.4264564,8.82026306 19.4264564,11.8585048 L19.4264564,11.8585048 Z M10.0659432,2.74377955 C8.16670861,2.74377955 6.67445288,4.13630702 6.67445288,5.90861471 C6.67445288,7.6809224 8.16670861,9.07344988 10.0659432,9.07344988 C11.9651777,9.07344988 13.4574335,7.6809224 13.4574335,5.90861471 C13.4574335,4.13630702 11.8295181,2.74377955 10.0659432,2.74377955 L10.0659432,2.74377955 Z M10.0659432,11.4787246 C7.21709133,11.4787246 5.04653754,13.6308125 5.04653754,16.1626806 C5.04653754,18.8211422 7.35275094,20.8466367 10.0659432,20.8466367 C12.914795,20.8466367 15.0853488,18.6945488 15.0853488,16.1626806 C15.0853488,13.6308125 12.7791354,11.4787246 10.0659432,11.4787246 L10.0659432,11.4787246 Z"
17
+ ></path>
18
+ <ellipse
19
+ cx="10.2016028"
20
+ cy="16.5690777"
21
+ rx="1.35659611"
22
+ ry="1.34075134"
23
+ ></ellipse>
24
+ </g>
25
+ </g>
26
+ </svg>
27
+ `;
28
+ //# sourceMappingURL=icon-audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-audio.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n width=\"40px\"\n height=\"40px\"\n viewBox=\"0 0 40 40\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"audioTitleID audioDescID\"\n >\n <title id=\"audioTitleID\">Audio icon</title>\n <desc id=\"audioDescID\">An illustration of an audio speaker.</desc>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(10, 8)\" class=\"fill-color\">\n <path\n d=\"M19.4264564,11.8585048 L19.4264564,20.7200433 C19.4264564,22.3657576 18.8838179,23.2519114 16.8489237,23.2519114 C12.2364969,23.125318 7.75972977,23.125318 3.14730298,23.2519114 C1.24806842,23.2519114 0.569770368,22.492351 0.569770368,20.7200433 L0.569770368,2.74377955 C0.569770368,1.09806526 1.11240881,0.211911416 3.14730298,0.211911416 C7.75972977,0.338504822 12.2364969,0.338504822 16.8489237,0.211911416 C18.7481583,0.211911416 19.4264564,0.971471855 19.4264564,2.74377955 C19.2907967,5.78202131 19.4264564,8.82026306 19.4264564,11.8585048 L19.4264564,11.8585048 Z M10.0659432,2.74377955 C8.16670861,2.74377955 6.67445288,4.13630702 6.67445288,5.90861471 C6.67445288,7.6809224 8.16670861,9.07344988 10.0659432,9.07344988 C11.9651777,9.07344988 13.4574335,7.6809224 13.4574335,5.90861471 C13.4574335,4.13630702 11.8295181,2.74377955 10.0659432,2.74377955 L10.0659432,2.74377955 Z M10.0659432,11.4787246 C7.21709133,11.4787246 5.04653754,13.6308125 5.04653754,16.1626806 C5.04653754,18.8211422 7.35275094,20.8466367 10.0659432,20.8466367 C12.914795,20.8466367 15.0853488,18.6945488 15.0853488,16.1626806 C15.0853488,13.6308125 12.7791354,11.4787246 10.0659432,11.4787246 L10.0659432,11.4787246 Z\"\n ></path>\n <ellipse\n cx=\"10.2016028\"\n cy=\"16.5690777\"\n rx=\"1.35659611\"\n ry=\"1.34075134\"\n ></ellipse>\n </g>\n </g>\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-close.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-close.ts"],"names":[],"mappings":";AAEA,wBAiBE"}
@@ -0,0 +1,20 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ width="40"
5
+ height="40"
6
+ viewBox="0 0 40 40"
7
+ version="1.1"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ aria-labelledby="closeTitleID closeDescID"
10
+ >
11
+ <title id="closeTitleID">Close icon</title>
12
+ <desc id="closeDescID">A line drawing of an X</desc>
13
+ <path
14
+ d="m29.1923882 10.8076118c.5857864.5857865.5857864 1.535534 0 2.1213204l-7.0711162 7.0703398 7.0711162 7.0717958c.5857864.5857864.5857864 1.5355339 0 2.1213204-.5857865.5857864-1.535534.5857864-2.1213204 0l-7.0717958-7.0711162-7.0703398 7.0711162c-.5857864.5857864-1.5355339.5857864-2.1213204 0-.5857864-.5857865-.5857864-1.535534 0-2.1213204l7.0706602-7.0717958-7.0706602-7.0703398c-.5857864-.5857864-.5857864-1.5355339 0-2.1213204.5857865-.5857864 1.535534-.5857864 2.1213204 0l7.0703398 7.0706602 7.0717958-7.0706602c.5857864-.5857864 1.5355339-.5857864 2.1213204 0z"
15
+ class="fill-color"
16
+ fill-rule="evenodd"
17
+ />
18
+ </svg>
19
+ `;
20
+ //# sourceMappingURL=icon-close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-close.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;CAiBlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"closeTitleID closeDescID\"\n >\n <title id=\"closeTitleID\">Close icon</title>\n <desc id=\"closeDescID\">A line drawing of an X</desc>\n <path\n d=\"m29.1923882 10.8076118c.5857864.5857865.5857864 1.535534 0 2.1213204l-7.0711162 7.0703398 7.0711162 7.0717958c.5857864.5857864.5857864 1.5355339 0 2.1213204-.5857865.5857864-1.535534.5857864-2.1213204 0l-7.0717958-7.0711162-7.0703398 7.0711162c-.5857864.5857864-1.5355339.5857864-2.1213204 0-.5857864-.5857865-.5857864-1.535534 0-2.1213204l7.0706602-7.0717958-7.0706602-7.0703398c-.5857864-.5857864-.5857864-1.5355339 0-2.1213204.5857865-.5857864 1.535534-.5857864 2.1213204 0l7.0703398 7.0706602 7.0717958-7.0706602c.5857864-.5857864 1.5355339-.5857864 2.1213204 0z\"\n class=\"fill-color\"\n fill-rule=\"evenodd\"\n />\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-donate-unpadded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-donate-unpadded.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-donate-unpadded.ts"],"names":[],"mappings":";AAEA,wBAgBE"}
@@ -0,0 +1,19 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ width="40"
5
+ height="40"
6
+ viewBox="0 0 40 40"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ aria-labelledby="donateTitleID donateDescID"
10
+ >
11
+ <title id="donateTitleID">Donate icon</title>
12
+ <desc id="donateDescID">An illustration of a heart shape</desc>
13
+ <path
14
+ class="fill-color"
15
+ d="m32.6,8.12c-1.57,-1.51 -3.46,-2.21 -5.65,-2.11c-1,0.03 -2.14,0.51 -3.42,1.44c-1.28,0.92 -2.28,2.09 -3.03,3.51c-0.71,-1.41 -1.72,-2.59 -3,-3.51c-1.29,-0.93 -2.43,-1.41 -3.41,-1.44c-1.46,-0.07 -2.8,0.23 -4.02,0.88c-1.23,0.65 -2.21,1.6 -2.94,2.83c-0.74,1.24 -1.11,2.63 -1.12,4.17c-0.05,2.56 0.85,5.01 2.68,7.37c1.46,1.88 3.52,4.21 6.19,7.04c2.66,2.81 4.53,4.71 5.62,5.69c1,-0.88 2.85,-2.75 5.55,-5.6s4.81,-5.23 6.31,-7.13c1.81,-2.36 2.71,-4.81 2.66,-7.37c-0.04,-2.35 -0.83,-4.28 -2.4,-5.77z"
16
+ />
17
+ </svg>
18
+ `;
19
+ //# sourceMappingURL=icon-donate-unpadded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-donate-unpadded.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-donate-unpadded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;CAgBlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"donateTitleID donateDescID\"\n >\n <title id=\"donateTitleID\">Donate icon</title>\n <desc id=\"donateDescID\">An illustration of a heart shape</desc>\n <path\n class=\"fill-color\"\n d=\"m32.6,8.12c-1.57,-1.51 -3.46,-2.21 -5.65,-2.11c-1,0.03 -2.14,0.51 -3.42,1.44c-1.28,0.92 -2.28,2.09 -3.03,3.51c-0.71,-1.41 -1.72,-2.59 -3,-3.51c-1.29,-0.93 -2.43,-1.41 -3.41,-1.44c-1.46,-0.07 -2.8,0.23 -4.02,0.88c-1.23,0.65 -2.21,1.6 -2.94,2.83c-0.74,1.24 -1.11,2.63 -1.12,4.17c-0.05,2.56 0.85,5.01 2.68,7.37c1.46,1.88 3.52,4.21 6.19,7.04c2.66,2.81 4.53,4.71 5.62,5.69c1,-0.88 2.85,-2.75 5.55,-5.6s4.81,-5.23 6.31,-7.13c1.81,-2.36 2.71,-4.81 2.66,-7.37c-0.04,-2.35 -0.83,-4.28 -2.4,-5.77z\"\n />\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-donate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-donate.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-donate.ts"],"names":[],"mappings":";AAEA,wBAeE"}
@@ -0,0 +1,18 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ width="40"
5
+ height="40"
6
+ viewBox="0 0 40 40"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ aria-labelledby="donateTitleID donateDescID"
9
+ >
10
+ <title id="donateTitleID">Donate icon</title>
11
+ <desc id="donateDescID">An illustration of a heart shape</desc>
12
+ <path
13
+ class="fill-color"
14
+ d="m30.0120362 11.0857287c-1.2990268-1.12627221-2.8599641-1.65258786-4.682812-1.57894699-.8253588.02475323-1.7674318.3849128-2.8262192 1.08047869-1.0587873.6955659-1.89622 1.5724492-2.512298 2.63065-.591311-1.0588196-1.4194561-1.9357029-2.4844351-2.63065-1.0649791-.69494706-2.0039563-1.05510663-2.8169316-1.08047869-1.2067699-.04950647-2.318187.17203498-3.3342513.66462439-1.0160643.4925893-1.82594378 1.2002224-2.42963831 2.1228992-.60369453.9226769-.91173353 1.9629315-.92411701 3.1207641-.03715043 1.9202322.70183359 3.7665141 2.21695202 5.5388457 1.2067699 1.4035084 2.912594 3.1606786 5.1174721 5.2715107 2.2048782 2.1108321 3.7565279 3.5356901 4.6549492 4.2745742.8253588-.6646243 2.355647-2.0647292 4.5908647-4.2003145s3.9747867-3.9171994 5.218707-5.3448422c1.502735-1.7723316 2.2355273-3.6186135 2.1983769-5.5388457-.0256957-1.7608832-.6875926-3.2039968-1.9866194-4.3302689z"
15
+ />
16
+ </svg>
17
+ `;
18
+ //# sourceMappingURL=icon-donate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-donate.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-donate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;CAelB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"donateTitleID donateDescID\"\n >\n <title id=\"donateTitleID\">Donate icon</title>\n <desc id=\"donateDescID\">An illustration of a heart shape</desc>\n <path\n class=\"fill-color\"\n d=\"m30.0120362 11.0857287c-1.2990268-1.12627221-2.8599641-1.65258786-4.682812-1.57894699-.8253588.02475323-1.7674318.3849128-2.8262192 1.08047869-1.0587873.6955659-1.89622 1.5724492-2.512298 2.63065-.591311-1.0588196-1.4194561-1.9357029-2.4844351-2.63065-1.0649791-.69494706-2.0039563-1.05510663-2.8169316-1.08047869-1.2067699-.04950647-2.318187.17203498-3.3342513.66462439-1.0160643.4925893-1.82594378 1.2002224-2.42963831 2.1228992-.60369453.9226769-.91173353 1.9629315-.92411701 3.1207641-.03715043 1.9202322.70183359 3.7665141 2.21695202 5.5388457 1.2067699 1.4035084 2.912594 3.1606786 5.1174721 5.2715107 2.2048782 2.1108321 3.7565279 3.5356901 4.6549492 4.2745742.8253588-.6646243 2.355647-2.0647292 4.5908647-4.2003145s3.9747867-3.9171994 5.218707-5.3448422c1.502735-1.7723316 2.2355273-3.6186135 2.1983769-5.5388457-.0256957-1.7608832-.6875926-3.2039968-1.9866194-4.3302689z\"\n />\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-ellipses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-ellipses.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-ellipses.ts"],"names":[],"mappings":";AAEA,wBAgBE"}
@@ -0,0 +1,19 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ height="40"
5
+ viewBox="0 0 40 40"
6
+ width="40"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ aria-labelledby="ellipsesTitleID ellipsesDescID"
9
+ >
10
+ <title id="ellipsesTitleID">Ellipses icon</title>
11
+ <desc id="ellipsesDescID">An illustration of text ellipses.</desc>
12
+ <path
13
+ class="fill-color"
14
+ d="m10.5 17.5c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5c-1.38071187 0-2.5-1.1192881-2.5-2.5s1.11928813-2.5 2.5-2.5zm9.5 0c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5-2.5-1.1192881-2.5-2.5 1.1192881-2.5 2.5-2.5zm9.5 0c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5-2.5-1.1192881-2.5-2.5 1.1192881-2.5 2.5-2.5z"
15
+ fill-rule="evenodd"
16
+ />
17
+ </svg>
18
+ `;
19
+ //# sourceMappingURL=icon-ellipses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-ellipses.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-ellipses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;CAgBlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n height=\"40\"\n viewBox=\"0 0 40 40\"\n width=\"40\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"ellipsesTitleID ellipsesDescID\"\n >\n <title id=\"ellipsesTitleID\">Ellipses icon</title>\n <desc id=\"ellipsesDescID\">An illustration of text ellipses.</desc>\n <path\n class=\"fill-color\"\n d=\"m10.5 17.5c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5c-1.38071187 0-2.5-1.1192881-2.5-2.5s1.11928813-2.5 2.5-2.5zm9.5 0c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5-2.5-1.1192881-2.5-2.5 1.1192881-2.5 2.5-2.5zm9.5 0c1.3807119 0 2.5 1.1192881 2.5 2.5s-1.1192881 2.5-2.5 2.5-2.5-1.1192881-2.5-2.5 1.1192881-2.5 2.5-2.5z\"\n fill-rule=\"evenodd\"\n />\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-ia-logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-ia-logo.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-ia-logo.ts"],"names":[],"mappings":";AAEA,wBA2BE"}
@@ -0,0 +1,30 @@
1
+ import { html } from 'lit';
2
+ export default html `
3
+ <svg
4
+ class="ia-logo"
5
+ viewBox="0 0 27 30"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ aria-labelledby="logoTitleID logoDescID"
8
+ >
9
+ <title id="logoTitleID">Internet Archive logo</title>
10
+ <desc id="logoDescID">
11
+ A line drawing of the Internet Archive headquarters building façade.
12
+ </desc>
13
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
14
+ <mask id="mask-2" fill="white">
15
+ <path
16
+ d="M26.6666667,28.6046512 L26.6666667,30 L0,30 L0.000283687943,28.6046512 L26.6666667,28.6046512 Z M25.6140351,26.5116279 L25.6140351,28.255814 L1.05263158,28.255814 L1.05263158,26.5116279 L25.6140351,26.5116279 Z M3.62469203,7.6744186 L3.91746909,7.82153285 L4.0639977,10.1739544 L4.21052632,13.9963932 L4.21052632,17.6725617 L4.0639977,22.255044 L4.03962296,25.3421929 L3.62469203,25.4651163 L2.16024641,25.4651163 L1.72094074,25.3421929 L1.55031755,22.255044 L1.40350877,17.6970339 L1.40350877,14.0211467 L1.55031755,10.1739544 L1.68423854,7.80887484 L1.98962322,7.6744186 L3.62469203,7.6744186 Z M24.6774869,7.6744186 L24.9706026,7.82153285 L25.1168803,10.1739544 L25.2631579,13.9963932 L25.2631579,17.6725617 L25.1168803,22.255044 L25.0927809,25.3421929 L24.6774869,25.4651163 L23.2130291,25.4651163 L22.7736357,25.3421929 L22.602418,22.255044 L22.4561404,17.6970339 L22.4561404,14.0211467 L22.602418,10.1739544 L22.7369262,7.80887484 L23.0420916,7.6744186 L24.6774869,7.6744186 Z M9.94042303,7.6744186 L10.2332293,7.82153285 L10.3797725,10.1739544 L10.5263158,13.9963932 L10.5263158,17.6725617 L10.3797725,22.255044 L10.3556756,25.3421929 L9.94042303,25.4651163 L8.47583122,25.4651163 L8.0362015,25.3421929 L7.86556129,22.255044 L7.71929825,17.6970339 L7.71929825,14.0211467 L7.86556129,10.1739544 L8.00005604,7.80887484 L8.30491081,7.6744186 L9.94042303,7.6744186 Z M18.0105985,7.6744186 L18.3034047,7.82153285 L18.449948,10.1739544 L18.5964912,13.9963932 L18.5964912,17.6725617 L18.449948,22.255044 L18.425851,25.3421929 L18.0105985,25.4651163 L16.5460067,25.4651163 L16.1066571,25.3421929 L15.9357367,22.255044 L15.7894737,17.6970339 L15.7894737,14.0211467 L15.9357367,10.1739544 L16.0702315,7.80887484 L16.3753664,7.6744186 L18.0105985,7.6744186 Z M25.6140351,4.53488372 L25.6140351,6.97674419 L1.05263158,6.97674419 L1.05263158,4.53488372 L25.6140351,4.53488372 Z M13.0806755,0 L25.9649123,2.93331338 L25.4484139,3.8372093 L0.771925248,3.8372093 L0,3.1041615 L13.0806755,0 Z"
17
+ id="path-1"
18
+ ></path>
19
+ </mask>
20
+ <use fill="#FFFFFF" xlink:href="#path-1"></use>
21
+ <g mask="url(#mask-2)" fill="#FFFFFF">
22
+ <path
23
+ d="M0,0 L26.6666667,0 L26.6666667,30 L0,30 L0,0 Z"
24
+ id="swatch"
25
+ ></path>
26
+ </g>
27
+ </g>
28
+ </svg>
29
+ `;
30
+ //# sourceMappingURL=icon-ia-logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-ia-logo.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-ia-logo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlB,CAAC","sourcesContent":["import { html } from 'lit';\n\nexport default html`\n <svg\n class=\"ia-logo\"\n viewBox=\"0 0 27 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"logoTitleID logoDescID\"\n >\n <title id=\"logoTitleID\">Internet Archive logo</title>\n <desc id=\"logoDescID\">\n A line drawing of the Internet Archive headquarters building façade.\n </desc>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <mask id=\"mask-2\" fill=\"white\">\n <path\n d=\"M26.6666667,28.6046512 L26.6666667,30 L0,30 L0.000283687943,28.6046512 L26.6666667,28.6046512 Z M25.6140351,26.5116279 L25.6140351,28.255814 L1.05263158,28.255814 L1.05263158,26.5116279 L25.6140351,26.5116279 Z M3.62469203,7.6744186 L3.91746909,7.82153285 L4.0639977,10.1739544 L4.21052632,13.9963932 L4.21052632,17.6725617 L4.0639977,22.255044 L4.03962296,25.3421929 L3.62469203,25.4651163 L2.16024641,25.4651163 L1.72094074,25.3421929 L1.55031755,22.255044 L1.40350877,17.6970339 L1.40350877,14.0211467 L1.55031755,10.1739544 L1.68423854,7.80887484 L1.98962322,7.6744186 L3.62469203,7.6744186 Z M24.6774869,7.6744186 L24.9706026,7.82153285 L25.1168803,10.1739544 L25.2631579,13.9963932 L25.2631579,17.6725617 L25.1168803,22.255044 L25.0927809,25.3421929 L24.6774869,25.4651163 L23.2130291,25.4651163 L22.7736357,25.3421929 L22.602418,22.255044 L22.4561404,17.6970339 L22.4561404,14.0211467 L22.602418,10.1739544 L22.7369262,7.80887484 L23.0420916,7.6744186 L24.6774869,7.6744186 Z M9.94042303,7.6744186 L10.2332293,7.82153285 L10.3797725,10.1739544 L10.5263158,13.9963932 L10.5263158,17.6725617 L10.3797725,22.255044 L10.3556756,25.3421929 L9.94042303,25.4651163 L8.47583122,25.4651163 L8.0362015,25.3421929 L7.86556129,22.255044 L7.71929825,17.6970339 L7.71929825,14.0211467 L7.86556129,10.1739544 L8.00005604,7.80887484 L8.30491081,7.6744186 L9.94042303,7.6744186 Z M18.0105985,7.6744186 L18.3034047,7.82153285 L18.449948,10.1739544 L18.5964912,13.9963932 L18.5964912,17.6725617 L18.449948,22.255044 L18.425851,25.3421929 L18.0105985,25.4651163 L16.5460067,25.4651163 L16.1066571,25.3421929 L15.9357367,22.255044 L15.7894737,17.6970339 L15.7894737,14.0211467 L15.9357367,10.1739544 L16.0702315,7.80887484 L16.3753664,7.6744186 L18.0105985,7.6744186 Z M25.6140351,4.53488372 L25.6140351,6.97674419 L1.05263158,6.97674419 L1.05263158,4.53488372 L25.6140351,4.53488372 Z M13.0806755,0 L25.9649123,2.93331338 L25.4484139,3.8372093 L0.771925248,3.8372093 L0,3.1041615 L13.0806755,0 Z\"\n id=\"path-1\"\n ></path>\n </mask>\n <use fill=\"#FFFFFF\" xlink:href=\"#path-1\"></use>\n <g mask=\"url(#mask-2)\" fill=\"#FFFFFF\">\n <path\n d=\"M0,0 L26.6666667,0 L26.6666667,30 L0,30 L0,0 Z\"\n id=\"swatch\"\n ></path>\n </g>\n </g>\n </svg>\n`;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").TemplateResult<1>;
2
+ export default _default;
3
+ //# sourceMappingURL=icon-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-images.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/ia-topnav/assets/img/icon-images.ts"],"names":[],"mappings":";AAEA,wBAgBE"}