@internetarchive/elements 0.2.14-webdev-8969.0 → 0.2.14-webdev-9022.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/README.md +20 -0
  2. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts +147 -0
  3. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -0
  4. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +533 -0
  5. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -0
  6. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts +22 -0
  7. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -0
  8. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +145 -0
  9. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -0
  10. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts +44 -0
  11. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -0
  12. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +213 -0
  13. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -0
  14. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.d.ts +79 -0
  15. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.d.ts.map +1 -0
  16. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js +254 -0
  17. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js.map +1 -0
  18. package/dist/src/elements/ia-image-viewer/models.d.ts +20 -0
  19. package/dist/src/elements/ia-image-viewer/models.d.ts.map +1 -0
  20. package/dist/src/elements/ia-image-viewer/models.js.map +1 -0
  21. package/dist/src/elements/ia-item-navigator/ia-item-navigator.d.ts +97 -0
  22. package/dist/src/elements/ia-item-navigator/ia-item-navigator.d.ts.map +1 -0
  23. package/dist/src/elements/ia-item-navigator/ia-item-navigator.js +588 -0
  24. package/dist/src/elements/ia-item-navigator/ia-item-navigator.js.map +1 -0
  25. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-button.d.ts +39 -0
  26. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-button.d.ts.map +1 -0
  27. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-button.js +249 -0
  28. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-button.js.map +1 -0
  29. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-slider.d.ts +55 -0
  30. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-slider.d.ts.map +1 -0
  31. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-slider.js +394 -0
  32. package/dist/src/elements/ia-item-navigator/ia-itemnav-menu-slider.js.map +1 -0
  33. package/dist/src/elements/ia-item-navigator/ia-itemnav-no-theater-available.d.ts +20 -0
  34. package/dist/src/elements/ia-item-navigator/ia-itemnav-no-theater-available.d.ts.map +1 -0
  35. package/dist/src/elements/ia-item-navigator/ia-itemnav-no-theater-available.js +102 -0
  36. package/dist/src/elements/ia-item-navigator/ia-itemnav-no-theater-available.js.map +1 -0
  37. package/dist/src/elements/ia-item-navigator/icons/collapse-sidebar.svg +7 -0
  38. package/dist/src/elements/ia-item-navigator/icons/ellipses.svg +7 -0
  39. package/dist/src/elements/ia-item-navigator/icons.d.ts +13 -0
  40. package/dist/src/elements/ia-item-navigator/icons.d.ts.map +1 -0
  41. package/dist/src/elements/ia-item-navigator/icons.js +16 -0
  42. package/dist/src/elements/ia-item-navigator/icons.js.map +1 -0
  43. package/dist/src/elements/ia-item-navigator/interfaces/event-interfaces.d.ts +41 -0
  44. package/dist/src/elements/ia-item-navigator/interfaces/event-interfaces.d.ts.map +1 -0
  45. package/dist/src/elements/ia-item-navigator/interfaces/event-interfaces.js +2 -0
  46. package/dist/src/elements/ia-item-navigator/interfaces/event-interfaces.js.map +1 -0
  47. package/dist/src/elements/ia-item-navigator/interfaces/menu-interfaces.d.ts +23 -0
  48. package/dist/src/elements/ia-item-navigator/interfaces/menu-interfaces.d.ts.map +1 -0
  49. package/dist/src/elements/ia-item-navigator/interfaces/menu-interfaces.js +2 -0
  50. package/dist/src/elements/ia-item-navigator/interfaces/menu-interfaces.js.map +1 -0
  51. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-share-panel.d.ts +47 -0
  52. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-share-panel.d.ts.map +1 -0
  53. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-share-panel.js +352 -0
  54. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-share-panel.js.map +1 -0
  55. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-sort-files-button.d.ts +22 -0
  56. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-sort-files-button.d.ts.map +1 -0
  57. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-sort-files-button.js +137 -0
  58. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-sort-files-button.js.map +1 -0
  59. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-viewable-files-panel.d.ts +40 -0
  60. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-viewable-files-panel.d.ts.map +1 -0
  61. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-viewable-files-panel.js +217 -0
  62. package/dist/src/elements/ia-item-navigator/menus/ia-itemnav-viewable-files-panel.js.map +1 -0
  63. package/dist/src/elements/ia-item-navigator/menus/icons/email.svg +6 -0
  64. package/dist/src/elements/ia-item-navigator/menus/icons/facebook.svg +6 -0
  65. package/dist/src/elements/ia-item-navigator/menus/icons/link.svg +6 -0
  66. package/dist/src/elements/ia-item-navigator/menus/icons/list.svg +3 -0
  67. package/dist/src/elements/ia-item-navigator/menus/icons/pinterest.svg +6 -0
  68. package/dist/src/elements/ia-item-navigator/menus/icons/share.svg +6 -0
  69. package/dist/src/elements/ia-item-navigator/menus/icons/sort-asc.svg +22 -0
  70. package/dist/src/elements/ia-item-navigator/menus/icons/sort-desc.svg +21 -0
  71. package/dist/src/elements/ia-item-navigator/menus/icons/sort-neutral.svg +13 -0
  72. package/dist/src/elements/ia-item-navigator/menus/icons/tumblr.svg +6 -0
  73. package/dist/src/elements/ia-item-navigator/menus/icons/twitter.svg +6 -0
  74. package/dist/src/elements/ia-item-navigator/menus/icons/viewable-files.svg +6 -0
  75. package/dist/src/elements/ia-item-navigator/menus/models.d.ts +17 -0
  76. package/dist/src/elements/ia-item-navigator/menus/models.d.ts.map +1 -0
  77. package/dist/src/elements/ia-item-navigator/menus/models.js.map +1 -0
  78. package/dist/src/elements/ia-item-navigator/menus/share-icons.d.ts +16 -0
  79. package/dist/src/elements/ia-item-navigator/menus/share-icons.d.ts.map +1 -0
  80. package/dist/src/elements/ia-item-navigator/menus/share-icons.js +23 -0
  81. package/dist/src/elements/ia-item-navigator/menus/share-icons.js.map +1 -0
  82. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +51 -5
  83. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
  84. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +156 -16
  85. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
  86. package/dist/src/elements/ia-status-indicator/icons/audio.svg +5 -0
  87. package/dist/src/elements/ia-status-indicator/icons/collection.svg +5 -0
  88. package/dist/src/elements/ia-status-indicator/icons/etree.svg +5 -0
  89. package/dist/src/elements/ia-status-indicator/icons/images.svg +6 -0
  90. package/dist/src/elements/ia-status-indicator/icons/search.svg +10 -0
  91. package/dist/src/elements/ia-status-indicator/icons/software.svg +6 -0
  92. package/dist/src/elements/ia-status-indicator/icons/texts.svg +6 -0
  93. package/dist/src/elements/ia-status-indicator/icons/tv.svg +5 -0
  94. package/dist/src/elements/ia-status-indicator/icons/video.svg +6 -0
  95. package/dist/src/elements/ia-status-indicator/icons/web.svg +6 -0
  96. package/dist/src/elements/index.d.ts +5 -27
  97. package/dist/src/elements/index.d.ts.map +1 -1
  98. package/dist/src/elements/index.js +5 -27
  99. package/dist/src/elements/index.js.map +1 -1
  100. package/dist/src/util/masked-icon.d.ts +24 -0
  101. package/dist/src/util/masked-icon.d.ts.map +1 -0
  102. package/dist/src/util/masked-icon.js +30 -0
  103. package/dist/src/util/masked-icon.js.map +1 -0
  104. package/dist/src/util/prefers-reduced-motion.d.ts +10 -0
  105. package/dist/src/util/prefers-reduced-motion.d.ts.map +1 -0
  106. package/dist/src/util/prefers-reduced-motion.js +12 -0
  107. package/dist/src/util/prefers-reduced-motion.js.map +1 -0
  108. package/package.json +1 -1
  109. package/dist/src/elements/ia-audio-element/ia-audio-element.d.ts +0 -72
  110. package/dist/src/elements/ia-audio-element/ia-audio-element.d.ts.map +0 -1
  111. package/dist/src/elements/ia-audio-element/ia-audio-element.js +0 -173
  112. package/dist/src/elements/ia-audio-element/ia-audio-element.js.map +0 -1
  113. package/dist/src/elements/ia-audio-element/models.d.ts +0 -13
  114. package/dist/src/elements/ia-audio-element/models.d.ts.map +0 -1
  115. package/dist/src/elements/ia-audio-element/models.js.map +0 -1
  116. package/dist/src/elements/ia-expandable-search-bar/assets/clear-results.d.ts +0 -3
  117. package/dist/src/elements/ia-expandable-search-bar/assets/clear-results.d.ts.map +0 -1
  118. package/dist/src/elements/ia-expandable-search-bar/assets/clear-results.js +0 -28
  119. package/dist/src/elements/ia-expandable-search-bar/assets/clear-results.js.map +0 -1
  120. package/dist/src/elements/ia-expandable-search-bar/assets/disclosure.d.ts +0 -3
  121. package/dist/src/elements/ia-expandable-search-bar/assets/disclosure.d.ts.map +0 -1
  122. package/dist/src/elements/ia-expandable-search-bar/assets/disclosure.js +0 -26
  123. package/dist/src/elements/ia-expandable-search-bar/assets/disclosure.js.map +0 -1
  124. package/dist/src/elements/ia-expandable-search-bar/assets/magnifying-glass.d.ts +0 -3
  125. package/dist/src/elements/ia-expandable-search-bar/assets/magnifying-glass.d.ts.map +0 -1
  126. package/dist/src/elements/ia-expandable-search-bar/assets/magnifying-glass.js +0 -22
  127. package/dist/src/elements/ia-expandable-search-bar/assets/magnifying-glass.js.map +0 -1
  128. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +0 -53
  129. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +0 -1
  130. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +0 -352
  131. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +0 -1
  132. package/dist/src/elements/ia-expandable-search-bar/ia-quick-search.d.ts +0 -19
  133. package/dist/src/elements/ia-expandable-search-bar/ia-quick-search.d.ts.map +0 -1
  134. package/dist/src/elements/ia-expandable-search-bar/ia-quick-search.js +0 -115
  135. package/dist/src/elements/ia-expandable-search-bar/ia-quick-search.js.map +0 -1
  136. package/dist/src/elements/ia-expandable-search-bar/models.d.ts +0 -13
  137. package/dist/src/elements/ia-expandable-search-bar/models.d.ts.map +0 -1
  138. package/dist/src/elements/ia-expandable-search-bar/models.js.map +0 -1
  139. package/dist/src/elements/ia-playback-controls/assets/next-section.d.ts +0 -3
  140. package/dist/src/elements/ia-playback-controls/assets/next-section.d.ts.map +0 -1
  141. package/dist/src/elements/ia-playback-controls/assets/next-section.js +0 -16
  142. package/dist/src/elements/ia-playback-controls/assets/next-section.js.map +0 -1
  143. package/dist/src/elements/ia-playback-controls/assets/pause.d.ts +0 -3
  144. package/dist/src/elements/ia-playback-controls/assets/pause.d.ts.map +0 -1
  145. package/dist/src/elements/ia-playback-controls/assets/pause.js +0 -17
  146. package/dist/src/elements/ia-playback-controls/assets/pause.js.map +0 -1
  147. package/dist/src/elements/ia-playback-controls/assets/play.d.ts +0 -3
  148. package/dist/src/elements/ia-playback-controls/assets/play.d.ts.map +0 -1
  149. package/dist/src/elements/ia-playback-controls/assets/play.js +0 -18
  150. package/dist/src/elements/ia-playback-controls/assets/play.js.map +0 -1
  151. package/dist/src/elements/ia-playback-controls/assets/playback-speed.d.ts +0 -3
  152. package/dist/src/elements/ia-playback-controls/assets/playback-speed.d.ts.map +0 -1
  153. package/dist/src/elements/ia-playback-controls/assets/playback-speed.js +0 -28
  154. package/dist/src/elements/ia-playback-controls/assets/playback-speed.js.map +0 -1
  155. package/dist/src/elements/ia-playback-controls/assets/previous-section.d.ts +0 -3
  156. package/dist/src/elements/ia-playback-controls/assets/previous-section.d.ts.map +0 -1
  157. package/dist/src/elements/ia-playback-controls/assets/previous-section.js +0 -16
  158. package/dist/src/elements/ia-playback-controls/assets/previous-section.js.map +0 -1
  159. package/dist/src/elements/ia-playback-controls/assets/replay.d.ts +0 -3
  160. package/dist/src/elements/ia-playback-controls/assets/replay.d.ts.map +0 -1
  161. package/dist/src/elements/ia-playback-controls/assets/replay.js +0 -28
  162. package/dist/src/elements/ia-playback-controls/assets/replay.js.map +0 -1
  163. package/dist/src/elements/ia-playback-controls/assets/skip-ahead.d.ts +0 -3
  164. package/dist/src/elements/ia-playback-controls/assets/skip-ahead.d.ts.map +0 -1
  165. package/dist/src/elements/ia-playback-controls/assets/skip-ahead.js +0 -29
  166. package/dist/src/elements/ia-playback-controls/assets/skip-ahead.js.map +0 -1
  167. package/dist/src/elements/ia-playback-controls/assets/volume-full.d.ts +0 -3
  168. package/dist/src/elements/ia-playback-controls/assets/volume-full.d.ts.map +0 -1
  169. package/dist/src/elements/ia-playback-controls/assets/volume-full.js +0 -19
  170. package/dist/src/elements/ia-playback-controls/assets/volume-full.js.map +0 -1
  171. package/dist/src/elements/ia-playback-controls/assets/volume-medium.d.ts +0 -3
  172. package/dist/src/elements/ia-playback-controls/assets/volume-medium.d.ts.map +0 -1
  173. package/dist/src/elements/ia-playback-controls/assets/volume-medium.js +0 -24
  174. package/dist/src/elements/ia-playback-controls/assets/volume-medium.js.map +0 -1
  175. package/dist/src/elements/ia-playback-controls/assets/volume-mute.d.ts +0 -3
  176. package/dist/src/elements/ia-playback-controls/assets/volume-mute.d.ts.map +0 -1
  177. package/dist/src/elements/ia-playback-controls/assets/volume-mute.js +0 -35
  178. package/dist/src/elements/ia-playback-controls/assets/volume-mute.js.map +0 -1
  179. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts +0 -57
  180. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +0 -1
  181. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +0 -320
  182. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +0 -1
  183. package/dist/src/elements/ia-playback-controls/models.d.ts +0 -13
  184. package/dist/src/elements/ia-playback-controls/models.d.ts.map +0 -1
  185. package/dist/src/elements/ia-playback-controls/models.js +0 -12
  186. package/dist/src/elements/ia-playback-controls/models.js.map +0 -1
  187. package/dist/src/elements/ia-radio-player/assets/next-result.d.ts +0 -3
  188. package/dist/src/elements/ia-radio-player/assets/next-result.d.ts.map +0 -1
  189. package/dist/src/elements/ia-radio-player/assets/next-result.js +0 -27
  190. package/dist/src/elements/ia-radio-player/assets/next-result.js.map +0 -1
  191. package/dist/src/elements/ia-radio-player/assets/previous-result.d.ts +0 -3
  192. package/dist/src/elements/ia-radio-player/assets/previous-result.d.ts.map +0 -1
  193. package/dist/src/elements/ia-radio-player/assets/previous-result.js +0 -27
  194. package/dist/src/elements/ia-radio-player/assets/previous-result.js.map +0 -1
  195. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -130
  196. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +0 -1
  197. package/dist/src/elements/ia-radio-player/ia-radio-player.js +0 -748
  198. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +0 -1
  199. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts +0 -22
  200. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +0 -1
  201. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +0 -137
  202. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +0 -1
  203. package/dist/src/elements/ia-radio-player/models.d.ts +0 -29
  204. package/dist/src/elements/ia-radio-player/models.d.ts.map +0 -1
  205. package/dist/src/elements/ia-radio-player/models.js +0 -2
  206. package/dist/src/elements/ia-radio-player/models.js.map +0 -1
  207. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-backend.d.ts +0 -38
  208. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-backend.d.ts.map +0 -1
  209. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-backend.js +0 -64
  210. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-backend.js.map +0 -1
  211. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-response.d.ts +0 -94
  212. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-response.d.ts.map +0 -1
  213. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-response.js +0 -56
  214. package/dist/src/elements/ia-radio-player/search/backends/full-text-search-response.js.map +0 -1
  215. package/dist/src/elements/ia-radio-player/search/backends/local-search-backend.d.ts +0 -15
  216. package/dist/src/elements/ia-radio-player/search/backends/local-search-backend.d.ts.map +0 -1
  217. package/dist/src/elements/ia-radio-player/search/backends/local-search-backend.js +0 -26
  218. package/dist/src/elements/ia-radio-player/search/backends/local-search-backend.js.map +0 -1
  219. package/dist/src/elements/ia-radio-player/search/backends/search-backend.d.ts +0 -12
  220. package/dist/src/elements/ia-radio-player/search/backends/search-backend.d.ts.map +0 -1
  221. package/dist/src/elements/ia-radio-player/search/backends/search-backend.js +0 -2
  222. package/dist/src/elements/ia-radio-player/search/backends/search-backend.js.map +0 -1
  223. package/dist/src/elements/ia-radio-player/search/models.d.ts +0 -38
  224. package/dist/src/elements/ia-radio-player/search/models.d.ts.map +0 -1
  225. package/dist/src/elements/ia-radio-player/search/models.js +0 -17
  226. package/dist/src/elements/ia-radio-player/search/models.js.map +0 -1
  227. package/dist/src/elements/ia-radio-player/search/search-handler.d.ts +0 -49
  228. package/dist/src/elements/ia-radio-player/search/search-handler.d.ts.map +0 -1
  229. package/dist/src/elements/ia-radio-player/search/search-handler.js +0 -128
  230. package/dist/src/elements/ia-radio-player/search/search-handler.js.map +0 -1
  231. package/dist/src/elements/ia-radio-player/search/search-helper.d.ts +0 -9
  232. package/dist/src/elements/ia-radio-player/search/search-helper.d.ts.map +0 -1
  233. package/dist/src/elements/ia-radio-player/search/search-helper.js +0 -15
  234. package/dist/src/elements/ia-radio-player/search/search-helper.js.map +0 -1
  235. package/dist/src/elements/ia-radio-player/search/transcript-index.d.ts +0 -45
  236. package/dist/src/elements/ia-radio-player/search/transcript-index.d.ts.map +0 -1
  237. package/dist/src/elements/ia-radio-player/search/transcript-index.js +0 -48
  238. package/dist/src/elements/ia-radio-player/search/transcript-index.js.map +0 -1
  239. package/dist/src/elements/ia-scrubber-bar/assets/next-section-marker.d.ts +0 -3
  240. package/dist/src/elements/ia-scrubber-bar/assets/next-section-marker.d.ts.map +0 -1
  241. package/dist/src/elements/ia-scrubber-bar/assets/next-section-marker.js +0 -18
  242. package/dist/src/elements/ia-scrubber-bar/assets/next-section-marker.js.map +0 -1
  243. package/dist/src/elements/ia-scrubber-bar/assets/previous-section-marker.d.ts +0 -3
  244. package/dist/src/elements/ia-scrubber-bar/assets/previous-section-marker.d.ts.map +0 -1
  245. package/dist/src/elements/ia-scrubber-bar/assets/previous-section-marker.js +0 -18
  246. package/dist/src/elements/ia-scrubber-bar/assets/previous-section-marker.js.map +0 -1
  247. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +0 -82
  248. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +0 -1
  249. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +0 -387
  250. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +0 -1
  251. package/dist/src/elements/ia-scrubber-bar/ia-section-marker.d.ts +0 -16
  252. package/dist/src/elements/ia-scrubber-bar/ia-section-marker.d.ts.map +0 -1
  253. package/dist/src/elements/ia-scrubber-bar/ia-section-marker.js +0 -109
  254. package/dist/src/elements/ia-scrubber-bar/ia-section-marker.js.map +0 -1
  255. package/dist/src/elements/ia-scrubber-bar/models.d.ts +0 -21
  256. package/dist/src/elements/ia-scrubber-bar/models.d.ts.map +0 -1
  257. package/dist/src/elements/ia-scrubber-bar/models.js +0 -20
  258. package/dist/src/elements/ia-scrubber-bar/models.js.map +0 -1
  259. package/dist/src/elements/ia-transcript-view/duration-formatter.d.ts +0 -13
  260. package/dist/src/elements/ia-transcript-view/duration-formatter.d.ts.map +0 -1
  261. package/dist/src/elements/ia-transcript-view/duration-formatter.js +0 -25
  262. package/dist/src/elements/ia-transcript-view/duration-formatter.js.map +0 -1
  263. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts +0 -25
  264. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +0 -1
  265. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +0 -51
  266. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +0 -1
  267. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts +0 -81
  268. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +0 -1
  269. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +0 -546
  270. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +0 -1
  271. package/dist/src/elements/ia-transcript-view/models.d.ts +0 -34
  272. package/dist/src/elements/ia-transcript-view/models.d.ts.map +0 -1
  273. package/dist/src/elements/ia-transcript-view/models.js +0 -38
  274. package/dist/src/elements/ia-transcript-view/models.js.map +0 -1
  275. package/dist/src/elements/ia-waveform-progress/ia-waveform-progress.d.ts +0 -62
  276. package/dist/src/elements/ia-waveform-progress/ia-waveform-progress.d.ts.map +0 -1
  277. package/dist/src/elements/ia-waveform-progress/ia-waveform-progress.js +0 -217
  278. package/dist/src/elements/ia-waveform-progress/ia-waveform-progress.js.map +0 -1
  279. package/dist/src/elements/ia-waveform-progress/models.d.ts +0 -13
  280. package/dist/src/elements/ia-waveform-progress/models.d.ts.map +0 -1
  281. package/dist/src/elements/ia-waveform-progress/models.js +0 -2
  282. package/dist/src/elements/ia-waveform-progress/models.js.map +0 -1
  283. /package/dist/src/elements/{ia-audio-element → ia-image-viewer}/models.js +0 -0
  284. /package/dist/src/elements/{ia-expandable-search-bar → ia-item-navigator/menus}/models.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"ia-scrubber-bar.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAMb,OAAO,qBAAqB,CAAC;AAuC7B;;;GAGG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,2CAA2C;IACf,KAAK,SAAK;IAEtC,iDAAiD;IACrB,GAAG,SAAK;IAEpC,kDAAkD;IACtB,GAAG,SAAO;IAEtC,2CAA2C;IACf,IAAI,SAAO;IAEvC,oEAAoE;IACzC,wBAAwB,EAAE,MAAM,EAAE,CAAM;IAEnE,uEAAuE;IAC1C,oBAAoB,UAAS;IAE1D,yCAAyC;IACb,KAAK,SAA4B;IAE7D;;;;;;OAMG;IACM,OAAO,CAAC,YAAY,CAAK;IAElC,OAAO,CAAC,iBAAiB,CAAS;IAElC,+DAA+D;IAC/D,IAAI,UAAU,IAAI,MAAM,CAKvB;IAED,MAAM,IAAI,cAAc;IA0CxB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAMhD;;;;;OAKG;IACH,OAAO,KAAK,kBAAkB,GAS7B;IAED;;;;;;OAMG;IACH,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAMlB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAKxB,MAAM,KAAK,MAAM,IAAI,cAAc,CAiKlC;CACF"}
@@ -1,387 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement, } from 'lit';
3
- import { customElement, property, state } from 'lit/decorators.js';
4
- import { msg } from '@lit/localize';
5
- import { SectionMarkerMode } from './models.js';
6
- import './ia-section-marker.js';
7
- /**
8
- * Event names emitted by this component
9
- */
10
- const Events = {
11
- ValueChange: 'valuechange',
12
- UserInteractionStarted: 'userInteractionStarted',
13
- UserInteractionEnded: 'userInteractionEnded',
14
- };
15
- /**
16
- * The keys that move a range input.
17
- *
18
- * Only these count as scrubbing. Tab in particular must not, since it takes
19
- * focus away and its keyup lands on whatever it moved to, never here.
20
- */
21
- const VALUE_KEYS = new Set([
22
- 'ArrowLeft',
23
- 'ArrowRight',
24
- 'ArrowUp',
25
- 'ArrowDown',
26
- 'Home',
27
- 'End',
28
- 'PageUp',
29
- 'PageDown',
30
- ]);
31
- /**
32
- * A range slider styled as a playback scrubber, with optional section markers
33
- * laid over the track.
34
- */
35
- let IAScrubberBar = class IAScrubberBar extends LitElement {
36
- constructor() {
37
- super(...arguments);
38
- /** The current position along the track */
39
- this.value = 0;
40
- /** The lowest position the scrubber can reach */
41
- this.min = 0;
42
- /** The highest position the scrubber can reach */
43
- this.max = 100;
44
- /** How finely the scrubber can be moved */
45
- this.step = 0.1;
46
- /** Where to draw section boundaries, as percentages of the track */
47
- this.sectionMarkerPercentages = [];
48
- /** Whether the markers either side of the playhead point towards it */
49
- this.expandSectionMarkers = false;
50
- /** The accessible name for the slider */
51
- this.label = msg('Playback position');
52
- /**
53
- * The position actually shown.
54
- *
55
- * `value` is driven from outside by whatever is playing the audio, but while
56
- * the listener is scrubbing their position wins. Keeping the two apart is
57
- * what stops playback updates fighting the drag.
58
- */
59
- this.currentValue = 0;
60
- this.userIsInteracting = false;
61
- }
62
- /** How far along the track the playhead is, as a percentage */
63
- get percentage() {
64
- const range = this.max - this.min;
65
- if (range === 0)
66
- return 0;
67
- return ((this.currentValue - this.min) / range) * 100;
68
- }
69
- render() {
70
- const surrounding = this.surroundingMarkers;
71
- return html `
72
- <div class="container" style="--fill-percent--: ${this.percentage}%">
73
- <div class="color-fill"></div>
74
-
75
- <div class="marker-container">
76
- ${this.sectionMarkerPercentages.map((markerPercent) => html `
77
- <ia-section-marker
78
- data-location=${markerPercent}
79
- style="left: ${markerPercent}%"
80
- .markerMode=${this.markerModeFor(markerPercent, surrounding)}
81
- ></ia-section-marker>
82
- `)}
83
- </div>
84
-
85
- <input
86
- id="slider"
87
- type="range"
88
- aria-label=${this.label}
89
- min=${this.min}
90
- max=${this.max}
91
- step=${this.step}
92
- .value=${String(this.currentValue)}
93
- @mousedown=${this.interactionStarted}
94
- @mouseup=${this.interactionEnded}
95
- @touchstart=${this.interactionStarted}
96
- @touchend=${this.interactionEnded}
97
- @touchcancel=${this.interactionEnded}
98
- @keydown=${this.handleKeyDown}
99
- @keyup=${this.handleKeyUp}
100
- @blur=${this.handleBlur}
101
- @input=${this.handleSlide}
102
- @change=${this.handleSlide}
103
- />
104
- </div>
105
- `;
106
- }
107
- updated(changedProperties) {
108
- if (this.userIsInteracting || !changedProperties.has('value'))
109
- return;
110
- this.currentValue = this.value;
111
- }
112
- /**
113
- * The section boundaries immediately below and above the playhead.
114
- *
115
- * Returns nothing when the markers aren't meant to react to the playhead, so
116
- * every marker falls back to its resting state.
117
- */
118
- get surroundingMarkers() {
119
- if (!this.expandSectionMarkers)
120
- return {};
121
- const sorted = this.sortedMarkers;
122
- return {
123
- lower: sorted.filter((percent) => percent <= this.currentValue).pop(),
124
- upper: sorted.find((percent) => percent > this.currentValue),
125
- };
126
- }
127
- /**
128
- * The marker percentages in ascending numeric order.
129
- *
130
- * Sorted on a copy with an explicit comparator: the default `sort()` orders
131
- * lexicographically, which puts 100 before 9, and it sorts in place, which
132
- * would reorder the caller's own array.
133
- */
134
- get sortedMarkers() {
135
- return [...this.sectionMarkerPercentages].sort((a, b) => a - b);
136
- }
137
- markerModeFor(markerPercent, surrounding) {
138
- if (markerPercent === surrounding.upper)
139
- return SectionMarkerMode.left;
140
- if (markerPercent === surrounding.lower)
141
- return SectionMarkerMode.right;
142
- return SectionMarkerMode.neither;
143
- }
144
- handleSlide(e) {
145
- this.currentValue = parseFloat(e.target.value);
146
- this.dispatchEvent(new CustomEvent(Events.ValueChange, {
147
- detail: { value: this.currentValue },
148
- }));
149
- }
150
- interactionStarted() {
151
- this.userIsInteracting = true;
152
- this.dispatchEvent(new Event(Events.UserInteractionStarted));
153
- }
154
- /**
155
- * Starts an interaction when the slider is scrubbed from the keyboard.
156
- *
157
- * Without this, arrowing along the bar sets the value but leaves
158
- * `userIsInteracting` false, so the next playback tick snaps the thumb back
159
- * to the playhead mid-scrub.
160
- *
161
- * Guarded against the auto-repeat that holding a key produces, which would
162
- * otherwise emit a fresh `userInteractionStarted` on every repeat.
163
- */
164
- handleKeyDown(e) {
165
- if (!VALUE_KEYS.has(e.key) || this.userIsInteracting)
166
- return;
167
- this.interactionStarted();
168
- }
169
- handleKeyUp(e) {
170
- if (!VALUE_KEYS.has(e.key))
171
- return;
172
- this.interactionEnded();
173
- }
174
- /**
175
- * Releases an interaction that focus left behind.
176
- *
177
- * A keyup can go missing, e.g. focus moves while the key is still down, and
178
- * an interaction left latched on would ignore playback updates for good.
179
- */
180
- handleBlur() {
181
- if (!this.userIsInteracting)
182
- return;
183
- this.interactionEnded();
184
- }
185
- /**
186
- * Ends the interaction.
187
- *
188
- * Bound to `touchcancel` as well as `touchend`, because a touch the system
189
- * takes over never delivers `touchend`, and an interaction left latched on
190
- * would ignore playback updates from then on.
191
- */
192
- interactionEnded() {
193
- this.userIsInteracting = false;
194
- this.dispatchEvent(new Event(Events.UserInteractionEnded));
195
- }
196
- static get styles() {
197
- return css `
198
- :host {
199
- --scrubber-bar-height--: var(--ia-theme-scrubber-bar-height, 20px);
200
- --scrubber-marker-inset--: var(--ia-theme-scrubber-marker-inset, 10px);
201
-
202
- --scrubber-thumb-color--: var(--ia-theme-scrubber-thumb-color, #fff);
203
- --scrubber-thumb-diameter--: var(
204
- --ia-theme-scrubber-thumb-diameter,
205
- 20px
206
- );
207
- --scrubber-thumb-border--: var(
208
- --ia-theme-scrubber-thumb-border,
209
- 1px solid #000
210
- );
211
- --scrubber-thumb-border-radius--: var(
212
- --ia-theme-scrubber-thumb-border-radius,
213
- 50%
214
- );
215
- /*
216
- Centres the thumb on the track. The thumb is content-box, so its
217
- border adds 1px above and below the diameter, hence the extra -1px.
218
- Comes out at -6px for the default track and thumb sizes.
219
- */
220
- --scrubber-thumb-top-margin--: var(
221
- --ia-theme-scrubber-thumb-top-margin,
222
- calc(
223
- (
224
- var(--scrubber-track-height--) - var(
225
- --scrubber-thumb-diameter--
226
- )
227
- ) /
228
- 2 - 1px
229
- )
230
- );
231
-
232
- --scrubber-track-height--: var(--ia-theme-scrubber-track-height, 10px);
233
- --scrubber-track-border--: var(
234
- --ia-theme-scrubber-track-border,
235
- 1px solid #fff
236
- );
237
- --scrubber-track-border-radius--: var(
238
- --ia-theme-scrubber-track-border-radius,
239
- 5px
240
- );
241
- --scrubber-track-color--: var(
242
- --ia-theme-scrubber-track-color,
243
- rgba(0, 0, 0, 0.1)
244
- );
245
- --scrubber-track-fill-color--: var(
246
- --ia-theme-scrubber-track-fill-color,
247
- #3272b6
248
- );
249
-
250
- /*
251
- How far off the bottom the track sits. The fill and the section
252
- markers both line up against this, so they follow the track when its
253
- height is themed. Comes out at 7px for the default sizes.
254
- */
255
- --scrubber-track-offset--: calc(
256
- (var(--scrubber-bar-height--) - var(--scrubber-track-height--)) / 2 +
257
- 2px
258
- );
259
- }
260
-
261
- .container {
262
- position: relative;
263
- height: var(--scrubber-bar-height--);
264
- }
265
-
266
- /*
267
- The fill is a plain element rather than a track pseudo-element, so the
268
- played portion is just a hard gradient stop driven by a custom property.
269
- */
270
- .color-fill {
271
- height: var(--scrubber-track-height--);
272
- border-radius: 1em;
273
- position: absolute;
274
- bottom: var(--scrubber-track-offset--);
275
- left: 2px;
276
- right: -2px;
277
- background: linear-gradient(
278
- to right,
279
- var(--scrubber-track-fill-color--) 0%,
280
- var(--scrubber-track-fill-color--) var(--fill-percent--),
281
- var(--scrubber-track-color--) var(--fill-percent--),
282
- var(--scrubber-track-color--) 100%
283
- );
284
- }
285
-
286
- .marker-container {
287
- position: absolute;
288
- left: var(--scrubber-marker-inset--);
289
- right: var(--scrubber-marker-inset--);
290
- height: 100%;
291
- }
292
-
293
- ia-section-marker {
294
- position: absolute;
295
- width: 2rem;
296
- height: var(--scrubber-track-height--);
297
- bottom: var(--scrubber-track-offset--);
298
- /*
299
- The left offset puts the marker where it belongs, but the divider runs
300
- down the middle of the marker, so it shifts back by half its own width
301
- to line the divider up with that point.
302
- */
303
- transform: translateX(-50%);
304
- }
305
-
306
- input[type='range'] {
307
- -webkit-appearance: none;
308
- appearance: none;
309
- height: var(--scrubber-bar-height--);
310
- padding: 0;
311
- width: 100%;
312
- background: none;
313
- outline: none;
314
- position: absolute;
315
- bottom: 0;
316
- }
317
-
318
- input[type='range']::-webkit-slider-thumb {
319
- -webkit-appearance: none;
320
- appearance: none;
321
- box-sizing: content-box;
322
- margin-top: var(--scrubber-thumb-top-margin--);
323
- background-color: var(--scrubber-thumb-color--);
324
- height: var(--scrubber-thumb-diameter--);
325
- width: var(--scrubber-thumb-diameter--);
326
- border-radius: var(--scrubber-thumb-border-radius--);
327
- border: var(--scrubber-thumb-border--);
328
- cursor: pointer;
329
- }
330
-
331
- input[type='range']::-moz-range-thumb {
332
- background-color: var(--scrubber-thumb-color--);
333
- height: var(--scrubber-thumb-diameter--);
334
- width: var(--scrubber-thumb-diameter--);
335
- border-radius: var(--scrubber-thumb-border-radius--);
336
- border: var(--scrubber-thumb-border--);
337
- cursor: pointer;
338
- }
339
-
340
- input[type='range']::-webkit-slider-runnable-track {
341
- border: var(--scrubber-track-border--);
342
- height: var(--scrubber-track-height--);
343
- border-radius: var(--scrubber-track-border-radius--);
344
- }
345
-
346
- input[type='range']::-moz-range-track {
347
- border: var(--scrubber-track-border--);
348
- height: var(--scrubber-track-height--);
349
- border-radius: var(--scrubber-track-border-radius--);
350
- }
351
-
352
- input[type='range']::-moz-range-progress {
353
- height: var(--scrubber-track-height--);
354
- border-radius: var(--scrubber-track-border-radius--);
355
- }
356
- `;
357
- }
358
- };
359
- __decorate([
360
- property({ type: Number })
361
- ], IAScrubberBar.prototype, "value", void 0);
362
- __decorate([
363
- property({ type: Number })
364
- ], IAScrubberBar.prototype, "min", void 0);
365
- __decorate([
366
- property({ type: Number })
367
- ], IAScrubberBar.prototype, "max", void 0);
368
- __decorate([
369
- property({ type: Number })
370
- ], IAScrubberBar.prototype, "step", void 0);
371
- __decorate([
372
- property({ type: Array })
373
- ], IAScrubberBar.prototype, "sectionMarkerPercentages", void 0);
374
- __decorate([
375
- property({ type: Boolean })
376
- ], IAScrubberBar.prototype, "expandSectionMarkers", void 0);
377
- __decorate([
378
- property({ type: String })
379
- ], IAScrubberBar.prototype, "label", void 0);
380
- __decorate([
381
- state()
382
- ], IAScrubberBar.prototype, "currentValue", void 0);
383
- IAScrubberBar = __decorate([
384
- customElement('ia-scrubber-bar')
385
- ], IAScrubberBar);
386
- export { IAScrubberBar };
387
- //# sourceMappingURL=ia-scrubber-bar.js.map
@@ -1 +0,0 @@
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 { customElement, property, state } from 'lit/decorators.js';\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,16 +0,0 @@
1
- import { LitElement, type CSSResultGroup, type TemplateResult } from 'lit';
2
- import { SectionMarkerMode } from './models.js';
3
- /**
4
- * A single section boundary drawn on the scrubber bar.
5
- *
6
- * It's a vertical divider with an arrow either side. `markerMode` decides
7
- * which arrows show, so the two markers surrounding the playhead can point
8
- * towards the section the listener would land in.
9
- */
10
- export declare class IASectionMarker extends LitElement {
11
- /** Which arrows to reveal */
12
- markerMode: SectionMarkerMode;
13
- render(): TemplateResult;
14
- static get styles(): CSSResultGroup;
15
- }
16
- //# sourceMappingURL=ia-section-marker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ia-section-marker.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-section-marker.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK7C;;;;;;GAMG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,6BAA6B;IACD,UAAU,EAAE,iBAAiB,CAC7B;IAE5B,MAAM,IAAI,cAAc;IAUxB,MAAM,KAAK,MAAM,IAAI,cAAc,CAuElC;CACF"}
@@ -1,109 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement, } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { SectionMarkerMode } from './models.js';
5
- import nextSectionIcon from './assets/next-section-marker.js';
6
- import previousSectionIcon from './assets/previous-section-marker.js';
7
- /**
8
- * A single section boundary drawn on the scrubber bar.
9
- *
10
- * It's a vertical divider with an arrow either side. `markerMode` decides
11
- * which arrows show, so the two markers surrounding the playhead can point
12
- * towards the section the listener would land in.
13
- */
14
- let IASectionMarker = class IASectionMarker extends LitElement {
15
- constructor() {
16
- super(...arguments);
17
- /** Which arrows to reveal */
18
- this.markerMode = SectionMarkerMode.neither;
19
- }
20
- render() {
21
- return html `
22
- <div class="container mode-${this.markerMode}">
23
- <div class="left-arrow arrow">${nextSectionIcon}</div>
24
- <div class="center-divider"></div>
25
- <div class="right-arrow arrow">${previousSectionIcon}</div>
26
- </div>
27
- `;
28
- }
29
- static get styles() {
30
- return css `
31
- :host {
32
- --section-marker-color--: var(--ia-theme-scrubber-marker-color, #fff);
33
- /*
34
- Relative to the marker, which the scrubber sizes to the track, so a
35
- collapsed divider is exactly as tall as the track it sits on and an
36
- expanded one stands proportionally above it. A fixed pixel height
37
- here only lines up at one track height.
38
- */
39
- --section-marker-height-collapsed--: var(
40
- --ia-theme-scrubber-marker-height-collapsed,
41
- 100%
42
- );
43
- --section-marker-height-expanded--: var(
44
- --ia-theme-scrubber-marker-height-expanded,
45
- 250%
46
- );
47
- --section-marker-animation-speed--: 0.1s;
48
-
49
- color: var(--section-marker-color--);
50
- }
51
-
52
- .container {
53
- display: flex;
54
- justify-content: center;
55
- height: 100%;
56
- }
57
-
58
- .arrow {
59
- padding-top: 10px;
60
- opacity: 1;
61
- /*
62
- The arrows are hidden in every mode. The mode rules below vary only
63
- opacity, which cannot reveal a hidden element, so nothing here brings
64
- them back. Reveal them by dropping this line, not by touching the
65
- mode rules.
66
- */
67
- visibility: hidden;
68
- transition:
69
- opacity var(--section-marker-animation-speed--) ease-out,
70
- padding-top var(--section-marker-animation-speed--) ease-out;
71
- }
72
-
73
- .container.mode-left .right-arrow {
74
- opacity: 0;
75
- }
76
-
77
- .container.mode-right .left-arrow {
78
- opacity: 0;
79
- }
80
-
81
- .container.mode-neither .left-arrow,
82
- .container.mode-neither .right-arrow {
83
- opacity: 0;
84
- padding-top: 75%;
85
- }
86
-
87
- .container.mode-neither .center-divider {
88
- height: var(--section-marker-height-collapsed--);
89
- }
90
-
91
- .center-divider {
92
- border-left: 1px solid currentColor;
93
- width: 1px;
94
- left: 50%;
95
- height: var(--section-marker-height-expanded--);
96
- align-self: flex-end;
97
- transition: height var(--section-marker-animation-speed--) ease-out;
98
- }
99
- `;
100
- }
101
- };
102
- __decorate([
103
- property({ type: String })
104
- ], IASectionMarker.prototype, "markerMode", void 0);
105
- IASectionMarker = __decorate([
106
- customElement('ia-section-marker')
107
- ], IASectionMarker);
108
- export { IASectionMarker };
109
- //# sourceMappingURL=ia-section-marker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ia-section-marker.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-section-marker.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,GAGX,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAAxC;;QACL,6BAA6B;QACD,eAAU,GACpC,iBAAiB,CAAC,OAAO,CAAC;IAoF9B,CAAC;IAlFC,MAAM;QACJ,OAAO,IAAI,CAAA;mCACoB,IAAI,CAAC,UAAU;wCACV,eAAe;;yCAEd,mBAAmB;;KAEvD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqET,CAAC;IACJ,CAAC;CACF,CAAA;AArF6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACC;AAHjB,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAuF3B","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { SectionMarkerMode } from './models';\n\nimport nextSectionIcon from './assets/next-section-marker';\nimport previousSectionIcon from './assets/previous-section-marker';\n\n/**\n * A single section boundary drawn on the scrubber bar.\n *\n * It's a vertical divider with an arrow either side. `markerMode` decides\n * which arrows show, so the two markers surrounding the playhead can point\n * towards the section the listener would land in.\n */\n@customElement('ia-section-marker')\nexport class IASectionMarker extends LitElement {\n /** Which arrows to reveal */\n @property({ type: String }) markerMode: SectionMarkerMode =\n SectionMarkerMode.neither;\n\n render(): TemplateResult {\n return html`\n <div class=\"container mode-${this.markerMode}\">\n <div class=\"left-arrow arrow\">${nextSectionIcon}</div>\n <div class=\"center-divider\"></div>\n <div class=\"right-arrow arrow\">${previousSectionIcon}</div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --section-marker-color--: var(--ia-theme-scrubber-marker-color, #fff);\n /*\n Relative to the marker, which the scrubber sizes to the track, so a\n collapsed divider is exactly as tall as the track it sits on and an\n expanded one stands proportionally above it. A fixed pixel height\n here only lines up at one track height.\n */\n --section-marker-height-collapsed--: var(\n --ia-theme-scrubber-marker-height-collapsed,\n 100%\n );\n --section-marker-height-expanded--: var(\n --ia-theme-scrubber-marker-height-expanded,\n 250%\n );\n --section-marker-animation-speed--: 0.1s;\n\n color: var(--section-marker-color--);\n }\n\n .container {\n display: flex;\n justify-content: center;\n height: 100%;\n }\n\n .arrow {\n padding-top: 10px;\n opacity: 1;\n /*\n The arrows are hidden in every mode. The mode rules below vary only\n opacity, which cannot reveal a hidden element, so nothing here brings\n them back. Reveal them by dropping this line, not by touching the\n mode rules.\n */\n visibility: hidden;\n transition:\n opacity var(--section-marker-animation-speed--) ease-out,\n padding-top var(--section-marker-animation-speed--) ease-out;\n }\n\n .container.mode-left .right-arrow {\n opacity: 0;\n }\n\n .container.mode-right .left-arrow {\n opacity: 0;\n }\n\n .container.mode-neither .left-arrow,\n .container.mode-neither .right-arrow {\n opacity: 0;\n padding-top: 75%;\n }\n\n .container.mode-neither .center-divider {\n height: var(--section-marker-height-collapsed--);\n }\n\n .center-divider {\n border-left: 1px solid currentColor;\n width: 1px;\n left: 50%;\n height: var(--section-marker-height-expanded--);\n align-self: flex-end;\n transition: height var(--section-marker-animation-speed--) ease-out;\n }\n `;\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- /**
2
- * Which way a section marker points.
3
- *
4
- * The scrubber sets this on the two markers either side of the playhead, so
5
- * they can hint at the section boundary the listener would jump to.
6
- *
7
- * A const object rather than a TypeScript `enum`, because `erasableSyntaxOnly`
8
- * rules enums out.
9
- */
10
- export declare const SectionMarkerMode: {
11
- /** Points back towards the start of the track. */
12
- readonly left: "left";
13
- /** Points on towards the end of the track. */
14
- readonly right: "right";
15
- /** Points both ways. */
16
- readonly both: "both";
17
- /** Points neither way, the resting state. */
18
- readonly neither: "neither";
19
- };
20
- export type SectionMarkerMode = (typeof SectionMarkerMode)[keyof typeof SectionMarkerMode];
21
- //# sourceMappingURL=models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;IAC5B,kDAAkD;;IAElD,8CAA8C;;IAE9C,wBAAwB;;IAExB,6CAA6C;;CAErC,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Which way a section marker points.
3
- *
4
- * The scrubber sets this on the two markers either side of the playhead, so
5
- * they can hint at the section boundary the listener would jump to.
6
- *
7
- * A const object rather than a TypeScript `enum`, because `erasableSyntaxOnly`
8
- * rules enums out.
9
- */
10
- export const SectionMarkerMode = {
11
- /** Points back towards the start of the track. */
12
- left: 'left',
13
- /** Points on towards the end of the track. */
14
- right: 'right',
15
- /** Points both ways. */
16
- both: 'both',
17
- /** Points neither way, the resting state. */
18
- neither: 'neither',
19
- };
20
- //# sourceMappingURL=models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM;IACZ,8CAA8C;IAC9C,KAAK,EAAE,OAAO;IACd,wBAAwB;IACxB,IAAI,EAAE,MAAM;IACZ,6CAA6C;IAC7C,OAAO,EAAE,SAAS;CACV,CAAC","sourcesContent":["/**\n * Which way a section marker points.\n *\n * The scrubber sets this on the two markers either side of the playhead, so\n * they can hint at the section boundary the listener would jump to.\n *\n * A const object rather than a TypeScript `enum`, because `erasableSyntaxOnly`\n * rules enums out.\n */\nexport const SectionMarkerMode = {\n /** Points back towards the start of the track. */\n left: 'left',\n /** Points on towards the end of the track. */\n right: 'right',\n /** Points both ways. */\n both: 'both',\n /** Points neither way, the resting state. */\n neither: 'neither',\n} as const;\n\nexport type SectionMarkerMode =\n (typeof SectionMarkerMode)[keyof typeof SectionMarkerMode];\n"]}
@@ -1,13 +0,0 @@
1
- /**
2
- * Formats a number of seconds as a playback timestamp.
3
- *
4
- * Minutes and seconds always appear; hours only once there are any. Seconds are
5
- * always two digits, and minutes are padded to two only when an hour is shown,
6
- * so short tracks read as `0:35` rather than `00:35`.
7
- *
8
- * Returns an empty string for anything that isn't a usable number, so a
9
- * timestamp bound to a duration the browser hasn't worked out yet renders as
10
- * nothing rather than `NaN:NaN`.
11
- */
12
- export declare function formatDuration(seconds: number): string;
13
- //# sourceMappingURL=duration-formatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duration-formatter.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-transcript-view/duration-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CActD"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Formats a number of seconds as a playback timestamp.
3
- *
4
- * Minutes and seconds always appear; hours only once there are any. Seconds are
5
- * always two digits, and minutes are padded to two only when an hour is shown,
6
- * so short tracks read as `0:35` rather than `00:35`.
7
- *
8
- * Returns an empty string for anything that isn't a usable number, so a
9
- * timestamp bound to a duration the browser hasn't worked out yet renders as
10
- * nothing rather than `NaN:NaN`.
11
- */
12
- export function formatDuration(seconds) {
13
- if (typeof seconds !== 'number' || !Number.isFinite(seconds))
14
- return '';
15
- const wholeSeconds = Math.max(0, Math.floor(seconds));
16
- const hours = Math.floor(wholeSeconds / 3600);
17
- const minutes = Math.floor(wholeSeconds / 60) % 60;
18
- const remainingSeconds = wholeSeconds % 60;
19
- const secondsPart = String(remainingSeconds).padStart(2, '0');
20
- if (hours === 0)
21
- return `${minutes}:${secondsPart}`;
22
- const minutesPart = String(minutes).padStart(2, '0');
23
- return `${hours}:${minutesPart}:${secondsPart}`;
24
- }
25
- //# sourceMappingURL=duration-formatter.js.map