@internetarchive/elements 1.1.3-l10n-demo.0 → 1.1.3-webdev-9107.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 (497) hide show
  1. package/README.md +0 -33
  2. package/dist/src/elements/ia-button/ia-button.d.ts.map +1 -1
  3. package/dist/src/elements/ia-button/ia-button.js +2 -2
  4. package/dist/src/elements/ia-button/ia-button.js.map +1 -1
  5. package/dist/src/elements/ia-combo-box/ia-combo-box.d.ts.map +1 -1
  6. package/dist/src/elements/ia-combo-box/ia-combo-box.js +2 -3
  7. package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
  8. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +2 -2
  9. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
  10. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +5 -4
  11. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
  12. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
  13. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
  14. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +8 -5
  15. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
  16. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
  17. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +2 -3
  18. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
  19. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
  20. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +2 -3
  21. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
  22. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
  23. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +2 -3
  24. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
  25. package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
  26. package/dist/src/elements/ia-otp-form/ia-otp-form.js +2 -3
  27. package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
  28. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
  29. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +2 -3
  30. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
  31. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  32. package/dist/src/elements/ia-radio-player/ia-radio-player.js +2 -3
  33. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  34. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
  35. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +2 -3
  36. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
  37. package/dist/src/elements/ia-reviews/assets/delete-icon.svg +8 -0
  38. package/dist/src/elements/ia-reviews/assets/star-basic.svg +6 -0
  39. package/dist/src/elements/ia-reviews/assets/star-selected.svg +8 -0
  40. package/dist/src/elements/ia-reviews/assets/star-unselected.svg +8 -0
  41. package/dist/src/elements/ia-reviews/ia-review-form.d.ts +104 -0
  42. package/dist/src/elements/ia-reviews/ia-review-form.d.ts.map +1 -0
  43. package/dist/src/elements/ia-reviews/ia-review-form.js +678 -0
  44. package/dist/src/elements/ia-reviews/ia-review-form.js.map +1 -0
  45. package/dist/src/elements/ia-reviews/ia-review.d.ts +49 -0
  46. package/dist/src/elements/ia-reviews/ia-review.d.ts.map +1 -0
  47. package/dist/src/elements/ia-reviews/ia-review.js +349 -0
  48. package/dist/src/elements/ia-reviews/ia-review.js.map +1 -0
  49. package/dist/src/elements/ia-reviews/ia-reviews.d.ts +63 -0
  50. package/dist/src/elements/ia-reviews/ia-reviews.d.ts.map +1 -0
  51. package/dist/src/elements/ia-reviews/ia-reviews.js +357 -0
  52. package/dist/src/elements/ia-reviews/ia-reviews.js.map +1 -0
  53. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts +8 -0
  54. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts.map +1 -0
  55. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js +15 -0
  56. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js.map +1 -0
  57. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts +13 -0
  58. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts.map +1 -0
  59. package/dist/src/elements/ia-reviews/utils/collapse-space.js +19 -0
  60. package/dist/src/elements/ia-reviews/utils/collapse-space.js.map +1 -0
  61. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts +14 -0
  62. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts.map +1 -0
  63. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js +65 -0
  64. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js.map +1 -0
  65. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts +9 -0
  66. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts.map +1 -0
  67. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js +40 -0
  68. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js.map +1 -0
  69. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts +9 -0
  70. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts.map +1 -0
  71. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js +29 -0
  72. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js.map +1 -0
  73. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts +13 -0
  74. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts.map +1 -0
  75. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js +19 -0
  76. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js.map +1 -0
  77. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
  78. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
  79. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +5 -4
  80. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
  81. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
  82. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
  83. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +12 -7
  84. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
  85. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
  86. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +0 -4
  87. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
  88. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
  89. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +2 -3
  90. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
  91. package/dist/src/elements/index.d.ts +3 -55
  92. package/dist/src/elements/index.d.ts.map +1 -1
  93. package/dist/src/elements/index.js +3 -55
  94. package/dist/src/elements/index.js.map +1 -1
  95. package/package.json +9 -36
  96. package/dist/src/elements/ia-donation-form/analytics.d.ts +0 -12
  97. package/dist/src/elements/ia-donation-form/analytics.d.ts.map +0 -1
  98. package/dist/src/elements/ia-donation-form/analytics.js +0 -2
  99. package/dist/src/elements/ia-donation-form/analytics.js.map +0 -1
  100. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts +0 -79
  101. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts.map +0 -1
  102. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js +0 -2
  103. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js.map +0 -1
  104. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts +0 -73
  105. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts.map +0 -1
  106. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js +0 -126
  107. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js.map +0 -1
  108. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts +0 -10
  109. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts.map +0 -1
  110. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js +0 -9
  111. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js.map +0 -1
  112. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts +0 -47
  113. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts.map +0 -1
  114. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js +0 -104
  115. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js.map +0 -1
  116. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts +0 -11
  117. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts.map +0 -1
  118. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js +0 -2
  119. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js.map +0 -1
  120. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +0 -20
  121. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts.map +0 -1
  122. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +0 -2
  123. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +0 -1
  124. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +0 -21
  125. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts.map +0 -1
  126. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js +0 -83
  127. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js.map +0 -1
  128. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts +0 -11
  129. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts.map +0 -1
  130. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js +0 -13
  131. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js.map +0 -1
  132. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts +0 -27
  133. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts.map +0 -1
  134. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js +0 -67
  135. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js.map +0 -1
  136. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts +0 -18
  137. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts.map +0 -1
  138. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js +0 -2
  139. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js.map +0 -1
  140. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts +0 -41
  141. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts.map +0 -1
  142. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js +0 -95
  143. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js.map +0 -1
  144. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts +0 -14
  145. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts.map +0 -1
  146. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js +0 -9
  147. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js.map +0 -1
  148. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts +0 -40
  149. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts.map +0 -1
  150. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js +0 -58
  151. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js.map +0 -1
  152. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts +0 -8
  153. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts.map +0 -1
  154. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js +0 -2
  155. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js.map +0 -1
  156. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts +0 -19
  157. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts.map +0 -1
  158. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js +0 -45
  159. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js.map +0 -1
  160. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts +0 -57
  161. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts.map +0 -1
  162. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js +0 -44
  163. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js.map +0 -1
  164. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts +0 -14
  165. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts.map +0 -1
  166. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js +0 -2
  167. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js.map +0 -1
  168. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts +0 -27
  169. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts.map +0 -1
  170. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js +0 -44
  171. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js.map +0 -1
  172. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts +0 -8
  173. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts.map +0 -1
  174. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js +0 -2
  175. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js.map +0 -1
  176. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts +0 -40
  177. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts.map +0 -1
  178. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js +0 -65
  179. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js.map +0 -1
  180. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts +0 -25
  181. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts.map +0 -1
  182. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js +0 -42
  183. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js.map +0 -1
  184. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts +0 -18
  185. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts.map +0 -1
  186. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js +0 -2
  187. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js.map +0 -1
  188. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts +0 -42
  189. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts.map +0 -1
  190. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js +0 -99
  191. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js.map +0 -1
  192. package/dist/src/elements/ia-donation-form/currency-validator.d.ts +0 -16
  193. package/dist/src/elements/ia-donation-form/currency-validator.d.ts.map +0 -1
  194. package/dist/src/elements/ia-donation-form/currency-validator.js +0 -37
  195. package/dist/src/elements/ia-donation-form/currency-validator.js.map +0 -1
  196. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts +0 -5
  197. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts.map +0 -1
  198. package/dist/src/elements/ia-donation-form/donation-form-error.js +0 -8
  199. package/dist/src/elements/ia-donation-form/donation-form-error.js.map +0 -1
  200. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts +0 -118
  201. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts.map +0 -1
  202. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js +0 -194
  203. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js.map +0 -1
  204. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts +0 -24
  205. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts.map +0 -1
  206. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js +0 -70
  207. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js.map +0 -1
  208. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts +0 -44
  209. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts.map +0 -1
  210. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js +0 -110
  211. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js.map +0 -1
  212. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts +0 -24
  213. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts.map +0 -1
  214. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js +0 -74
  215. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js.map +0 -1
  216. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts +0 -47
  217. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts.map +0 -1
  218. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js +0 -204
  219. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js.map +0 -1
  220. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts +0 -30
  221. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts.map +0 -1
  222. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js +0 -77
  223. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js.map +0 -1
  224. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts +0 -80
  225. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts.map +0 -1
  226. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js +0 -72
  227. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js.map +0 -1
  228. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts +0 -2
  229. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts.map +0 -1
  230. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js +0 -2
  231. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js.map +0 -1
  232. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts +0 -3
  233. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts.map +0 -1
  234. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js +0 -254
  235. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js.map +0 -1
  236. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts +0 -70
  237. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts.map +0 -1
  238. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js +0 -497
  239. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js.map +0 -1
  240. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts +0 -26
  241. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts.map +0 -1
  242. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js +0 -163
  243. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js.map +0 -1
  244. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts +0 -118
  245. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts.map +0 -1
  246. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js +0 -772
  247. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js.map +0 -1
  248. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts +0 -31
  249. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts.map +0 -1
  250. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js +0 -93
  251. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js.map +0 -1
  252. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts +0 -33
  253. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts.map +0 -1
  254. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js +0 -378
  255. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js.map +0 -1
  256. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts +0 -21
  257. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts.map +0 -1
  258. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js +0 -182
  259. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js.map +0 -1
  260. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts +0 -11
  261. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts.map +0 -1
  262. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js +0 -60
  263. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js.map +0 -1
  264. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts +0 -10
  265. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts.map +0 -1
  266. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js +0 -76
  267. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js.map +0 -1
  268. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts +0 -114
  269. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts.map +0 -1
  270. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js +0 -586
  271. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js.map +0 -1
  272. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts +0 -94
  273. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts.map +0 -1
  274. package/dist/src/elements/ia-donation-form/ia-donation-form.js +0 -516
  275. package/dist/src/elements/ia-donation-form/ia-donation-form.js.map +0 -1
  276. package/dist/src/elements/ia-donation-form/icons/apple-pay.svg +0 -22
  277. package/dist/src/elements/ia-donation-form/icons/calendar.svg +0 -15
  278. package/dist/src/elements/ia-donation-form/icons/credit-card.svg +0 -15
  279. package/dist/src/elements/ia-donation-form/icons/email.svg +0 -3
  280. package/dist/src/elements/ia-donation-form/icons/google-pay.svg +0 -38
  281. package/dist/src/elements/ia-donation-form/icons/locale-pin.svg +0 -7
  282. package/dist/src/elements/ia-donation-form/icons/lock.svg +0 -6
  283. package/dist/src/elements/ia-donation-form/icons/paypal.svg +0 -39
  284. package/dist/src/elements/ia-donation-form/icons/user.svg +0 -6
  285. package/dist/src/elements/ia-donation-form/icons/venmo.svg +0 -9
  286. package/dist/src/elements/ia-donation-form/icons.d.ts +0 -12
  287. package/dist/src/elements/ia-donation-form/icons.d.ts.map +0 -1
  288. package/dist/src/elements/ia-donation-form/icons.js +0 -33
  289. package/dist/src/elements/ia-donation-form/icons.js.map +0 -1
  290. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts +0 -27
  291. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts.map +0 -1
  292. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js +0 -196
  293. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js.map +0 -1
  294. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts +0 -7
  295. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts.map +0 -1
  296. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js +0 -64
  297. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js.map +0 -1
  298. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts +0 -28
  299. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts.map +0 -1
  300. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js +0 -314
  301. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js.map +0 -1
  302. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts +0 -34
  303. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts.map +0 -1
  304. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js +0 -54
  305. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js.map +0 -1
  306. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts +0 -62
  307. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts.map +0 -1
  308. package/dist/src/elements/ia-donation-form/models/donation-request.js +0 -35
  309. package/dist/src/elements/ia-donation-form/models/donation-request.js.map +0 -1
  310. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts +0 -67
  311. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts.map +0 -1
  312. package/dist/src/elements/ia-donation-form/models/donation-response.js +0 -57
  313. package/dist/src/elements/ia-donation-form/models/donation-response.js.map +0 -1
  314. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts +0 -8
  315. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts.map +0 -1
  316. package/dist/src/elements/ia-donation-form/models/donation-type.js +0 -7
  317. package/dist/src/elements/ia-donation-form/models/donation-type.js.map +0 -1
  318. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts +0 -38
  319. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts.map +0 -1
  320. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js +0 -27
  321. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js.map +0 -1
  322. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts +0 -10
  323. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts.map +0 -1
  324. package/dist/src/elements/ia-donation-form/models/payment-provider.js +0 -9
  325. package/dist/src/elements/ia-donation-form/models/payment-provider.js.map +0 -1
  326. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts +0 -36
  327. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts.map +0 -1
  328. package/dist/src/elements/ia-donation-form/recaptcha-manager.js +0 -76
  329. package/dist/src/elements/ia-donation-form/recaptcha-manager.js.map +0 -1
  330. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +0 -3
  331. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +0 -1
  332. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +0 -28
  333. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +0 -1
  334. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +0 -3
  335. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +0 -1
  336. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +0 -20
  337. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +0 -1
  338. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +0 -3
  339. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +0 -1
  340. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +0 -19
  341. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +0 -1
  342. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +0 -3
  343. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +0 -1
  344. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +0 -18
  345. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +0 -1
  346. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +0 -3
  347. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +0 -1
  348. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +0 -19
  349. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +0 -1
  350. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +0 -3
  351. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +0 -1
  352. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +0 -30
  353. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +0 -1
  354. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +0 -3
  355. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +0 -1
  356. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +0 -19
  357. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +0 -1
  358. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +0 -3
  359. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +0 -1
  360. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +0 -19
  361. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +0 -1
  362. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +0 -3
  363. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +0 -1
  364. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +0 -18
  365. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +0 -1
  366. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +0 -3
  367. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +0 -1
  368. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +0 -18
  369. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +0 -1
  370. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +0 -3
  371. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +0 -1
  372. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +0 -18
  373. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +0 -1
  374. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +0 -3
  375. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +0 -1
  376. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +0 -21
  377. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +0 -1
  378. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +0 -3
  379. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +0 -1
  380. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +0 -19
  381. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +0 -1
  382. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +0 -3
  383. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +0 -1
  384. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +0 -19
  385. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +0 -1
  386. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +0 -3
  387. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +0 -1
  388. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +0 -19
  389. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +0 -1
  390. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +0 -6
  391. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +0 -1
  392. package/dist/src/elements/ia-topnav/assets/img/icon.js +0 -17
  393. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +0 -1
  394. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +0 -19
  395. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +0 -1
  396. package/dist/src/elements/ia-topnav/assets/img/icons.js +0 -33
  397. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +0 -1
  398. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +0 -3
  399. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +0 -1
  400. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +0 -21
  401. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +0 -1
  402. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +0 -3
  403. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +0 -1
  404. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +0 -13
  405. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +0 -1
  406. package/dist/src/elements/ia-topnav/data/menus.d.ts +0 -17
  407. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +0 -1
  408. package/dist/src/elements/ia-topnav/data/menus.js +0 -756
  409. package/dist/src/elements/ia-topnav/data/menus.js.map +0 -1
  410. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +0 -21
  411. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +0 -1
  412. package/dist/src/elements/ia-topnav/dropdown-menu.js +0 -309
  413. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +0 -1
  414. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +0 -11
  415. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +0 -1
  416. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +0 -89
  417. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +0 -1
  418. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +0 -6
  419. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +0 -1
  420. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +0 -47
  421. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +0 -1
  422. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +0 -20
  423. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +0 -1
  424. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +0 -183
  425. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +0 -1
  426. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +0 -31
  427. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +0 -1
  428. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +0 -287
  429. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +0 -1
  430. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +0 -21
  431. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +0 -1
  432. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +0 -214
  433. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +0 -1
  434. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +0 -16
  435. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +0 -1
  436. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +0 -221
  437. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +0 -1
  438. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +0 -20
  439. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +0 -1
  440. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +0 -285
  441. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +0 -1
  442. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +0 -12
  443. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +0 -1
  444. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +0 -65
  445. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +0 -1
  446. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +0 -53
  447. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +0 -1
  448. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +0 -653
  449. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +0 -1
  450. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +0 -12
  451. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +0 -1
  452. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +0 -128
  453. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +0 -1
  454. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +0 -4
  455. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +0 -1
  456. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +0 -10
  457. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +0 -1
  458. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +0 -7
  459. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +0 -1
  460. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +0 -39
  461. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +0 -1
  462. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +0 -21
  463. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +0 -1
  464. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +0 -278
  465. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +0 -1
  466. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +0 -20
  467. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +0 -1
  468. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +0 -131
  469. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +0 -1
  470. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +0 -88
  471. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +0 -1
  472. package/dist/src/elements/ia-topnav/ia-topnav.js +0 -443
  473. package/dist/src/elements/ia-topnav/ia-topnav.js.map +0 -1
  474. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +0 -13
  475. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +0 -1
  476. package/dist/src/elements/ia-topnav/lib/helpers.js +0 -24
  477. package/dist/src/elements/ia-topnav/lib/helpers.js.map +0 -1
  478. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +0 -46
  479. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +0 -1
  480. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +0 -136
  481. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +0 -1
  482. package/dist/src/elements/ia-topnav/models.d.ts +0 -65
  483. package/dist/src/elements/ia-topnav/models.d.ts.map +0 -1
  484. package/dist/src/elements/ia-topnav/models.js +0 -10
  485. package/dist/src/elements/ia-topnav/models.js.map +0 -1
  486. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +0 -2
  487. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +0 -1
  488. package/dist/src/elements/ia-topnav/subnav-list-styles.js +0 -49
  489. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +0 -1
  490. package/dist/src/elements/ia-topnav/tracked-element.d.ts +0 -6
  491. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +0 -1
  492. package/dist/src/elements/ia-topnav/tracked-element.js +0 -29
  493. package/dist/src/elements/ia-topnav/tracked-element.js.map +0 -1
  494. package/dist/src/locales/es.d.ts +0 -215
  495. package/dist/src/locales/es.d.ts.map +0 -1
  496. package/dist/src/locales/es.js +0 -247
  497. package/dist/src/locales/es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ia-otp-form.js","sourceRoot":"","sources":["../../../../src/elements/ia-otp-form/ia-otp-form.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n css,\n nothing,\n PropertyValues,\n} from 'lit';\nimport { localized, msg } from '@lit/localize';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\nimport themeStyles from '@src/themes/theme-styles';\n\nimport type { IAOTPInput } from '@src/elements/ia-otp-input/ia-otp-input';\nimport type { LoadingStatus } from '@src/elements/ia-status-indicator/ia-status-indicator';\n\nimport '@src/elements/ia-status-indicator/ia-status-indicator';\nimport '@src/elements/ia-otp-input/ia-otp-input';\nimport '@src/elements/ia-button/ia-button';\n\n/**\n * Custom events fired by the component\n */\nconst Events = {\n NewCodeRequested: 'newCodeRequested',\n CodeSubmitted: 'codeSubmitted', // Bubbles up from ia-otp-input\n};\n\n/**\n * Form for entering OTP codes, including success/loading/error states and a request new code button\n */\n@customElement('ia-otp-form')\n@localized()\nexport class IAOTPForm extends LitElement {\n /* The state of the validation process */\n @property({ type: String })\n validationStatus: LoadingStatus = 'ready';\n\n /* Whether to display a loading indicator instead of the button text */\n @property({ type: Boolean })\n newCodeSending: boolean = false;\n\n /* Number of characters to expect for the passcode */\n @property({ type: Number })\n numPasscodeChars: number = 6;\n\n /* Whether to restrict entry to numeric characters */\n @property({ type: Boolean })\n numericOnly: boolean = true;\n\n @query('ia-otp-input')\n private OTPInput!: IAOTPInput;\n\n render(): TemplateResult {\n return html`\n <div class=\"input-section\">\n <ia-otp-input\n .numChars=${this.numPasscodeChars}\n ?numericOnly=${this.numericOnly}\n ?disabled=${this.validationStatus === 'loading' ||\n this.validationStatus === 'success'}\n ></ia-otp-input>\n <ia-status-indicator\n part=\"status-indicator\"\n .mode=${this.validationStatus}\n ></ia-status-indicator>\n </div>\n ${this.validationStatus === 'error'\n ? html`<p class=\"error-msg\">\n ${msg('The code entered is invalid or expired')}\n </p>`\n : nothing}\n ${this.resendCodeButtonTemplate}\n `;\n }\n\n protected willUpdate(changed: PropertyValues): void {\n if (\n changed.has('validationStatus') &&\n this.OTPInput &&\n this.validationStatus === 'error'\n ) {\n this.OTPInput.prefillValue = '';\n }\n\n if (changed.has('newCodeSending') && this.newCodeSending && this.OTPInput) {\n this.OTPInput.prefillValue = '';\n }\n }\n\n /* The button to display to send a new code */\n private get resendCodeButtonTemplate(): TemplateResult {\n return this.newCodeSending\n ? html`<span part=\"new-code-message\" class=\"new-code-msg\"\n >${msg('Emailing...')}</span\n >`\n : html`\n <ia-button\n mode=\"link\"\n class=\"new-code-btn\"\n part=\"new-code-button\"\n .disabled=${this.validationStatus === 'loading' ||\n this.validationStatus === 'success'}\n @click=${this.handleNewCodeRequested}\n >\n ${msg('Email me another code')}\n </ia-button>\n `;\n }\n\n /* Emits an event to request the new code */\n private async handleNewCodeRequested(): Promise<void> {\n this.dispatchEvent(\n new CustomEvent(Events.NewCodeRequested, {\n bubbles: true,\n composed: true,\n }),\n );\n this.OTPInput.prefillValue = '';\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --font-size-standard--: var(--font-size-standard);\n --font-size-lg--: var(--font-size-lg);\n --color-success--: var(--color-success);\n --color-danger--: var(--color-danger);\n --link-color--: var(--link-color);\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n .input-section {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 5px;\n }\n\n ia-status-indicator {\n --icon-width: calc(var(--font-size-lg--) * 1.33);\n }\n\n .error-msg {\n margin-top: 10px;\n font-size: var(--font-size-standard--);\n color: var(--color-danger--);\n margin-bottom: -10px;\n }\n\n .new-code-msg {\n margin-top: 10px;\n font-size: var(--font-size-standard--);\n color: var(--link-color--);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n `,\n ];\n }\n}\n"]}
1
+ {"version":3,"file":"ia-otp-form.js","sourceRoot":"","sources":["../../../../src/elements/ia-otp-form/ia-otp-form.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n LitElement,\n TemplateResult,\n CSSResultGroup,\n css,\n nothing,\n PropertyValues,\n} from 'lit';\nimport { msg } from '@lit/localize';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\nimport themeStyles from '@src/themes/theme-styles';\n\nimport type { IAOTPInput } from '@src/elements/ia-otp-input/ia-otp-input';\nimport type { LoadingStatus } from '@src/elements/ia-status-indicator/ia-status-indicator';\n\nimport '@src/elements/ia-status-indicator/ia-status-indicator';\nimport '@src/elements/ia-otp-input/ia-otp-input';\nimport '@src/elements/ia-button/ia-button';\n\n/**\n * Custom events fired by the component\n */\nconst Events = {\n NewCodeRequested: 'newCodeRequested',\n CodeSubmitted: 'codeSubmitted', // Bubbles up from ia-otp-input\n};\n\n/**\n * Form for entering OTP codes, including success/loading/error states and a request new code button\n */\n@customElement('ia-otp-form')\nexport class IAOTPForm extends LitElement {\n /* The state of the validation process */\n @property({ type: String })\n validationStatus: LoadingStatus = 'ready';\n\n /* Whether to display a loading indicator instead of the button text */\n @property({ type: Boolean })\n newCodeSending: boolean = false;\n\n /* Number of characters to expect for the passcode */\n @property({ type: Number })\n numPasscodeChars: number = 6;\n\n /* Whether to restrict entry to numeric characters */\n @property({ type: Boolean })\n numericOnly: boolean = true;\n\n @query('ia-otp-input')\n private OTPInput!: IAOTPInput;\n\n render(): TemplateResult {\n return html`\n <div class=\"input-section\">\n <ia-otp-input\n .numChars=${this.numPasscodeChars}\n ?numericOnly=${this.numericOnly}\n ?disabled=${this.validationStatus === 'loading' ||\n this.validationStatus === 'success'}\n ></ia-otp-input>\n <ia-status-indicator\n part=\"status-indicator\"\n .mode=${this.validationStatus}\n ></ia-status-indicator>\n </div>\n ${this.validationStatus === 'error'\n ? html`<p class=\"error-msg\">\n ${msg('The code entered is invalid or expired')}\n </p>`\n : nothing}\n ${this.resendCodeButtonTemplate}\n `;\n }\n\n protected willUpdate(changed: PropertyValues): void {\n if (\n changed.has('validationStatus') &&\n this.OTPInput &&\n this.validationStatus === 'error'\n ) {\n this.OTPInput.prefillValue = '';\n }\n\n if (changed.has('newCodeSending') && this.newCodeSending && this.OTPInput) {\n this.OTPInput.prefillValue = '';\n }\n }\n\n /* The button to display to send a new code */\n private get resendCodeButtonTemplate(): TemplateResult {\n return this.newCodeSending\n ? html`<span part=\"new-code-message\" class=\"new-code-msg\"\n >${msg('Emailing...')}</span\n >`\n : html`\n <ia-button\n mode=\"link\"\n class=\"new-code-btn\"\n part=\"new-code-button\"\n .disabled=${this.validationStatus === 'loading' ||\n this.validationStatus === 'success'}\n @click=${this.handleNewCodeRequested}\n >\n ${msg('Email me another code')}\n </ia-button>\n `;\n }\n\n /* Emits an event to request the new code */\n private async handleNewCodeRequested(): Promise<void> {\n this.dispatchEvent(\n new CustomEvent(Events.NewCodeRequested, {\n bubbles: true,\n composed: true,\n }),\n );\n this.OTPInput.prefillValue = '';\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --font-size-standard--: var(--font-size-standard);\n --font-size-lg--: var(--font-size-lg);\n --color-success--: var(--color-success);\n --color-danger--: var(--color-danger);\n --link-color--: var(--link-color);\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n\n .input-section {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 5px;\n }\n\n ia-status-indicator {\n --icon-width: calc(var(--font-size-lg--) * 1.33);\n }\n\n .error-msg {\n margin-top: 10px;\n font-size: var(--font-size-standard--);\n color: var(--color-danger--);\n margin-bottom: -10px;\n }\n\n .new-code-msg {\n margin-top: 10px;\n font-size: var(--font-size-standard--);\n color: var(--link-color--);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n `,\n ];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ia-playback-controls.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-playback-controls/ia-playback-controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCxC;;;;;;GAMG;AACH,qBAEa,kBAAmB,SAAQ,UAAU;IAChD,6CAA6C;IACjB,YAAY,EAAE,YAAY,CAAuB;IAE7E,yDAAyD;IAC7B,YAAY,SAAK;IAE7C,kDAAkD;IACtB,MAAM,SAAK;IAEvC,MAAM,IAAI,cAAc;IAkFxB,OAAO,KAAK,SAAS,GAEpB;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,aAAa,GAExB;IAED,uEAAuE;IACvE,OAAO,KAAK,aAAa,GAExB;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,iBAAiB,GAE5B;IAED;;;;;OAKG;IACH,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,gBAAgB,GAI3B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,wEAAwE;IACxE,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,qBAAqB;IAQ7B,MAAM,KAAK,MAAM,IAAI,cAAc,CAiGlC;CACF"}
1
+ {"version":3,"file":"ia-playback-controls.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-playback-controls/ia-playback-controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCxC;;;;;;GAMG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD,6CAA6C;IACjB,YAAY,EAAE,YAAY,CAAuB;IAE7E,yDAAyD;IAC7B,YAAY,SAAK;IAE7C,kDAAkD;IACtB,MAAM,SAAK;IAEvC,MAAM,IAAI,cAAc;IAkFxB,OAAO,KAAK,SAAS,GAEpB;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,aAAa,GAExB;IAED,uEAAuE;IACvE,OAAO,KAAK,aAAa,GAExB;IAED;;;;;;;OAOG;IACH,OAAO,KAAK,iBAAiB,GAE5B;IAED;;;;;OAKG;IACH,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,gBAAgB,GAI3B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,wEAAwE;IACxE,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,qBAAqB;IAQ7B,MAAM,KAAK,MAAM,IAAI,cAAc,CAiGlC;CACF"}
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, html, LitElement, } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
4
  import { customElement } from '../../util/custom-element.js';
5
- import { localized, msg, str } from '@lit/localize';
5
+ import { msg, str } from '@lit/localize';
6
6
  import { PlaybackMode } from './models.js';
7
7
  import nextSectionIcon from './assets/next-section.js';
8
8
  import pauseIcon from './assets/pause.js';
@@ -332,8 +332,7 @@ __decorate([
332
332
  property({ type: Number })
333
333
  ], IAPlaybackControls.prototype, "volume", void 0);
334
334
  IAPlaybackControls = __decorate([
335
- customElement('ia-playback-controls'),
336
- localized()
335
+ customElement('ia-playback-controls')
337
336
  ], IAPlaybackControls);
338
337
  export { IAPlaybackControls };
339
338
  //# sourceMappingURL=ia-playback-controls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ia-playback-controls.js","sourceRoot":"","sources":["../../../../src/elements/ia-playback-controls/ia-playback-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg, str } from '@lit/localize';\n\nimport { PlaybackMode } from './models';\n\nimport nextSectionIcon from './assets/next-section';\nimport pauseIcon from './assets/pause';\nimport playIcon from './assets/play';\nimport playbackSpeedIcon from './assets/playback-speed';\nimport previousSectionIcon from './assets/previous-section';\nimport replayIcon from './assets/replay';\nimport skipAheadIcon from './assets/skip-ahead';\nimport volumeFullIcon from './assets/volume-full';\nimport volumeMediumIcon from './assets/volume-medium';\nimport volumeMuteIcon from './assets/volume-mute';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n PlaybackRateChange: 'playbackRateChange',\n VolumeChange: 'volumeChange',\n BackButtonPressed: 'back-button-pressed',\n ForwardButtonPressed: 'forward-button-pressed',\n PlayPauseButtonPressed: 'play-pause-button-pressed',\n PrevSectionButtonPressed: 'prev-section-button-pressed',\n NextSectionButtonPressed: 'next-section-button-pressed',\n};\n\n/** How much one press of the speed button moves the playback rate */\nconst PLAYBACK_RATE_STEP = 0.25;\n\n/** The rate the speed button wraps back around to once it passes the top */\nconst MIN_PLAYBACK_RATE = 0.5;\nconst MAX_PLAYBACK_RATE = 2;\n\n/** How much one press of the volume button moves the volume */\nconst VOLUME_STEP = 0.25;\n\n/**\n * The transport controls for a player: play and pause, skip back and forward\n * ten seconds, jump between sections, and cycle the speed and volume.\n *\n * The element owns no playback itself. It reports presses and lets whatever is\n * playing the audio decide what to do with them.\n */\n@customElement('ia-playback-controls')\n@localized()\nexport class IAPlaybackControls extends LitElement {\n /** Whether the track is playing or paused */\n @property({ type: String }) playbackMode: PlaybackMode = PlaybackMode.paused;\n\n /** Playback speed multiplier, where 1 is normal speed */\n @property({ type: Number }) playbackRate = 1;\n\n /** Playback volume, from 0 (muted) to 1 (full) */\n @property({ type: Number }) volume = 1;\n\n render(): TemplateResult {\n return html`\n <div class=\"container\">\n <div class=\"vertical-button-stack playback-speed\">\n <div class=\"vertical-button-container\">\n <button\n id=\"playback-rate-btn\"\n class=\"unstyled-button\"\n aria-label=${this.playbackRateLabel}\n @click=${this.handlePlaybackRateChange}\n >\n ${playbackSpeedIcon}\n </button>\n </div>\n <div class=\"vertical-button-value\" aria-hidden=\"true\">\n ${this.playbackRate}x\n </div>\n </div>\n\n <button\n id=\"prev-section-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Previous section')}\n @click=${this.handlePrevSectionButton}\n >\n ${previousSectionIcon}\n </button>\n\n <button\n id=\"back-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Skip back ten seconds')}\n @click=${this.handleBackButton}\n >\n ${replayIcon}\n </button>\n\n <button\n id=\"play-pause-btn\"\n aria-label=${this.isPlaying ? msg('Pause') : msg('Play')}\n @click=${this.handlePlayPauseButton}\n >\n ${this.playPauseButtonIcon}\n </button>\n\n <button\n id=\"forward-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Skip ahead ten seconds')}\n @click=${this.handleForwardButton}\n >\n ${skipAheadIcon}\n </button>\n\n <button\n id=\"next-section-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Next section')}\n @click=${this.handleNextSectionButton}\n >\n ${nextSectionIcon}\n </button>\n\n <div class=\"vertical-button-stack volume\">\n <div class=\"vertical-button-container\">\n <button\n id=\"volume-control-btn\"\n class=\"unstyled-button\"\n aria-label=${this.volumeLabel}\n @click=${this.handleVolumeChange}\n >\n ${this.volumeButtonIcon}\n </button>\n </div>\n <div class=\"vertical-button-value\" aria-hidden=\"true\">\n ${this.volumePercent}%\n </div>\n </div>\n </div>\n `;\n }\n\n private get isPlaying(): boolean {\n return this.playbackMode === PlaybackMode.playing;\n }\n\n /**\n * The volume held to the 0 to 1 range the controls can represent.\n *\n * `volume` is a public property, so it can arrive out of range or as\n * something that isn't a number at all. Everything that displays, announces\n * or steps the volume reads it through here, so an impossible value never\n * reaches the screen reader.\n */\n private get clampedVolume(): number {\n return Math.min(Math.max(this.volume || 0, 0), 1);\n }\n\n /** The volume as a whole number, for display and for screen readers */\n private get volumePercent(): number {\n return Math.round(this.clampedVolume * 100);\n }\n\n /**\n * The accessible name for the speed button.\n *\n * The rate is left bare rather than followed by a unit like \"times\", because\n * `@lit/localize` has no plural support, so a unit baked into the string\n * reads wrong at 1 and translators have no way to correct it. The visible\n * label beside the button carries the \"x\".\n */\n private get playbackRateLabel(): string {\n return msg(str`Playback speed, currently ${this.playbackRate}`);\n }\n\n /**\n * The accessible name for the volume button.\n *\n * \"percent\" is safe to include, unlike a pluralised unit: it reads correctly\n * at every value.\n */\n private get volumeLabel(): string {\n return msg(str`Volume, currently ${this.volumePercent} percent`);\n }\n\n private get playPauseButtonIcon(): TemplateResult {\n return this.isPlaying ? pauseIcon : playIcon;\n }\n\n private get volumeButtonIcon(): TemplateResult {\n if (this.clampedVolume <= 0) return volumeMuteIcon;\n if (this.clampedVolume >= 1) return volumeFullIcon;\n return volumeMediumIcon;\n }\n\n /**\n * Steps the playback rate up, wrapping back to the slowest once it reaches\n * the fastest.\n *\n * The rate is clamped on the way in as well as the way out, so a rate set\n * from outside the range lands back on the documented steps rather than\n * drifting off the grid, overshooting the top, or climbing forever.\n */\n private handlePlaybackRateChange(): void {\n const current = Math.max(\n this.playbackRate || MIN_PLAYBACK_RATE,\n MIN_PLAYBACK_RATE,\n );\n this.playbackRate =\n current >= MAX_PLAYBACK_RATE\n ? MIN_PLAYBACK_RATE\n : Math.min(current + PLAYBACK_RATE_STEP, MAX_PLAYBACK_RATE);\n\n this.dispatchEvent(\n new CustomEvent<{ playbackRate: number }>(Events.PlaybackRateChange, {\n detail: { playbackRate: this.playbackRate },\n }),\n );\n }\n\n /** Steps the volume up, wrapping round to muted once it passes full. */\n private handleVolumeChange(): void {\n const current = this.clampedVolume;\n this.volume = current >= 1 ? 0 : Math.min(current + VOLUME_STEP, 1);\n\n this.dispatchEvent(\n new CustomEvent<{ volume: number }>(Events.VolumeChange, {\n detail: { volume: this.volume },\n }),\n );\n }\n\n private handleBackButton(): void {\n this.dispatchEvent(new Event(Events.BackButtonPressed));\n }\n\n private handleForwardButton(): void {\n this.dispatchEvent(new Event(Events.ForwardButtonPressed));\n }\n\n private handlePrevSectionButton(): void {\n this.dispatchEvent(new Event(Events.PrevSectionButtonPressed));\n }\n\n private handleNextSectionButton(): void {\n this.dispatchEvent(new Event(Events.NextSectionButtonPressed));\n }\n\n private handlePlayPauseButton(): void {\n this.playbackMode = this.isPlaying\n ? PlaybackMode.paused\n : PlaybackMode.playing;\n\n this.dispatchEvent(new Event(Events.PlayPauseButtonPressed));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --playback-controls-icon-color--: var(\n --ia-theme-playback-controls-icon-color,\n #fff\n );\n --playback-controls-play-icon-color--: var(\n --ia-theme-playback-controls-play-icon-color,\n #333\n );\n --playback-controls-play-button-color--: var(\n --ia-theme-playback-controls-play-button-color,\n #fff\n );\n --playback-controls-play-button-diameter--: var(\n --ia-theme-playback-controls-play-button-diameter,\n 4rem\n );\n\n display: flex;\n justify-content: center;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n }\n\n .container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--playback-controls-icon-color--);\n width: 100%;\n }\n\n .vertical-button-stack {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n .vertical-button-container {\n text-align: center;\n }\n\n .vertical-button-container button,\n .vertical-button-container svg {\n vertical-align: bottom;\n }\n\n .vertical-button-value {\n font-size: 0.7em;\n line-height: 1.4em;\n text-align: center;\n }\n\n #play-pause-btn {\n border-radius: 50%;\n /* Buttons are border-box, so the UA's default padding would eat into\n the icon's content box and shrink the glyph relative to the circle\n by a different amount at every diameter. */\n padding: 0;\n height: var(--playback-controls-play-button-diameter--);\n width: var(--playback-controls-play-button-diameter--);\n border: none;\n background-color: var(--playback-controls-play-button-color--);\n color: var(--playback-controls-play-icon-color--);\n vertical-align: middle;\n }\n\n #play-pause-btn:active {\n opacity: 0.75;\n }\n\n #play-pause-btn svg {\n width: 100%;\n height: 100%;\n }\n\n .unstyled-button {\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n /* Buttons don't inherit color from their parent, so the icons'\n currentColor needs it passed down explicitly. */\n color: inherit;\n }\n\n button {\n cursor: pointer;\n }\n\n .jump-btn:active {\n opacity: 0.75;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ia-playback-controls.js","sourceRoot":"","sources":["../../../../src/elements/ia-playback-controls/ia-playback-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg, str } from '@lit/localize';\n\nimport { PlaybackMode } from './models';\n\nimport nextSectionIcon from './assets/next-section';\nimport pauseIcon from './assets/pause';\nimport playIcon from './assets/play';\nimport playbackSpeedIcon from './assets/playback-speed';\nimport previousSectionIcon from './assets/previous-section';\nimport replayIcon from './assets/replay';\nimport skipAheadIcon from './assets/skip-ahead';\nimport volumeFullIcon from './assets/volume-full';\nimport volumeMediumIcon from './assets/volume-medium';\nimport volumeMuteIcon from './assets/volume-mute';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n PlaybackRateChange: 'playbackRateChange',\n VolumeChange: 'volumeChange',\n BackButtonPressed: 'back-button-pressed',\n ForwardButtonPressed: 'forward-button-pressed',\n PlayPauseButtonPressed: 'play-pause-button-pressed',\n PrevSectionButtonPressed: 'prev-section-button-pressed',\n NextSectionButtonPressed: 'next-section-button-pressed',\n};\n\n/** How much one press of the speed button moves the playback rate */\nconst PLAYBACK_RATE_STEP = 0.25;\n\n/** The rate the speed button wraps back around to once it passes the top */\nconst MIN_PLAYBACK_RATE = 0.5;\nconst MAX_PLAYBACK_RATE = 2;\n\n/** How much one press of the volume button moves the volume */\nconst VOLUME_STEP = 0.25;\n\n/**\n * The transport controls for a player: play and pause, skip back and forward\n * ten seconds, jump between sections, and cycle the speed and volume.\n *\n * The element owns no playback itself. It reports presses and lets whatever is\n * playing the audio decide what to do with them.\n */\n@customElement('ia-playback-controls')\nexport class IAPlaybackControls extends LitElement {\n /** Whether the track is playing or paused */\n @property({ type: String }) playbackMode: PlaybackMode = PlaybackMode.paused;\n\n /** Playback speed multiplier, where 1 is normal speed */\n @property({ type: Number }) playbackRate = 1;\n\n /** Playback volume, from 0 (muted) to 1 (full) */\n @property({ type: Number }) volume = 1;\n\n render(): TemplateResult {\n return html`\n <div class=\"container\">\n <div class=\"vertical-button-stack playback-speed\">\n <div class=\"vertical-button-container\">\n <button\n id=\"playback-rate-btn\"\n class=\"unstyled-button\"\n aria-label=${this.playbackRateLabel}\n @click=${this.handlePlaybackRateChange}\n >\n ${playbackSpeedIcon}\n </button>\n </div>\n <div class=\"vertical-button-value\" aria-hidden=\"true\">\n ${this.playbackRate}x\n </div>\n </div>\n\n <button\n id=\"prev-section-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Previous section')}\n @click=${this.handlePrevSectionButton}\n >\n ${previousSectionIcon}\n </button>\n\n <button\n id=\"back-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Skip back ten seconds')}\n @click=${this.handleBackButton}\n >\n ${replayIcon}\n </button>\n\n <button\n id=\"play-pause-btn\"\n aria-label=${this.isPlaying ? msg('Pause') : msg('Play')}\n @click=${this.handlePlayPauseButton}\n >\n ${this.playPauseButtonIcon}\n </button>\n\n <button\n id=\"forward-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Skip ahead ten seconds')}\n @click=${this.handleForwardButton}\n >\n ${skipAheadIcon}\n </button>\n\n <button\n id=\"next-section-btn\"\n class=\"jump-btn unstyled-button\"\n aria-label=${msg('Next section')}\n @click=${this.handleNextSectionButton}\n >\n ${nextSectionIcon}\n </button>\n\n <div class=\"vertical-button-stack volume\">\n <div class=\"vertical-button-container\">\n <button\n id=\"volume-control-btn\"\n class=\"unstyled-button\"\n aria-label=${this.volumeLabel}\n @click=${this.handleVolumeChange}\n >\n ${this.volumeButtonIcon}\n </button>\n </div>\n <div class=\"vertical-button-value\" aria-hidden=\"true\">\n ${this.volumePercent}%\n </div>\n </div>\n </div>\n `;\n }\n\n private get isPlaying(): boolean {\n return this.playbackMode === PlaybackMode.playing;\n }\n\n /**\n * The volume held to the 0 to 1 range the controls can represent.\n *\n * `volume` is a public property, so it can arrive out of range or as\n * something that isn't a number at all. Everything that displays, announces\n * or steps the volume reads it through here, so an impossible value never\n * reaches the screen reader.\n */\n private get clampedVolume(): number {\n return Math.min(Math.max(this.volume || 0, 0), 1);\n }\n\n /** The volume as a whole number, for display and for screen readers */\n private get volumePercent(): number {\n return Math.round(this.clampedVolume * 100);\n }\n\n /**\n * The accessible name for the speed button.\n *\n * The rate is left bare rather than followed by a unit like \"times\", because\n * `@lit/localize` has no plural support, so a unit baked into the string\n * reads wrong at 1 and translators have no way to correct it. The visible\n * label beside the button carries the \"x\".\n */\n private get playbackRateLabel(): string {\n return msg(str`Playback speed, currently ${this.playbackRate}`);\n }\n\n /**\n * The accessible name for the volume button.\n *\n * \"percent\" is safe to include, unlike a pluralised unit: it reads correctly\n * at every value.\n */\n private get volumeLabel(): string {\n return msg(str`Volume, currently ${this.volumePercent} percent`);\n }\n\n private get playPauseButtonIcon(): TemplateResult {\n return this.isPlaying ? pauseIcon : playIcon;\n }\n\n private get volumeButtonIcon(): TemplateResult {\n if (this.clampedVolume <= 0) return volumeMuteIcon;\n if (this.clampedVolume >= 1) return volumeFullIcon;\n return volumeMediumIcon;\n }\n\n /**\n * Steps the playback rate up, wrapping back to the slowest once it reaches\n * the fastest.\n *\n * The rate is clamped on the way in as well as the way out, so a rate set\n * from outside the range lands back on the documented steps rather than\n * drifting off the grid, overshooting the top, or climbing forever.\n */\n private handlePlaybackRateChange(): void {\n const current = Math.max(\n this.playbackRate || MIN_PLAYBACK_RATE,\n MIN_PLAYBACK_RATE,\n );\n this.playbackRate =\n current >= MAX_PLAYBACK_RATE\n ? MIN_PLAYBACK_RATE\n : Math.min(current + PLAYBACK_RATE_STEP, MAX_PLAYBACK_RATE);\n\n this.dispatchEvent(\n new CustomEvent<{ playbackRate: number }>(Events.PlaybackRateChange, {\n detail: { playbackRate: this.playbackRate },\n }),\n );\n }\n\n /** Steps the volume up, wrapping round to muted once it passes full. */\n private handleVolumeChange(): void {\n const current = this.clampedVolume;\n this.volume = current >= 1 ? 0 : Math.min(current + VOLUME_STEP, 1);\n\n this.dispatchEvent(\n new CustomEvent<{ volume: number }>(Events.VolumeChange, {\n detail: { volume: this.volume },\n }),\n );\n }\n\n private handleBackButton(): void {\n this.dispatchEvent(new Event(Events.BackButtonPressed));\n }\n\n private handleForwardButton(): void {\n this.dispatchEvent(new Event(Events.ForwardButtonPressed));\n }\n\n private handlePrevSectionButton(): void {\n this.dispatchEvent(new Event(Events.PrevSectionButtonPressed));\n }\n\n private handleNextSectionButton(): void {\n this.dispatchEvent(new Event(Events.NextSectionButtonPressed));\n }\n\n private handlePlayPauseButton(): void {\n this.playbackMode = this.isPlaying\n ? PlaybackMode.paused\n : PlaybackMode.playing;\n\n this.dispatchEvent(new Event(Events.PlayPauseButtonPressed));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --playback-controls-icon-color--: var(\n --ia-theme-playback-controls-icon-color,\n #fff\n );\n --playback-controls-play-icon-color--: var(\n --ia-theme-playback-controls-play-icon-color,\n #333\n );\n --playback-controls-play-button-color--: var(\n --ia-theme-playback-controls-play-button-color,\n #fff\n );\n --playback-controls-play-button-diameter--: var(\n --ia-theme-playback-controls-play-button-diameter,\n 4rem\n );\n\n display: flex;\n justify-content: center;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n }\n\n .container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--playback-controls-icon-color--);\n width: 100%;\n }\n\n .vertical-button-stack {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n .vertical-button-container {\n text-align: center;\n }\n\n .vertical-button-container button,\n .vertical-button-container svg {\n vertical-align: bottom;\n }\n\n .vertical-button-value {\n font-size: 0.7em;\n line-height: 1.4em;\n text-align: center;\n }\n\n #play-pause-btn {\n border-radius: 50%;\n /* Buttons are border-box, so the UA's default padding would eat into\n the icon's content box and shrink the glyph relative to the circle\n by a different amount at every diameter. */\n padding: 0;\n height: var(--playback-controls-play-button-diameter--);\n width: var(--playback-controls-play-button-diameter--);\n border: none;\n background-color: var(--playback-controls-play-button-color--);\n color: var(--playback-controls-play-icon-color--);\n vertical-align: middle;\n }\n\n #play-pause-btn:active {\n opacity: 0.75;\n }\n\n #play-pause-btn svg {\n width: 100%;\n height: 100%;\n }\n\n .unstyled-button {\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n /* Buttons don't inherit color from their parent, so the icons'\n currentColor needs it passed down explicitly. */\n color: inherit;\n }\n\n button {\n cursor: pointer;\n }\n\n .jump-btn:active {\n opacity: 0.75;\n }\n `;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ia-radio-player.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-radio-player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ia-radio-player.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-radio-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAQb,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,yCAAyC,CAAC;AAKjD,OAAO,KAAK,EAAa,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,iDAAiD,CAAC;AACzD,OAAO,iEAAiE,CAAC;AACzE,OAAO,yDAAyD,CAAC;AACjE,OAAO,+CAA+C,CAAC;AACvD,OAAO,uDAAuD,CAAC;AAC/D,OAAO,qDAAqD,CAAC;AAC7D,OAAO,yDAAyD,CAAC;AACjE,OAAO,8BAA8B,CAAC;AAqCtC;;;;;;GAMG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,sDAAsD;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAEvD,mEAAmE;IACvC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IAEnE,uDAAuD;IAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEhE,0EAA0E;IAC9C,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;IAEvE,oCAAoC;IACR,WAAW,SAAK;IAE5C,0CAA0C;IACd,UAAU,SAAM;IAE5C,oEAAoE;IACvC,iBAAiB,UAAS;IAEvD,0DAA0D;IAC7B,cAAc,UAAS;IAE3C,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,MAAM,CAAK;IAEnB,OAAO,CAAC,WAAW,CAAS;IAErC,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAAK;IAEA,OAAO,CAAC,YAAY,CAAC,CAAwB;IAE3C,OAAO,CAAC,cAAc,CAAC,CAA0B;IAG9E,OAAO,CAAC,qBAAqB,CAAC,CAAiC;IAE/D,MAAM,IAAI,cAAc;IAcxB,sBAAsB;IACtB,IAAI,IAAI,IAAI;IAIZ,sBAAsB;IACtB,KAAK,IAAI,IAAI;IAIb,mDAAmD;IACnD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,KAAK,oBAAoB,GAa/B;IAED,OAAO,KAAK,iBAAiB,GAO5B;IAED,OAAO,KAAK,sBAAsB,GAWjC;IAED,OAAO,KAAK,wBAAwB,GAiBnC;IAED,OAAO,KAAK,wBAAwB,GAanC;IAED,OAAO,KAAK,mBAAmB,GAQ9B;IAED,OAAO,KAAK,sBAAsB,GAUjC;IAED,OAAO,KAAK,qBAAqB,GA8BhC;IAED,6EAA6E;IAC7E,OAAO,KAAK,qBAAqB,GAoBhC;IAED,sEAAsE;IACtE,OAAO,KAAK,mBAAmB,GAS9B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,aAAa,GAIxB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,wEAAwE;IACxE,OAAO,KAAK,cAAc,GAOzB;IAED,8DAA8D;IAC9D,OAAO,KAAK,UAAU,GAKrB;IAED;;;;;OAKG;IACH,OAAO,KAAK,wBAAwB,GASnC;IAED,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAoBhD,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAS/B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,mBAAmB;IAY3B;;;;;;;;;;;OAWG;YACW,aAAa;IA4B3B,OAAO,CAAC,8BAA8B;IAiBtC,0EAA0E;IAC1E,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,OAAO;IAIf,oEAAoE;IACpE,OAAO,CAAC,aAAa;IASrB,MAAM,KAAK,MAAM,IAAI,cAAc,CAyKlC;CACF"}
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, html, LitElement, nothing, } from 'lit';
3
3
  import { property, query, state } from 'lit/decorators.js';
4
4
  import { customElement } from '../../util/custom-element.js';
5
- import { localized, msg, str } from '@lit/localize';
5
+ import { msg, str } from '@lit/localize';
6
6
  import { PlaybackMode } from '../../elements/ia-playback-controls/models.js';
7
7
  import '../../elements/ia-audio-element/ia-audio-element.js';
8
8
  import '../../elements/ia-expandable-search-bar/ia-expandable-search-bar.js';
@@ -748,8 +748,7 @@ __decorate([
748
748
  query('ia-search-results-switcher')
749
749
  ], IARadioPlayer.prototype, "searchResultsSwitcher", void 0);
750
750
  IARadioPlayer = __decorate([
751
- customElement('ia-radio-player'),
752
- localized()
751
+ customElement('ia-radio-player')
753
752
  ], IARadioPlayer);
754
753
  export { IARadioPlayer };
755
754
  //# sourceMappingURL=ia-radio-player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ia-radio-player.js","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-radio-player.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,EACV,OAAO,GAIR,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAazE,OAAO,iDAAiD,CAAC;AACzD,OAAO,iEAAiE,CAAC;AACzE,OAAO,yDAAyD,CAAC;AACjE,OAAO,+CAA+C,CAAC;AACvD,OAAO,uDAAuD,CAAC;AAC/D,OAAO,qDAAqD,CAAC;AAC7D,OAAO,yDAAyD,CAAC;AACjE,OAAO,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,SAAS;IAClB,kBAAkB,EAAE,oBAAoB;IACxC,8BAA8B,EAAE,gCAAgC;IAChE,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,yBAAyB;CACnD,CAAC;AAEF,gDAAgD;AAChD,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;GAMG;AAGI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QAaL,oCAAoC;QACR,gBAAW,GAAG,CAAC,CAAC;QAE5C,0CAA0C;QACd,eAAU,GAAG,EAAE,CAAC;QAE5C,oEAAoE;QACvC,sBAAiB,GAAG,KAAK,CAAC;QAEvD,0DAA0D;QAC7B,mBAAc,GAAG,KAAK,CAAC;QAEnC,oBAAe,GAAG,CAAC,CAAC;QAEpB,cAAS,GAAG,KAAK,CAAC;QAElB,aAAQ,GAAG,CAAC,CAAC;QAEb,iBAAY,GAAG,CAAC,CAAC;QAEjB,WAAM,GAAG,CAAC,CAAC;QAEX,gBAAW,GAAG,KAAK,CAAC;QAErC,2EAA2E;QACnE,mBAAc,GAAG,CAAC,CAAC;IA4tB7B,CAAC;IAntBC,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB;;UAEvB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,sBAAsB;UACrD,IAAI,CAAC,wBAAwB;;YAE3B,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,mBAAmB;;UAE3D,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,sBAAsB;;KAE9D,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI;QACF,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,sBAAsB;IACtB,KAAK;QACH,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,OAAe;QACpB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAA;;mBAEI,IAAI,CAAC,YAAY;wBACZ,IAAI,CAAC,YAAY;kBACvB,IAAI,CAAC,MAAM;sBACP,IAAI,CAAC,gBAAgB;0BACjB,IAAI,CAAC,oBAAoB;2BACxB,IAAI,CAAC,eAAe;0BACrB,IAAI,CAAC,cAAc;mBAC1B,IAAI,CAAC,OAAO;;KAE1B,CAAC;IACJ,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAA;;6BAEc,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;4BACzB,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;;KAE9C,CAAC;IACJ,CAAC;IAED,IAAY,sBAAsB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC;QAE7B,OAAO,IAAI,CAAA;;;cAGD,OAAO;cACP,GAAG,CAAC,iBAAiB,CAAC;;KAE/B,CAAC;IACJ,CAAC;IAED,IAAY,wBAAwB;QAClC,OAAO,IAAI,CAAA;;wBAES,IAAI,CAAC,SAAS;YAC5B,CAAC,CAAC,YAAY,CAAC,OAAO;YACtB,CAAC,CAAC,YAAY,CAAC,MAAM;wBACP,IAAI,CAAC,YAAY;kBACvB,IAAI,CAAC,MAAM;+BACE,IAAI,CAAC,gBAAgB;qCACf,IAAI,CAAC,qBAAqB;kCAC7B,IAAI,CAAC,mBAAmB;wBAClC,IAAI,CAAC,kBAAkB;8BACjB,IAAI,CAAC,wBAAwB;uCACpB,IAAI,CAAC,uBAAuB;uCAC5B,IAAI,CAAC,uBAAuB;;KAE9D,CAAC;IACJ,CAAC;IAED,IAAY,wBAAwB;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7C,IAAI,CAAC,WAAW;YAAE,OAAO,OAAO,CAAC;QAEjC,OAAO,IAAI,CAAA;;;uBAGQ,WAAW;2BACP,IAAI,CAAC,eAAe;0BACrB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;uBACjD,IAAI,CAAC,WAAW;;KAElC,CAAC;IACJ,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAA;;oCAEqB,IAAI,CAAC,wBAAwB;iBAChD,IAAI,CAAC,eAAe;uBACd,IAAI,CAAC,WAAW;;KAElC,CAAC;IACJ,CAAC;IAED,IAAY,sBAAsB;QAChC,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,iBAAiB;yBACjB,IAAI,CAAC,WAAW;qCACJ,IAAI,CAAC,6BAA6B;;;KAGlE,CAAC;IACJ,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAA;;;wBAGS,IAAI,CAAC,UAAU;2BACZ,IAAI,CAAC,aAAa;6BAChB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;yBACjC,IAAI,CAAC,iBAAiB;6BAClB,IAAI,CAAC,qBAAqB;iCACtB,IAAI,CAAC,yBAAyB;2BACpC,IAAI,CAAC,mBAAmB;;;;;;;;;+CASJ,IAAI,CAAC,mBAAmB;;YAE3D,IAAI,CAAC,WAAW;YAChB,CAAC,CAAC,IAAI,CAAA;;+BAEa,GAAG,CAAC,0BAA0B,CAAC;sCACxB;YAC1B,CAAC,CAAC,IAAI,CAAC,qBAAqB;;;KAGnC,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAY,qBAAqB;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClE,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9C,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;;YAEL,GAAG,CAAC,oBAAoB,CAAC;;OAE9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;2BAEY,WAAW;oCACF,IAAI,CAAC,8BAA8B;;KAElE,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,IAAY,mBAAmB;QAC7B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAC/D,OAAO,EAAE,CAAC;QAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACxC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAElD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,KAAK,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAC/D,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,uBAAuB,EAAE,aAAa,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAY,aAAa;QACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9D,WAAW;SACZ,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,wEAAwE;IACxE,IAAY,cAAc;QACxB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG;YACjD,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG;SAC9C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8DAA8D;IAC9D,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,IAAY,wBAAwB;QAClC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,iBAAiC;QACvC,IAAI,iBAAiB,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA0B,MAAM,CAAC,kBAAkB,EAAE;gBAClE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;aAC1C,CAAC,CACH,CAAC;YAEF,IAAI,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,CAAuC;QAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO;QAEtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,yEAAyE;QACzE,8CAA8C;QAC9C,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAEO,oBAAoB,CAAC,CAAoC;QAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC9B,0EAA0E;QAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEO,wBAAwB,CAC9B,CAAwC;QAExC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAClC,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO;QAEvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA2B,MAAM,CAAC,mBAAmB,EAAE;YACpE,MAAM,EAAE,EAAE,YAAY,EAAE;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,CAAkC;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QAEjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAqB,eAAe,EAAE;YACnD,MAAM,EAAE,EAAE,MAAM,EAAE;SACnB,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjE,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAEjC,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;;YACzC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAEhC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAyB,MAAM,CAAC,sBAAsB,EAAE;YACrE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;SACtC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAChD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,GAAG,kBAAkB,CACjE,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAEhE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjE,CAAC;IAEO,uBAAuB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CACjD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,GAAG,kBAAkB,CACjE,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAC3B,WAAqB,EACrB,IAAqC,EACrC,KAAa;QAEb,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACtE,CAAC;IAEO,WAAW,CAAC,CAAiC;QACnD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAsB,MAAM,CAAC,oBAAoB,EAAE;YAChE,MAAM,EAAE,EAAE,OAAO,EAAE;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,6BAA6B,CACnC,CAAgD;QAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAsB,MAAM,CAAC,uBAAuB,EAAE;YACnE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE;SACjC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,CAAiC;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,0EAA0E;QAC1E,mEAAmE;QACnE,wEAAwE;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;YACzC,wEAAwE;YACxE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,qBAAqB,CAAC,CAAiC;QAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,yBAAyB,CAC/B,CAAsD;QAEtD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QACzC,0EAA0E;QAC1E,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,aAAa,CAAC,IAAY;QACtC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;YAC3D,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc;gBAAE,OAAO;YAE7C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc;gBAAE,OAAO;YAE7C,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACT,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,8BAA8B,CACpC,CAA6C;QAE7C,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACvC,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEpE,IAAI,CAAC,cAAc,CAAC,yBAAyB,GAAG,iBAAiB,CAAC;QAClE,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE,CAAC;QAEnD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,MAAM,CAAC,8BAA8B,EACrC,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAClC,CACF,CAAC;IACJ,CAAC;IAED,0EAA0E;IAClE,yBAAyB;QAC/B,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,CAAC,yBAAyB,GAAG,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,UAAkB;QAC9C,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAyB,MAAM,CAAC,iBAAiB,EAAE;YAChE,MAAM,EAAE,EAAE,UAAU,EAAE;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,oEAAoE;IAC5D,aAAa;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CACvE,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuKT,CAAC;IACJ,CAAC;CACF,CAAA;AAhwB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAA4B;AAG3B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDAAwC;AAGvC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAqC;AAGpC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DAA4C;AAG3C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAiB;AAGhB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAAiB;AAGf;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDAA2B;AAG1B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDAAwB;AAEnC;IAAhB,KAAK,EAAE;sDAA6B;AAEpB;IAAhB,KAAK,EAAE;gDAA2B;AAElB;IAAhB,KAAK,EAAE;+CAAsB;AAEb;IAAhB,KAAK,EAAE;mDAA0B;AAEjB;IAAhB,KAAK,EAAE;6CAAoB;AAEX;IAAhB,KAAK,EAAE;kDAA6B;AAKF;IAAlC,KAAK,CAAC,kBAAkB,CAAC;mDAA8C;AAEnC;IAApC,KAAK,CAAC,oBAAoB,CAAC;qDAAkD;AAGtE;IADP,KAAK,CAAC,4BAA4B,CAAC;4DAC2B;AA7CpD,aAAa;IAFzB,aAAa,CAAC,iBAAiB,CAAC;IAChC,SAAS,EAAE;GACC,aAAa,CAkwBzB","sourcesContent":["import {\n css,\n html,\n LitElement,\n nothing,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg, str } from '@lit/localize';\n\nimport type { AudioSource } from '@src/elements/ia-audio-element/models';\nimport type { QuickSearchEntry } from '@src/elements/ia-expandable-search-bar/models';\nimport { PlaybackMode } from '@src/elements/ia-playback-controls/models';\nimport type {\n TranscriptConfig,\n TranscriptEntryConfig,\n} from '@src/elements/ia-transcript-view/models';\nimport type { IAAudioElement } from '@src/elements/ia-audio-element/ia-audio-element';\nimport type { IATranscriptView } from '@src/elements/ia-transcript-view/ia-transcript-view';\nimport type { ZoneOfSilence } from '@src/elements/ia-waveform-progress/models';\n\nimport type { MusicZone, RadioPlayerConfig } from './models';\nimport type { SearchHandlerInterface } from './search/search-handler';\nimport type { IASearchResultsSwitcher } from './ia-search-results-switcher';\n\nimport '@src/elements/ia-audio-element/ia-audio-element';\nimport '@src/elements/ia-expandable-search-bar/ia-expandable-search-bar';\nimport '@src/elements/ia-playback-controls/ia-playback-controls';\nimport '@src/elements/ia-scrubber-bar/ia-scrubber-bar';\nimport '@src/elements/ia-status-indicator/ia-status-indicator';\nimport '@src/elements/ia-transcript-view/ia-transcript-view';\nimport '@src/elements/ia-waveform-progress/ia-waveform-progress';\nimport './ia-search-results-switcher';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n CanPlay: 'canplay',\n CurrentTimeChanged: 'currentTimeChanged',\n HighlightedSearchResultChanged: 'highlightedSearchResultChanged',\n JumpBackButtonPressed: 'jumpBackButtonPressed',\n JumpForwardButtonPressed: 'jumpForwardButtonPressed',\n NextSectionButtonPressed: 'nextSectionButtonPressed',\n PlaybackPaused: 'playbackPaused',\n PlaybackRateChanged: 'playbackRateChanged',\n PlaybackStarted: 'playbackStarted',\n PlayPauseButtonPressed: 'playPauseButtonPressed',\n PrevSectionButtonPressed: 'prevSectionButtonPressed',\n SearchCleared: 'searchCleared',\n SearchExecuted: 'searchExecuted',\n SearchFailed: 'searchFailed',\n SearchTermChanged: 'searchTermChanged',\n TimeChangedFromScrub: 'timeChangedFromScrub',\n TranscriptEntrySelected: 'transcriptEntrySelected',\n};\n\n/** How far the skip buttons move, in seconds */\nconst SKIP_SECONDS = 10;\n\n/** Shortest term worth searching for */\nconst MIN_SEARCH_LENGTH = 2;\n\n/**\n * Nudge past a section boundary when jumping to it, so playback lands inside\n * the next section rather than exactly on its edge.\n */\nconst SECTION_SEEK_NUDGE = 0.1;\n\n/**\n * A player for transcribed radio broadcasts.\n *\n * It owns no playback or search logic of its own. It wires the audio element,\n * transport controls, waveform, scrubber, search bar and transcript together,\n * and hands searching off to whatever `searchHandler` it is given.\n */\n@customElement('ia-radio-player')\n@localized()\nexport class IARadioPlayer extends LitElement {\n /** What is being played, and what to show about it */\n @property({ type: Object }) config?: RadioPlayerConfig;\n\n /** Where searches go. Without one, the search bar does nothing. */\n @property({ type: Object }) searchHandler?: SearchHandlerInterface;\n\n /** The transcript to show when no search is running */\n @property({ type: Object }) transcriptConfig?: TranscriptConfig;\n\n /** The transcript marked up with search results, shown while searching */\n @property({ type: Object }) searchResultsTranscript?: TranscriptConfig;\n\n /** Playback position, in seconds */\n @property({ type: Number }) currentTime = 0;\n\n /** What is currently in the search bar */\n @property({ type: String }) searchTerm = '';\n\n /** Whether to skip past the music sections rather than play them */\n @property({ type: Boolean }) skipMusicSections = false;\n\n /** Whether to shade the music sections on the waveform */\n @property({ type: Boolean }) showMusicZones = false;\n\n @state() private percentComplete = 0;\n\n @state() private isPlaying = false;\n\n @state() private duration = 0;\n\n @state() private playbackRate = 1;\n\n @state() private volume = 1;\n\n @state() private isSearching = false;\n\n /** Numbers each search so a stale one can be told from the current one. */\n private latestSearchId = 0;\n\n @query('ia-audio-element') private audioElement?: IAAudioElement | null;\n\n @query('ia-transcript-view') private transcriptView?: IATranscriptView | null;\n\n @query('ia-search-results-switcher')\n private searchResultsSwitcher?: IASearchResultsSwitcher | null;\n\n render(): TemplateResult {\n return html`\n ${this.audioElementTemplate}\n <section role=\"main\">\n ${this.titleDateTemplate} ${this.collectionLogoTemplate}\n ${this.playbackControlsTemplate}\n <div class=\"waveform-scrubber-container\">\n ${this.waveformProgressTemplate} ${this.scrubberBarTemplate}\n </div>\n ${this.searchSectionTemplate} ${this.transcriptViewTemplate}\n </section>\n `;\n }\n\n /** Starts playback */\n play(): void {\n this.audioElement?.play();\n }\n\n /** Pauses playback */\n pause(): void {\n this.audioElement?.pause();\n }\n\n /** Jumps to a position in the track, in seconds */\n seekTo(seconds: number): void {\n this.audioElement?.seekTo(seconds);\n }\n\n private get audioElementTemplate(): TemplateResult {\n return html`\n <ia-audio-element\n .sources=${this.audioSources}\n .playbackRate=${this.playbackRate}\n .volume=${this.volume}\n @timeupdate=${this.handleTimeChange}\n @durationchange=${this.handleDurationChange}\n @playbackStarted=${this.playbackStarted}\n @playbackPaused=${this.playbackPaused}\n @canplay=${this.canPlay}\n ></ia-audio-element>\n `;\n }\n\n private get titleDateTemplate(): TemplateResult {\n return html`\n <div class=\"title-date\">\n <div class=\"title\">${this.config?.title ?? ''}</div>\n <div class=\"date\">${this.config?.date ?? ''}</div>\n </div>\n `;\n }\n\n private get collectionLogoTemplate(): TemplateResult | typeof nothing {\n const logoUrl = this.config?.logoUrl;\n if (!logoUrl) return nothing;\n\n return html`\n <img\n class=\"collection-logo\"\n src=${logoUrl}\n alt=${msg('Collection logo')}\n />\n `;\n }\n\n private get playbackControlsTemplate(): TemplateResult {\n return html`\n <ia-playback-controls\n .playbackMode=${this.isPlaying\n ? PlaybackMode.playing\n : PlaybackMode.paused}\n .playbackRate=${this.playbackRate}\n .volume=${this.volume}\n @back-button-pressed=${this.handleBackButton}\n @play-pause-button-pressed=${this.handlePlayPauseButton}\n @forward-button-pressed=${this.handleForwardButton}\n @volumeChange=${this.handleVolumeChange}\n @playbackRateChange=${this.handlePlaybackRateChange}\n @next-section-button-pressed=${this.handleNextSectionButton}\n @prev-section-button-pressed=${this.handlePrevSectionButton}\n ></ia-playback-controls>\n `;\n }\n\n private get waveformProgressTemplate(): TemplateResult | typeof nothing {\n const waveformUrl = this.config?.waveformUrl;\n if (!waveformUrl) return nothing;\n\n return html`\n <ia-waveform-progress\n interactive\n .waveformUrl=${waveformUrl}\n .percentComplete=${this.percentComplete}\n .zonesOfSilence=${this.showMusicZones ? this.zonesOfSilence : []}\n @valuechange=${this.handleScrub}\n ></ia-waveform-progress>\n `;\n }\n\n private get scrubberBarTemplate(): TemplateResult {\n return html`\n <ia-scrubber-bar\n .sectionMarkerPercentages=${this.sectionMarkerPercentages}\n .value=${this.percentComplete}\n @valuechange=${this.handleScrub}\n ></ia-scrubber-bar>\n `;\n }\n\n private get transcriptViewTemplate(): TemplateResult {\n return html`\n <div class=\"transcript-container\">\n <ia-transcript-view\n .config=${this.currentTranscript}\n .currentTime=${this.currentTime}\n @transcriptEntrySelected=${this.handleTranscriptEntrySelected}\n ></ia-transcript-view>\n </div>\n `;\n }\n\n private get searchSectionTemplate(): TemplateResult {\n return html`\n <div class=\"search-section\">\n <ia-expandable-search-bar\n .searchTerm=${this.searchTerm}\n .quickSearches=${this.quickSearches}\n ?showsDisclosure=${this.quickSearches.length > 0}\n @inputchange=${this.handleSearchInput}\n @enterKeyPressed=${this.handleSearchSubmitted}\n @quickSearchSelected=${this.handleQuickSearchSelected}\n @searchCleared=${this.handleSearchCleared}\n ></ia-expandable-search-bar>\n\n <div class=\"search-results-info\">\n <!--\n Always rendered, so a screen reader is already watching it by the\n time the text changes. A live region added to the page with its\n text already in place is not announced.\n -->\n <div class=\"sr-only\" role=\"status\">${this.searchStatusMessage}</div>\n\n ${this.isSearching\n ? html`<ia-status-indicator\n mode=\"loading\"\n loadingTitle=${msg('Searching the transcript')}\n ></ia-status-indicator>`\n : this.searchOutcomeTemplate}\n </div>\n </div>\n `;\n }\n\n /** What to show once a search has come back: a counter, or nothing found. */\n private get searchOutcomeTemplate(): TemplateResult | typeof nothing {\n if (this.searchTerm.length === 0 || !this.searchResultsTranscript) {\n return nothing;\n }\n\n const resultCount = this.searchResults.length;\n if (resultCount === 0) {\n return html`\n <div class=\"no-search-results-message\" aria-hidden=\"true\">\n ${msg('No search results.')}\n </div>\n `;\n }\n\n return html`\n <ia-search-results-switcher\n .numberOfResults=${resultCount}\n @searchResultIndexChanged=${this.handleSearchResultIndexChanged}\n ></ia-search-results-switcher>\n `;\n }\n\n /** What the live region announces as a search runs and comes back. */\n private get searchStatusMessage(): string {\n if (this.isSearching) return msg('Searching the transcript');\n if (this.searchTerm.length === 0 || !this.searchResultsTranscript)\n return '';\n\n const count = this.searchResults.length;\n if (count === 0) return msg('No search results.');\n\n return msg(str`${count} search results`);\n }\n\n private get currentTranscript(): TranscriptConfig | undefined {\n return this.searchResultsTranscript ?? this.transcriptConfig;\n }\n\n private get transcriptEntries(): TranscriptEntryConfig[] {\n return this.currentTranscript?.entries ?? [];\n }\n\n private get searchResults(): TranscriptEntryConfig[] {\n return this.searchResultsTranscript?.searchResults ?? [];\n }\n\n private get audioSources(): AudioSource[] {\n return this.config?.audioSources ?? [];\n }\n\n private get quickSearches(): QuickSearchEntry[] {\n return (this.config?.quickSearches ?? []).map((displayText) => ({\n displayText,\n }));\n }\n\n private get musicEntries(): TranscriptEntryConfig[] {\n return this.transcriptEntries.filter((entry) => entry.isMusic);\n }\n\n /** The music stretches, as percentages, for marking on the waveform. */\n private get zonesOfSilence(): ZoneOfSilence[] {\n if (this.duration === 0) return [];\n\n return this.musicEntries.map((entry) => ({\n startPercent: (entry.start / this.duration) * 100,\n endPercent: (entry.end / this.duration) * 100,\n }));\n }\n\n /** The music stretches in seconds, for skipping past them. */\n private get musicZones(): MusicZone[] {\n return this.musicEntries.map((entry) => ({\n start: entry.start,\n end: entry.end,\n }));\n }\n\n /**\n * Every section boundary as a percentage, including the two ends.\n *\n * The section skip buttons step between these, and the scrubber draws a\n * marker at each.\n */\n private get sectionMarkerPercentages(): number[] {\n const percentages = [0];\n\n this.zonesOfSilence.forEach((zone) => {\n percentages.push(zone.startPercent, zone.endPercent);\n });\n percentages.push(100);\n\n return percentages;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('searchResultsTranscript')) {\n this.resetSearchResultPosition();\n }\n\n if (changedProperties.has('searchHandler') && this.searchTerm) {\n this.executeSearch(this.searchTerm);\n }\n\n if (changedProperties.has('currentTime')) {\n this.dispatchEvent(\n new CustomEvent<{ currentTime: number }>(Events.CurrentTimeChanged, {\n detail: { currentTime: this.currentTime },\n }),\n );\n\n if (this.skipMusicSections) this.skipMusicZone();\n }\n }\n\n private handleTimeChange(e: CustomEvent<{ currentTime: number }>): void {\n const { currentTime } = e.detail;\n if (currentTime === undefined) return;\n\n this.currentTime = currentTime;\n // A duration of 0 means nothing has loaded yet, and dividing by it would\n // put NaN into the scrubber and the waveform.\n this.percentComplete =\n this.duration > 0 ? (currentTime / this.duration) * 100 : 0;\n }\n\n private handleDurationChange(e: CustomEvent<{ duration: number }>): void {\n const { duration } = e.detail;\n // A stream reports Infinity, and metadata that hasn't loaded reports NaN.\n if (!Number.isFinite(duration)) return;\n\n this.duration = duration;\n }\n\n private handlePlaybackRateChange(\n e: CustomEvent<{ playbackRate: number }>,\n ): void {\n const { playbackRate } = e.detail;\n if (playbackRate === undefined) return;\n\n this.playbackRate = playbackRate;\n this.dispatchEvent(\n new CustomEvent<{ playbackRate: number }>(Events.PlaybackRateChanged, {\n detail: { playbackRate },\n }),\n );\n }\n\n private handleVolumeChange(e: CustomEvent<{ volume: number }>): void {\n const { volume } = e.detail;\n if (volume === undefined) return;\n\n this.volume = volume;\n this.dispatchEvent(\n new CustomEvent<{ volume: number }>('volumeChanged', {\n detail: { volume },\n }),\n );\n }\n\n private handleBackButton(): void {\n this.audioElement?.seekBy(-SKIP_SECONDS);\n this.dispatchEvent(new Event(Events.JumpBackButtonPressed));\n }\n\n private handleForwardButton(): void {\n this.audioElement?.seekBy(SKIP_SECONDS);\n this.dispatchEvent(new Event(Events.JumpForwardButtonPressed));\n }\n\n private handlePlayPauseButton(): void {\n this.isPlaying = !this.isPlaying;\n\n if (this.isPlaying) this.audioElement?.play();\n else this.audioElement?.pause();\n\n this.dispatchEvent(\n new CustomEvent<{ isPlaying: boolean }>(Events.PlayPauseButtonPressed, {\n detail: { isPlaying: this.isPlaying },\n }),\n );\n }\n\n private handleNextSectionButton(): void {\n const ahead = this.sectionMarkerPercentages.filter(\n (percent) => percent > this.percentComplete + SECTION_SEEK_NUDGE,\n );\n this.seekToSectionBoundary(ahead, Math.min, SECTION_SEEK_NUDGE);\n\n this.dispatchEvent(new Event(Events.NextSectionButtonPressed));\n }\n\n private handlePrevSectionButton(): void {\n const behind = this.sectionMarkerPercentages.filter(\n (percent) => percent < this.percentComplete - SECTION_SEEK_NUDGE,\n );\n this.seekToSectionBoundary(behind, Math.max, -SECTION_SEEK_NUDGE);\n\n this.dispatchEvent(new Event(Events.PrevSectionButtonPressed));\n }\n\n /**\n * Seeks to the nearest of a set of boundaries.\n *\n * Does nothing when the set is empty, since `Math.min` of nothing is\n * `Infinity` and `Math.max` of nothing is `-Infinity`, either of which would\n * be handed straight to the audio element as a position.\n */\n private seekToSectionBoundary(\n percentages: number[],\n pick: (...values: number[]) => number,\n nudge: number,\n ): void {\n if (percentages.length === 0) return;\n\n const boundary = pick(...percentages);\n this.audioElement?.seekTo(this.duration * (boundary / 100) + nudge);\n }\n\n private handleScrub(e: CustomEvent<{ value: number }>): void {\n const percentage = e.detail.value;\n if (percentage === undefined) return;\n\n const newTime = this.duration * (percentage / 100);\n this.currentTime = newTime;\n this.percentComplete = percentage;\n this.audioElement?.seekTo(newTime);\n\n this.dispatchEvent(\n new CustomEvent<{ newTime: number }>(Events.TimeChangedFromScrub, {\n detail: { newTime },\n }),\n );\n }\n\n private handleTranscriptEntrySelected(\n e: CustomEvent<{ entry: TranscriptEntryConfig }>,\n ): void {\n const { entry } = e.detail;\n if (!entry) return;\n\n this.currentTime = entry.start;\n this.audioElement?.seekTo(entry.start);\n this.audioElement?.play();\n\n this.dispatchEvent(\n new CustomEvent<{ newTime: number }>(Events.TranscriptEntrySelected, {\n detail: { newTime: entry.start },\n }),\n );\n }\n\n private handleSearchInput(e: CustomEvent<{ value: string }>): void {\n const { value } = e.detail;\n if (value === undefined) return;\n\n this.searchTerm = value;\n\n // An empty box has nothing to show results for. The counter already hides\n // itself on an empty term, so without dropping the results too the\n // transcript keeps its outlines and offers no way to step between them.\n if (value.length === 0) {\n this.searchResultsTranscript = undefined;\n // Abandons whatever is in flight, so its results can't land afterwards.\n this.latestSearchId += 1;\n this.isSearching = false;\n this.resetSearchResultPosition();\n }\n\n this.emitSearchTermChanged(value);\n }\n\n private handleSearchSubmitted(e: CustomEvent<{ value: string }>): void {\n const { value } = e.detail;\n if (!value) return;\n\n this.executeSearch(value);\n }\n\n private handleQuickSearchSelected(\n e: CustomEvent<{ quickSearchEntry: QuickSearchEntry }>,\n ): void {\n const term = e.detail.quickSearchEntry?.displayText;\n if (!term) return;\n\n this.emitSearchTermChanged(term);\n this.executeSearch(term);\n }\n\n private handleSearchCleared(): void {\n this.searchTerm = '';\n this.searchResultsTranscript = undefined;\n // Abandons whatever is in flight, so its results can't arrive after this.\n this.latestSearchId += 1;\n this.isSearching = false;\n\n this.dispatchEvent(new Event(Events.SearchCleared));\n this.emitSearchTermChanged('');\n this.resetSearchResultPosition();\n }\n\n /**\n * Runs a search and shows its results.\n *\n * Each run is numbered, and only the newest one is allowed to report back.\n * Searches go over the network, so a slow one started earlier can land after\n * a fast one started later, and without this the older results would end up\n * on screen under the newer term.\n *\n * A failed search has to put the spinner away as surely as a successful one,\n * hence the `finally`. Leaving it up would hide the search UI for as long as\n * the page lives.\n */\n private async executeSearch(term: string): Promise<void> {\n if (!this.searchHandler || term.length < MIN_SEARCH_LENGTH) {\n this.searchResultsTranscript = undefined;\n return;\n }\n\n this.searchTerm = term;\n this.isSearching = true;\n this.dispatchEvent(new Event(Events.SearchExecuted));\n\n this.latestSearchId += 1;\n const searchId = this.latestSearchId;\n\n try {\n const results = await this.searchHandler.search(term);\n if (searchId !== this.latestSearchId) return;\n\n this.searchResultsTranscript = results;\n } catch {\n if (searchId !== this.latestSearchId) return;\n\n this.searchResultsTranscript = undefined;\n this.dispatchEvent(new Event(Events.SearchFailed));\n } finally {\n if (searchId === this.latestSearchId) this.isSearching = false;\n }\n }\n\n private handleSearchResultIndexChanged(\n e: CustomEvent<{ searchResultIndex: number }>,\n ): void {\n const { searchResultIndex } = e.detail;\n if (searchResultIndex === undefined || !this.transcriptView) return;\n\n this.transcriptView.selectedSearchResultIndex = searchResultIndex;\n this.transcriptView.scrollToSelectedSearchResult();\n\n this.dispatchEvent(\n new CustomEvent<{ searchResultIndex: number }>(\n Events.HighlightedSearchResultChanged,\n { detail: { searchResultIndex } },\n ),\n );\n }\n\n /** Puts both the transcript and the switcher back to the first result. */\n private resetSearchResultPosition(): void {\n if (this.transcriptView) this.transcriptView.selectedSearchResultIndex = 0;\n if (this.searchResultsSwitcher) {\n this.searchResultsSwitcher.currentResultIndex = 0;\n }\n }\n\n private emitSearchTermChanged(searchTerm: string): void {\n this.dispatchEvent(\n new CustomEvent<{ searchTerm: string }>(Events.SearchTermChanged, {\n detail: { searchTerm },\n }),\n );\n }\n\n private playbackPaused(): void {\n this.isPlaying = false;\n this.dispatchEvent(new Event(Events.PlaybackPaused));\n }\n\n private playbackStarted(): void {\n this.isPlaying = true;\n this.dispatchEvent(new Event(Events.PlaybackStarted));\n }\n\n private canPlay(): void {\n this.dispatchEvent(new Event(Events.CanPlay));\n }\n\n /** Jumps past a music stretch if playback has wandered into one. */\n private skipMusicZone(): void {\n const activeZone = this.musicZones.find(\n (zone) => this.currentTime > zone.start && this.currentTime < zone.end,\n );\n if (!activeZone) return;\n\n this.audioElement?.seekTo(activeZone.end + SECTION_SEEK_NUDGE);\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --radio-player-title-color--: var(\n --ia-theme-radio-player-title-color,\n #fff\n );\n --radio-player-title-font--: var(\n --ia-theme-radio-player-title-font,\n 1.5em sans-serif\n );\n --radio-player-date-color--: var(\n --ia-theme-radio-player-date-color,\n #fff\n );\n --radio-player-date-font--: var(\n --ia-theme-radio-player-date-font,\n 1em sans-serif\n );\n --radio-player-logo-max-height--: var(\n --ia-theme-radio-player-logo-max-height,\n 8rem\n );\n --radio-player-waveform-height--: var(\n --ia-theme-radio-player-waveform-height,\n 5rem\n );\n }\n\n section[role='main'] {\n display: grid;\n grid-gap: 0.5rem;\n }\n\n ia-status-indicator {\n --ia-theme-icon-width: 1.5em;\n --ia-theme-primary-text-color: #999;\n\n display: block;\n margin: auto;\n }\n\n /* mobile view */\n @media (max-width: 770px) {\n section[role='main'] {\n grid-template-columns: 25% 1fr;\n grid-template-areas:\n 'collection-logo title-date'\n 'waveform-scrubber waveform-scrubber'\n 'playback-controls playback-controls'\n 'search-section search-section'\n 'transcript-container transcript-container';\n }\n\n .date {\n text-align: left;\n }\n\n ia-transcript-view {\n --ia-theme-transcript-time-display: none;\n }\n\n ia-playback-controls {\n width: 75%;\n margin: auto;\n }\n\n .search-section {\n width: 75%;\n margin: auto;\n }\n }\n\n /* wide view */\n @media (min-width: 770px) {\n section[role='main'] {\n grid-template-columns: 192px 0 250px 1fr;\n grid-template-areas:\n 'title-date title-date title-date title-date'\n 'collection-logo . playback-controls waveform-scrubber'\n 'search-section transcript-container transcript-container transcript-container';\n }\n\n .title-date {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n }\n\n ia-transcript-view {\n --ia-theme-transcript-time-display: block;\n }\n }\n\n .title-date {\n grid-area: title-date;\n }\n\n .title {\n color: var(--radio-player-title-color--);\n font: var(--radio-player-title-font--);\n }\n\n .date {\n color: var(--radio-player-date-color--);\n font: var(--radio-player-date-font--);\n }\n\n ia-waveform-progress {\n width: 100%;\n height: var(--radio-player-waveform-height--);\n }\n\n ia-playback-controls {\n grid-area: playback-controls;\n }\n\n .transcript-container {\n grid-area: transcript-container;\n }\n\n ia-transcript-view {\n max-width: 600px;\n display: block;\n }\n\n .collection-logo {\n width: 100%;\n max-height: var(--radio-player-logo-max-height--);\n object-fit: contain;\n grid-area: collection-logo;\n align-self: center;\n }\n\n .waveform-scrubber-container {\n width: 100%;\n height: 100%;\n grid-area: waveform-scrubber;\n }\n\n .search-section {\n grid-area: search-section;\n }\n\n .search-results-info {\n margin-top: 0.5em;\n }\n\n ia-expandable-search-bar {\n display: block;\n margin: auto;\n }\n\n .no-search-results-message {\n text-align: center;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ia-radio-player.js","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-radio-player.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n nothing,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg, str } from '@lit/localize';\n\nimport type { AudioSource } from '@src/elements/ia-audio-element/models';\nimport type { QuickSearchEntry } from '@src/elements/ia-expandable-search-bar/models';\nimport { PlaybackMode } from '@src/elements/ia-playback-controls/models';\nimport type {\n TranscriptConfig,\n TranscriptEntryConfig,\n} from '@src/elements/ia-transcript-view/models';\nimport type { IAAudioElement } from '@src/elements/ia-audio-element/ia-audio-element';\nimport type { IATranscriptView } from '@src/elements/ia-transcript-view/ia-transcript-view';\nimport type { ZoneOfSilence } from '@src/elements/ia-waveform-progress/models';\n\nimport type { MusicZone, RadioPlayerConfig } from './models';\nimport type { SearchHandlerInterface } from './search/search-handler';\nimport type { IASearchResultsSwitcher } from './ia-search-results-switcher';\n\nimport '@src/elements/ia-audio-element/ia-audio-element';\nimport '@src/elements/ia-expandable-search-bar/ia-expandable-search-bar';\nimport '@src/elements/ia-playback-controls/ia-playback-controls';\nimport '@src/elements/ia-scrubber-bar/ia-scrubber-bar';\nimport '@src/elements/ia-status-indicator/ia-status-indicator';\nimport '@src/elements/ia-transcript-view/ia-transcript-view';\nimport '@src/elements/ia-waveform-progress/ia-waveform-progress';\nimport './ia-search-results-switcher';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n CanPlay: 'canplay',\n CurrentTimeChanged: 'currentTimeChanged',\n HighlightedSearchResultChanged: 'highlightedSearchResultChanged',\n JumpBackButtonPressed: 'jumpBackButtonPressed',\n JumpForwardButtonPressed: 'jumpForwardButtonPressed',\n NextSectionButtonPressed: 'nextSectionButtonPressed',\n PlaybackPaused: 'playbackPaused',\n PlaybackRateChanged: 'playbackRateChanged',\n PlaybackStarted: 'playbackStarted',\n PlayPauseButtonPressed: 'playPauseButtonPressed',\n PrevSectionButtonPressed: 'prevSectionButtonPressed',\n SearchCleared: 'searchCleared',\n SearchExecuted: 'searchExecuted',\n SearchFailed: 'searchFailed',\n SearchTermChanged: 'searchTermChanged',\n TimeChangedFromScrub: 'timeChangedFromScrub',\n TranscriptEntrySelected: 'transcriptEntrySelected',\n};\n\n/** How far the skip buttons move, in seconds */\nconst SKIP_SECONDS = 10;\n\n/** Shortest term worth searching for */\nconst MIN_SEARCH_LENGTH = 2;\n\n/**\n * Nudge past a section boundary when jumping to it, so playback lands inside\n * the next section rather than exactly on its edge.\n */\nconst SECTION_SEEK_NUDGE = 0.1;\n\n/**\n * A player for transcribed radio broadcasts.\n *\n * It owns no playback or search logic of its own. It wires the audio element,\n * transport controls, waveform, scrubber, search bar and transcript together,\n * and hands searching off to whatever `searchHandler` it is given.\n */\n@customElement('ia-radio-player')\nexport class IARadioPlayer extends LitElement {\n /** What is being played, and what to show about it */\n @property({ type: Object }) config?: RadioPlayerConfig;\n\n /** Where searches go. Without one, the search bar does nothing. */\n @property({ type: Object }) searchHandler?: SearchHandlerInterface;\n\n /** The transcript to show when no search is running */\n @property({ type: Object }) transcriptConfig?: TranscriptConfig;\n\n /** The transcript marked up with search results, shown while searching */\n @property({ type: Object }) searchResultsTranscript?: TranscriptConfig;\n\n /** Playback position, in seconds */\n @property({ type: Number }) currentTime = 0;\n\n /** What is currently in the search bar */\n @property({ type: String }) searchTerm = '';\n\n /** Whether to skip past the music sections rather than play them */\n @property({ type: Boolean }) skipMusicSections = false;\n\n /** Whether to shade the music sections on the waveform */\n @property({ type: Boolean }) showMusicZones = false;\n\n @state() private percentComplete = 0;\n\n @state() private isPlaying = false;\n\n @state() private duration = 0;\n\n @state() private playbackRate = 1;\n\n @state() private volume = 1;\n\n @state() private isSearching = false;\n\n /** Numbers each search so a stale one can be told from the current one. */\n private latestSearchId = 0;\n\n @query('ia-audio-element') private audioElement?: IAAudioElement | null;\n\n @query('ia-transcript-view') private transcriptView?: IATranscriptView | null;\n\n @query('ia-search-results-switcher')\n private searchResultsSwitcher?: IASearchResultsSwitcher | null;\n\n render(): TemplateResult {\n return html`\n ${this.audioElementTemplate}\n <section role=\"main\">\n ${this.titleDateTemplate} ${this.collectionLogoTemplate}\n ${this.playbackControlsTemplate}\n <div class=\"waveform-scrubber-container\">\n ${this.waveformProgressTemplate} ${this.scrubberBarTemplate}\n </div>\n ${this.searchSectionTemplate} ${this.transcriptViewTemplate}\n </section>\n `;\n }\n\n /** Starts playback */\n play(): void {\n this.audioElement?.play();\n }\n\n /** Pauses playback */\n pause(): void {\n this.audioElement?.pause();\n }\n\n /** Jumps to a position in the track, in seconds */\n seekTo(seconds: number): void {\n this.audioElement?.seekTo(seconds);\n }\n\n private get audioElementTemplate(): TemplateResult {\n return html`\n <ia-audio-element\n .sources=${this.audioSources}\n .playbackRate=${this.playbackRate}\n .volume=${this.volume}\n @timeupdate=${this.handleTimeChange}\n @durationchange=${this.handleDurationChange}\n @playbackStarted=${this.playbackStarted}\n @playbackPaused=${this.playbackPaused}\n @canplay=${this.canPlay}\n ></ia-audio-element>\n `;\n }\n\n private get titleDateTemplate(): TemplateResult {\n return html`\n <div class=\"title-date\">\n <div class=\"title\">${this.config?.title ?? ''}</div>\n <div class=\"date\">${this.config?.date ?? ''}</div>\n </div>\n `;\n }\n\n private get collectionLogoTemplate(): TemplateResult | typeof nothing {\n const logoUrl = this.config?.logoUrl;\n if (!logoUrl) return nothing;\n\n return html`\n <img\n class=\"collection-logo\"\n src=${logoUrl}\n alt=${msg('Collection logo')}\n />\n `;\n }\n\n private get playbackControlsTemplate(): TemplateResult {\n return html`\n <ia-playback-controls\n .playbackMode=${this.isPlaying\n ? PlaybackMode.playing\n : PlaybackMode.paused}\n .playbackRate=${this.playbackRate}\n .volume=${this.volume}\n @back-button-pressed=${this.handleBackButton}\n @play-pause-button-pressed=${this.handlePlayPauseButton}\n @forward-button-pressed=${this.handleForwardButton}\n @volumeChange=${this.handleVolumeChange}\n @playbackRateChange=${this.handlePlaybackRateChange}\n @next-section-button-pressed=${this.handleNextSectionButton}\n @prev-section-button-pressed=${this.handlePrevSectionButton}\n ></ia-playback-controls>\n `;\n }\n\n private get waveformProgressTemplate(): TemplateResult | typeof nothing {\n const waveformUrl = this.config?.waveformUrl;\n if (!waveformUrl) return nothing;\n\n return html`\n <ia-waveform-progress\n interactive\n .waveformUrl=${waveformUrl}\n .percentComplete=${this.percentComplete}\n .zonesOfSilence=${this.showMusicZones ? this.zonesOfSilence : []}\n @valuechange=${this.handleScrub}\n ></ia-waveform-progress>\n `;\n }\n\n private get scrubberBarTemplate(): TemplateResult {\n return html`\n <ia-scrubber-bar\n .sectionMarkerPercentages=${this.sectionMarkerPercentages}\n .value=${this.percentComplete}\n @valuechange=${this.handleScrub}\n ></ia-scrubber-bar>\n `;\n }\n\n private get transcriptViewTemplate(): TemplateResult {\n return html`\n <div class=\"transcript-container\">\n <ia-transcript-view\n .config=${this.currentTranscript}\n .currentTime=${this.currentTime}\n @transcriptEntrySelected=${this.handleTranscriptEntrySelected}\n ></ia-transcript-view>\n </div>\n `;\n }\n\n private get searchSectionTemplate(): TemplateResult {\n return html`\n <div class=\"search-section\">\n <ia-expandable-search-bar\n .searchTerm=${this.searchTerm}\n .quickSearches=${this.quickSearches}\n ?showsDisclosure=${this.quickSearches.length > 0}\n @inputchange=${this.handleSearchInput}\n @enterKeyPressed=${this.handleSearchSubmitted}\n @quickSearchSelected=${this.handleQuickSearchSelected}\n @searchCleared=${this.handleSearchCleared}\n ></ia-expandable-search-bar>\n\n <div class=\"search-results-info\">\n <!--\n Always rendered, so a screen reader is already watching it by the\n time the text changes. A live region added to the page with its\n text already in place is not announced.\n -->\n <div class=\"sr-only\" role=\"status\">${this.searchStatusMessage}</div>\n\n ${this.isSearching\n ? html`<ia-status-indicator\n mode=\"loading\"\n loadingTitle=${msg('Searching the transcript')}\n ></ia-status-indicator>`\n : this.searchOutcomeTemplate}\n </div>\n </div>\n `;\n }\n\n /** What to show once a search has come back: a counter, or nothing found. */\n private get searchOutcomeTemplate(): TemplateResult | typeof nothing {\n if (this.searchTerm.length === 0 || !this.searchResultsTranscript) {\n return nothing;\n }\n\n const resultCount = this.searchResults.length;\n if (resultCount === 0) {\n return html`\n <div class=\"no-search-results-message\" aria-hidden=\"true\">\n ${msg('No search results.')}\n </div>\n `;\n }\n\n return html`\n <ia-search-results-switcher\n .numberOfResults=${resultCount}\n @searchResultIndexChanged=${this.handleSearchResultIndexChanged}\n ></ia-search-results-switcher>\n `;\n }\n\n /** What the live region announces as a search runs and comes back. */\n private get searchStatusMessage(): string {\n if (this.isSearching) return msg('Searching the transcript');\n if (this.searchTerm.length === 0 || !this.searchResultsTranscript)\n return '';\n\n const count = this.searchResults.length;\n if (count === 0) return msg('No search results.');\n\n return msg(str`${count} search results`);\n }\n\n private get currentTranscript(): TranscriptConfig | undefined {\n return this.searchResultsTranscript ?? this.transcriptConfig;\n }\n\n private get transcriptEntries(): TranscriptEntryConfig[] {\n return this.currentTranscript?.entries ?? [];\n }\n\n private get searchResults(): TranscriptEntryConfig[] {\n return this.searchResultsTranscript?.searchResults ?? [];\n }\n\n private get audioSources(): AudioSource[] {\n return this.config?.audioSources ?? [];\n }\n\n private get quickSearches(): QuickSearchEntry[] {\n return (this.config?.quickSearches ?? []).map((displayText) => ({\n displayText,\n }));\n }\n\n private get musicEntries(): TranscriptEntryConfig[] {\n return this.transcriptEntries.filter((entry) => entry.isMusic);\n }\n\n /** The music stretches, as percentages, for marking on the waveform. */\n private get zonesOfSilence(): ZoneOfSilence[] {\n if (this.duration === 0) return [];\n\n return this.musicEntries.map((entry) => ({\n startPercent: (entry.start / this.duration) * 100,\n endPercent: (entry.end / this.duration) * 100,\n }));\n }\n\n /** The music stretches in seconds, for skipping past them. */\n private get musicZones(): MusicZone[] {\n return this.musicEntries.map((entry) => ({\n start: entry.start,\n end: entry.end,\n }));\n }\n\n /**\n * Every section boundary as a percentage, including the two ends.\n *\n * The section skip buttons step between these, and the scrubber draws a\n * marker at each.\n */\n private get sectionMarkerPercentages(): number[] {\n const percentages = [0];\n\n this.zonesOfSilence.forEach((zone) => {\n percentages.push(zone.startPercent, zone.endPercent);\n });\n percentages.push(100);\n\n return percentages;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('searchResultsTranscript')) {\n this.resetSearchResultPosition();\n }\n\n if (changedProperties.has('searchHandler') && this.searchTerm) {\n this.executeSearch(this.searchTerm);\n }\n\n if (changedProperties.has('currentTime')) {\n this.dispatchEvent(\n new CustomEvent<{ currentTime: number }>(Events.CurrentTimeChanged, {\n detail: { currentTime: this.currentTime },\n }),\n );\n\n if (this.skipMusicSections) this.skipMusicZone();\n }\n }\n\n private handleTimeChange(e: CustomEvent<{ currentTime: number }>): void {\n const { currentTime } = e.detail;\n if (currentTime === undefined) return;\n\n this.currentTime = currentTime;\n // A duration of 0 means nothing has loaded yet, and dividing by it would\n // put NaN into the scrubber and the waveform.\n this.percentComplete =\n this.duration > 0 ? (currentTime / this.duration) * 100 : 0;\n }\n\n private handleDurationChange(e: CustomEvent<{ duration: number }>): void {\n const { duration } = e.detail;\n // A stream reports Infinity, and metadata that hasn't loaded reports NaN.\n if (!Number.isFinite(duration)) return;\n\n this.duration = duration;\n }\n\n private handlePlaybackRateChange(\n e: CustomEvent<{ playbackRate: number }>,\n ): void {\n const { playbackRate } = e.detail;\n if (playbackRate === undefined) return;\n\n this.playbackRate = playbackRate;\n this.dispatchEvent(\n new CustomEvent<{ playbackRate: number }>(Events.PlaybackRateChanged, {\n detail: { playbackRate },\n }),\n );\n }\n\n private handleVolumeChange(e: CustomEvent<{ volume: number }>): void {\n const { volume } = e.detail;\n if (volume === undefined) return;\n\n this.volume = volume;\n this.dispatchEvent(\n new CustomEvent<{ volume: number }>('volumeChanged', {\n detail: { volume },\n }),\n );\n }\n\n private handleBackButton(): void {\n this.audioElement?.seekBy(-SKIP_SECONDS);\n this.dispatchEvent(new Event(Events.JumpBackButtonPressed));\n }\n\n private handleForwardButton(): void {\n this.audioElement?.seekBy(SKIP_SECONDS);\n this.dispatchEvent(new Event(Events.JumpForwardButtonPressed));\n }\n\n private handlePlayPauseButton(): void {\n this.isPlaying = !this.isPlaying;\n\n if (this.isPlaying) this.audioElement?.play();\n else this.audioElement?.pause();\n\n this.dispatchEvent(\n new CustomEvent<{ isPlaying: boolean }>(Events.PlayPauseButtonPressed, {\n detail: { isPlaying: this.isPlaying },\n }),\n );\n }\n\n private handleNextSectionButton(): void {\n const ahead = this.sectionMarkerPercentages.filter(\n (percent) => percent > this.percentComplete + SECTION_SEEK_NUDGE,\n );\n this.seekToSectionBoundary(ahead, Math.min, SECTION_SEEK_NUDGE);\n\n this.dispatchEvent(new Event(Events.NextSectionButtonPressed));\n }\n\n private handlePrevSectionButton(): void {\n const behind = this.sectionMarkerPercentages.filter(\n (percent) => percent < this.percentComplete - SECTION_SEEK_NUDGE,\n );\n this.seekToSectionBoundary(behind, Math.max, -SECTION_SEEK_NUDGE);\n\n this.dispatchEvent(new Event(Events.PrevSectionButtonPressed));\n }\n\n /**\n * Seeks to the nearest of a set of boundaries.\n *\n * Does nothing when the set is empty, since `Math.min` of nothing is\n * `Infinity` and `Math.max` of nothing is `-Infinity`, either of which would\n * be handed straight to the audio element as a position.\n */\n private seekToSectionBoundary(\n percentages: number[],\n pick: (...values: number[]) => number,\n nudge: number,\n ): void {\n if (percentages.length === 0) return;\n\n const boundary = pick(...percentages);\n this.audioElement?.seekTo(this.duration * (boundary / 100) + nudge);\n }\n\n private handleScrub(e: CustomEvent<{ value: number }>): void {\n const percentage = e.detail.value;\n if (percentage === undefined) return;\n\n const newTime = this.duration * (percentage / 100);\n this.currentTime = newTime;\n this.percentComplete = percentage;\n this.audioElement?.seekTo(newTime);\n\n this.dispatchEvent(\n new CustomEvent<{ newTime: number }>(Events.TimeChangedFromScrub, {\n detail: { newTime },\n }),\n );\n }\n\n private handleTranscriptEntrySelected(\n e: CustomEvent<{ entry: TranscriptEntryConfig }>,\n ): void {\n const { entry } = e.detail;\n if (!entry) return;\n\n this.currentTime = entry.start;\n this.audioElement?.seekTo(entry.start);\n this.audioElement?.play();\n\n this.dispatchEvent(\n new CustomEvent<{ newTime: number }>(Events.TranscriptEntrySelected, {\n detail: { newTime: entry.start },\n }),\n );\n }\n\n private handleSearchInput(e: CustomEvent<{ value: string }>): void {\n const { value } = e.detail;\n if (value === undefined) return;\n\n this.searchTerm = value;\n\n // An empty box has nothing to show results for. The counter already hides\n // itself on an empty term, so without dropping the results too the\n // transcript keeps its outlines and offers no way to step between them.\n if (value.length === 0) {\n this.searchResultsTranscript = undefined;\n // Abandons whatever is in flight, so its results can't land afterwards.\n this.latestSearchId += 1;\n this.isSearching = false;\n this.resetSearchResultPosition();\n }\n\n this.emitSearchTermChanged(value);\n }\n\n private handleSearchSubmitted(e: CustomEvent<{ value: string }>): void {\n const { value } = e.detail;\n if (!value) return;\n\n this.executeSearch(value);\n }\n\n private handleQuickSearchSelected(\n e: CustomEvent<{ quickSearchEntry: QuickSearchEntry }>,\n ): void {\n const term = e.detail.quickSearchEntry?.displayText;\n if (!term) return;\n\n this.emitSearchTermChanged(term);\n this.executeSearch(term);\n }\n\n private handleSearchCleared(): void {\n this.searchTerm = '';\n this.searchResultsTranscript = undefined;\n // Abandons whatever is in flight, so its results can't arrive after this.\n this.latestSearchId += 1;\n this.isSearching = false;\n\n this.dispatchEvent(new Event(Events.SearchCleared));\n this.emitSearchTermChanged('');\n this.resetSearchResultPosition();\n }\n\n /**\n * Runs a search and shows its results.\n *\n * Each run is numbered, and only the newest one is allowed to report back.\n * Searches go over the network, so a slow one started earlier can land after\n * a fast one started later, and without this the older results would end up\n * on screen under the newer term.\n *\n * A failed search has to put the spinner away as surely as a successful one,\n * hence the `finally`. Leaving it up would hide the search UI for as long as\n * the page lives.\n */\n private async executeSearch(term: string): Promise<void> {\n if (!this.searchHandler || term.length < MIN_SEARCH_LENGTH) {\n this.searchResultsTranscript = undefined;\n return;\n }\n\n this.searchTerm = term;\n this.isSearching = true;\n this.dispatchEvent(new Event(Events.SearchExecuted));\n\n this.latestSearchId += 1;\n const searchId = this.latestSearchId;\n\n try {\n const results = await this.searchHandler.search(term);\n if (searchId !== this.latestSearchId) return;\n\n this.searchResultsTranscript = results;\n } catch {\n if (searchId !== this.latestSearchId) return;\n\n this.searchResultsTranscript = undefined;\n this.dispatchEvent(new Event(Events.SearchFailed));\n } finally {\n if (searchId === this.latestSearchId) this.isSearching = false;\n }\n }\n\n private handleSearchResultIndexChanged(\n e: CustomEvent<{ searchResultIndex: number }>,\n ): void {\n const { searchResultIndex } = e.detail;\n if (searchResultIndex === undefined || !this.transcriptView) return;\n\n this.transcriptView.selectedSearchResultIndex = searchResultIndex;\n this.transcriptView.scrollToSelectedSearchResult();\n\n this.dispatchEvent(\n new CustomEvent<{ searchResultIndex: number }>(\n Events.HighlightedSearchResultChanged,\n { detail: { searchResultIndex } },\n ),\n );\n }\n\n /** Puts both the transcript and the switcher back to the first result. */\n private resetSearchResultPosition(): void {\n if (this.transcriptView) this.transcriptView.selectedSearchResultIndex = 0;\n if (this.searchResultsSwitcher) {\n this.searchResultsSwitcher.currentResultIndex = 0;\n }\n }\n\n private emitSearchTermChanged(searchTerm: string): void {\n this.dispatchEvent(\n new CustomEvent<{ searchTerm: string }>(Events.SearchTermChanged, {\n detail: { searchTerm },\n }),\n );\n }\n\n private playbackPaused(): void {\n this.isPlaying = false;\n this.dispatchEvent(new Event(Events.PlaybackPaused));\n }\n\n private playbackStarted(): void {\n this.isPlaying = true;\n this.dispatchEvent(new Event(Events.PlaybackStarted));\n }\n\n private canPlay(): void {\n this.dispatchEvent(new Event(Events.CanPlay));\n }\n\n /** Jumps past a music stretch if playback has wandered into one. */\n private skipMusicZone(): void {\n const activeZone = this.musicZones.find(\n (zone) => this.currentTime > zone.start && this.currentTime < zone.end,\n );\n if (!activeZone) return;\n\n this.audioElement?.seekTo(activeZone.end + SECTION_SEEK_NUDGE);\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --radio-player-title-color--: var(\n --ia-theme-radio-player-title-color,\n #fff\n );\n --radio-player-title-font--: var(\n --ia-theme-radio-player-title-font,\n 1.5em sans-serif\n );\n --radio-player-date-color--: var(\n --ia-theme-radio-player-date-color,\n #fff\n );\n --radio-player-date-font--: var(\n --ia-theme-radio-player-date-font,\n 1em sans-serif\n );\n --radio-player-logo-max-height--: var(\n --ia-theme-radio-player-logo-max-height,\n 8rem\n );\n --radio-player-waveform-height--: var(\n --ia-theme-radio-player-waveform-height,\n 5rem\n );\n }\n\n section[role='main'] {\n display: grid;\n grid-gap: 0.5rem;\n }\n\n ia-status-indicator {\n --ia-theme-icon-width: 1.5em;\n --ia-theme-primary-text-color: #999;\n\n display: block;\n margin: auto;\n }\n\n /* mobile view */\n @media (max-width: 770px) {\n section[role='main'] {\n grid-template-columns: 25% 1fr;\n grid-template-areas:\n 'collection-logo title-date'\n 'waveform-scrubber waveform-scrubber'\n 'playback-controls playback-controls'\n 'search-section search-section'\n 'transcript-container transcript-container';\n }\n\n .date {\n text-align: left;\n }\n\n ia-transcript-view {\n --ia-theme-transcript-time-display: none;\n }\n\n ia-playback-controls {\n width: 75%;\n margin: auto;\n }\n\n .search-section {\n width: 75%;\n margin: auto;\n }\n }\n\n /* wide view */\n @media (min-width: 770px) {\n section[role='main'] {\n grid-template-columns: 192px 0 250px 1fr;\n grid-template-areas:\n 'title-date title-date title-date title-date'\n 'collection-logo . playback-controls waveform-scrubber'\n 'search-section transcript-container transcript-container transcript-container';\n }\n\n .title-date {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n }\n\n ia-transcript-view {\n --ia-theme-transcript-time-display: block;\n }\n }\n\n .title-date {\n grid-area: title-date;\n }\n\n .title {\n color: var(--radio-player-title-color--);\n font: var(--radio-player-title-font--);\n }\n\n .date {\n color: var(--radio-player-date-color--);\n font: var(--radio-player-date-font--);\n }\n\n ia-waveform-progress {\n width: 100%;\n height: var(--radio-player-waveform-height--);\n }\n\n ia-playback-controls {\n grid-area: playback-controls;\n }\n\n .transcript-container {\n grid-area: transcript-container;\n }\n\n ia-transcript-view {\n max-width: 600px;\n display: block;\n }\n\n .collection-logo {\n width: 100%;\n max-height: var(--radio-player-logo-max-height--);\n object-fit: contain;\n grid-area: collection-logo;\n align-self: center;\n }\n\n .waveform-scrubber-container {\n width: 100%;\n height: 100%;\n grid-area: waveform-scrubber;\n }\n\n .search-section {\n grid-area: search-section;\n }\n\n .search-results-info {\n margin-top: 0.5em;\n }\n\n ia-expandable-search-bar {\n display: block;\n margin: auto;\n }\n\n .no-search-results-message {\n text-align: center;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ia-search-results-switcher.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-search-results-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAeb;;;;GAIG;AACH,qBAEa,uBAAwB,SAAQ,UAAU;IACrD,iDAAiD;IACrB,eAAe,SAAK;IAEhD,0DAA0D;IAC9B,kBAAkB,SAAK;IAEnD,MAAM,IAAI,cAAc;IAoCxB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKhD,yDAAyD;IACzD,kBAAkB,IAAI,IAAI;IAS1B,wDAAwD;IACxD,cAAc,IAAI,IAAI;IAStB,OAAO,KAAK,aAAa,GAKxB;IAED,OAAO,CAAC,4BAA4B;IASpC,MAAM,KAAK,MAAM,IAAI,cAAc,CAmClC;CACF"}
1
+ {"version":3,"file":"ia-search-results-switcher.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-search-results-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAeb;;;;GAIG;AACH,qBACa,uBAAwB,SAAQ,UAAU;IACrD,iDAAiD;IACrB,eAAe,SAAK;IAEhD,0DAA0D;IAC9B,kBAAkB,SAAK;IAEnD,MAAM,IAAI,cAAc;IAoCxB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKhD,yDAAyD;IACzD,kBAAkB,IAAI,IAAI;IAS1B,wDAAwD;IACxD,cAAc,IAAI,IAAI;IAStB,OAAO,KAAK,aAAa,GAKxB;IAED,OAAO,CAAC,4BAA4B;IASpC,MAAM,KAAK,MAAM,IAAI,cAAc,CAmClC;CACF"}
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, html, LitElement, } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
4
  import { customElement } from '../../util/custom-element.js';
5
- import { localized, msg, str } from '@lit/localize';
5
+ import { msg, str } from '@lit/localize';
6
6
  import nextResultIcon from './assets/next-result.js';
7
7
  import previousResultIcon from './assets/previous-result.js';
8
8
  /**
@@ -132,8 +132,7 @@ __decorate([
132
132
  property({ type: Number })
133
133
  ], IASearchResultsSwitcher.prototype, "currentResultIndex", void 0);
134
134
  IASearchResultsSwitcher = __decorate([
135
- customElement('ia-search-results-switcher'),
136
- localized()
135
+ customElement('ia-search-results-switcher')
137
136
  ], IASearchResultsSwitcher);
138
137
  export { IASearchResultsSwitcher };
139
138
  //# sourceMappingURL=ia-search-results-switcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ia-search-results-switcher.js","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-search-results-switcher.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,GAIX,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,wBAAwB,EAAE,0BAA0B;CACrD,CAAC;AAEF;;;;GAIG;AAGI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;QACL,iDAAiD;QACrB,oBAAe,GAAG,CAAC,CAAC;QAEhD,0DAA0D;QAC9B,uBAAkB,GAAG,CAAC,CAAC;IAmHrD,CAAC;IAjHC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;uBAKQ,GAAG,CAAC,wBAAwB,CAAC;mBACjC,IAAI,CAAC,kBAAkB;;YAE9B,kBAAkB;;;;sCAIQ,IAAI,CAAC,kBAAkB,GAAG,CAAC;yCACxB,IAAI,CAAC,eAAe;;;;;;uBAMtC,GAAG,CAAC,oBAAoB,CAAC;mBAC7B,IAAI,CAAC,cAAc;;YAE1B,cAAc;;;;;;;;;2CASiB,IAAI,CAAC,aAAa;KACxD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,iBAAiC;QACvC,gDAAgD;QAChD,IAAI,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,yDAAyD;IACzD,kBAAkB;QAChB,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,kBAAkB,GAAG,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAED,wDAAwD;IACxD,cAAc;QACZ,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,eAAe,GAAG,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAED,IAAY,aAAa;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,CAAA,iBAAiB,QAAQ,OAAO,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,4BAA4B;QAClC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,MAAM,CAAC,wBAAwB,EAC/B,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCT,CAAC;IACJ,CAAC;CACF,CAAA;AAtH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAAqB;AAGpB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mEAAwB;AALxC,uBAAuB;IAFnC,aAAa,CAAC,4BAA4B,CAAC;IAC3C,SAAS,EAAE;GACC,uBAAuB,CAwHnC","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg, str } from '@lit/localize';\n\nimport nextResultIcon from './assets/next-result';\nimport previousResultIcon from './assets/previous-result';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n SearchResultIndexChanged: 'searchResultIndexChanged',\n};\n\n/**\n * Steps through search results, reading `‹ 3 / 7 ›`.\n *\n * Both ends wrap around, so there is always somewhere to go.\n */\n@customElement('ia-search-results-switcher')\n@localized()\nexport class IASearchResultsSwitcher extends LitElement {\n /** How many results there are to step through */\n @property({ type: Number }) numberOfResults = 0;\n\n /** Which result is being looked at, counting from zero */\n @property({ type: Number }) currentResultIndex = 0;\n\n render(): TemplateResult {\n return html`\n <div class=\"container\">\n <button\n id=\"previous-button\"\n type=\"button\"\n aria-label=${msg('Previous search result')}\n @click=${this.goToPreviousResult}\n >\n ${previousResultIcon}\n </button>\n\n <span class=\"results-range\">\n <span id=\"current-result\">${this.currentResultIndex + 1}</span> /\n <span id=\"number-of-results\">${this.numberOfResults}</span>\n </span>\n\n <button\n id=\"next-button\"\n type=\"button\"\n aria-label=${msg('Next search result')}\n @click=${this.goToNextResult}\n >\n ${nextResultIcon}\n </button>\n </div>\n\n <!--\n The counter above is two bare numbers, which say nothing on their own.\n This says what they mean, and being a live region it is announced each\n time the reader moves between results.\n -->\n <div class=\"sr-only\" role=\"status\">${this.positionLabel}</div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n // A new set of results starts at the first one.\n if (changedProperties.has('numberOfResults')) this.currentResultIndex = 0;\n }\n\n /** Steps back one result, wrapping round to the last. */\n goToPreviousResult(): void {\n this.currentResultIndex =\n this.currentResultIndex < 1\n ? this.numberOfResults - 1\n : this.currentResultIndex - 1;\n\n this.emitSearchResultIndexChanged();\n }\n\n /** Steps on one result, wrapping round to the first. */\n goToNextResult(): void {\n this.currentResultIndex =\n this.currentResultIndex === this.numberOfResults - 1\n ? 0\n : this.currentResultIndex + 1;\n\n this.emitSearchResultIndexChanged();\n }\n\n private get positionLabel(): string {\n const position = this.currentResultIndex + 1;\n const total = this.numberOfResults;\n\n return msg(str`Search result ${position} of ${total}`);\n }\n\n private emitSearchResultIndexChanged(): void {\n this.dispatchEvent(\n new CustomEvent<{ searchResultIndex: number }>(\n Events.SearchResultIndexChanged,\n { detail: { searchResultIndex: this.currentResultIndex } },\n ),\n );\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --search-switcher-color--: var(--ia-theme-search-switcher-color, #fff);\n\n color: var(--search-switcher-color--);\n }\n\n .container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n }\n\n button {\n background: none;\n border: 0;\n padding: 0;\n color: inherit;\n cursor: pointer;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ia-search-results-switcher.js","sourceRoot":"","sources":["../../../../src/elements/ia-radio-player/ia-search-results-switcher.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,GAIX,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,wBAAwB,EAAE,0BAA0B;CACrD,CAAC;AAEF;;;;GAIG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;QACL,iDAAiD;QACrB,oBAAe,GAAG,CAAC,CAAC;QAEhD,0DAA0D;QAC9B,uBAAkB,GAAG,CAAC,CAAC;IAmHrD,CAAC;IAjHC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;uBAKQ,GAAG,CAAC,wBAAwB,CAAC;mBACjC,IAAI,CAAC,kBAAkB;;YAE9B,kBAAkB;;;;sCAIQ,IAAI,CAAC,kBAAkB,GAAG,CAAC;yCACxB,IAAI,CAAC,eAAe;;;;;;uBAMtC,GAAG,CAAC,oBAAoB,CAAC;mBAC7B,IAAI,CAAC,cAAc;;YAE1B,cAAc;;;;;;;;;2CASiB,IAAI,CAAC,aAAa;KACxD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,iBAAiC;QACvC,gDAAgD;QAChD,IAAI,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,yDAAyD;IACzD,kBAAkB;QAChB,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,kBAAkB,GAAG,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAED,wDAAwD;IACxD,cAAc;QACZ,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,eAAe,GAAG,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAED,IAAY,aAAa;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,CAAA,iBAAiB,QAAQ,OAAO,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,4BAA4B;QAClC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,MAAM,CAAC,wBAAwB,EAC/B,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCT,CAAC;IACJ,CAAC;CACF,CAAA;AAtH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAAqB;AAGpB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mEAAwB;AALxC,uBAAuB;IADnC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,uBAAuB,CAwHnC","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg, str } from '@lit/localize';\n\nimport nextResultIcon from './assets/next-result';\nimport previousResultIcon from './assets/previous-result';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n SearchResultIndexChanged: 'searchResultIndexChanged',\n};\n\n/**\n * Steps through search results, reading `‹ 3 / 7 ›`.\n *\n * Both ends wrap around, so there is always somewhere to go.\n */\n@customElement('ia-search-results-switcher')\nexport class IASearchResultsSwitcher extends LitElement {\n /** How many results there are to step through */\n @property({ type: Number }) numberOfResults = 0;\n\n /** Which result is being looked at, counting from zero */\n @property({ type: Number }) currentResultIndex = 0;\n\n render(): TemplateResult {\n return html`\n <div class=\"container\">\n <button\n id=\"previous-button\"\n type=\"button\"\n aria-label=${msg('Previous search result')}\n @click=${this.goToPreviousResult}\n >\n ${previousResultIcon}\n </button>\n\n <span class=\"results-range\">\n <span id=\"current-result\">${this.currentResultIndex + 1}</span> /\n <span id=\"number-of-results\">${this.numberOfResults}</span>\n </span>\n\n <button\n id=\"next-button\"\n type=\"button\"\n aria-label=${msg('Next search result')}\n @click=${this.goToNextResult}\n >\n ${nextResultIcon}\n </button>\n </div>\n\n <!--\n The counter above is two bare numbers, which say nothing on their own.\n This says what they mean, and being a live region it is announced each\n time the reader moves between results.\n -->\n <div class=\"sr-only\" role=\"status\">${this.positionLabel}</div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n // A new set of results starts at the first one.\n if (changedProperties.has('numberOfResults')) this.currentResultIndex = 0;\n }\n\n /** Steps back one result, wrapping round to the last. */\n goToPreviousResult(): void {\n this.currentResultIndex =\n this.currentResultIndex < 1\n ? this.numberOfResults - 1\n : this.currentResultIndex - 1;\n\n this.emitSearchResultIndexChanged();\n }\n\n /** Steps on one result, wrapping round to the first. */\n goToNextResult(): void {\n this.currentResultIndex =\n this.currentResultIndex === this.numberOfResults - 1\n ? 0\n : this.currentResultIndex + 1;\n\n this.emitSearchResultIndexChanged();\n }\n\n private get positionLabel(): string {\n const position = this.currentResultIndex + 1;\n const total = this.numberOfResults;\n\n return msg(str`Search result ${position} of ${total}`);\n }\n\n private emitSearchResultIndexChanged(): void {\n this.dispatchEvent(\n new CustomEvent<{ searchResultIndex: number }>(\n Events.SearchResultIndexChanged,\n { detail: { searchResultIndex: this.currentResultIndex } },\n ),\n );\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --search-switcher-color--: var(--ia-theme-search-switcher-color, #fff);\n\n color: var(--search-switcher-color--);\n }\n\n .container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n }\n\n button {\n background: none;\n border: 0;\n padding: 0;\n color: inherit;\n cursor: pointer;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
2
+ <rect width="24" height="24" fill="white"/>
3
+ <path d="M5 7.5H19L18 21H6L5 7.5Z" stroke="#000000" stroke-linejoin="round"/>
4
+ <path d="M15.5 9.5L15 19" stroke="#000000" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path d="M12 9.5V19" stroke="#000000" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path d="M8.5 9.5L9 19" stroke="#000000" stroke-linecap="round" stroke-linejoin="round"/>
7
+ <path d="M16 5H19C20.1046 5 21 5.89543 21 7V7.5H3V7C3 5.89543 3.89543 5 5 5H8M16 5L15 3H9L8 5M16 5H8" stroke="#000000" stroke-linejoin="round"/>
8
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
2
+ <path
3
+ d="m81.0388846 100-30.9636029-22.5595033-30.7410319 22.5595033 10.6670595-37.3922042-30.0013093-25.2155916h37.5556428l12.5196389-37.3922042 12.3690754 37.3922042h37.5556429l-29.7034563 25.2155916z"
4
+ fill="#2C2C2C"
5
+ />
6
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
2
+ <path
3
+ d="m81.0388846 100-30.9636029-22.5595033-30.7410319 22.5595033 10.6670595-37.3922042-30.0013093-25.2155916h37.5556428l12.5196389-37.3922042 12.3690754 37.3922042h37.5556429l-29.7034563 25.2155916z"
4
+ fill="#c2820a"
5
+ stroke="#c2820a"
6
+ stroke-width="3px"
7
+ />
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
2
+ <path
3
+ d="m81.0388846 100-30.9636029-22.5595033-30.7410319 22.5595033 10.6670595-37.3922042-30.0013093-25.2155916h37.5556428l12.5196389-37.3922042 12.3690754 37.3922042h37.5556429l-29.7034563 25.2155916z"
4
+ fill="#ffffff"
5
+ stroke="#c2820a"
6
+ stroke-width="3px"
7
+ />
8
+ </svg>
@@ -0,0 +1,104 @@
1
+ import { LitElement, PropertyValues, CSSResultGroup } from 'lit';
2
+ import type { RecaptchaManagerInterface } from '@internetarchive/recaptcha-manager';
3
+ import '../../elements/ia-button/ia-button.js';
4
+ import type { FetchHandlerInterface } from '@internetarchive/fetch-handler';
5
+ import { Review } from '@internetarchive/metadata-service';
6
+ import './ia-review.js';
7
+ /**
8
+ * Renders a form to edit a given IA review.
9
+ */
10
+ export declare class IAReviewForm extends LitElement {
11
+ identifier?: string;
12
+ token: string;
13
+ baseHost: string;
14
+ endpointPath: string;
15
+ /** Form submitter's screenname, if applicable */
16
+ submitterScreenname: string;
17
+ /** Form submitter's itemname, if applicable */
18
+ submitterItemname?: string;
19
+ oldReview?: Review;
20
+ unrecoverableError?: string;
21
+ maxSubjectLength?: number;
22
+ maxBodyLength?: number;
23
+ fetchHandler?: FetchHandlerInterface;
24
+ recaptchaManager?: RecaptchaManagerInterface;
25
+ bypassRecaptcha: boolean;
26
+ private recaptchaWidget?;
27
+ private currentStars;
28
+ private currentSubjectLength;
29
+ private currentBodyLength;
30
+ recoverableError?: string;
31
+ private formCanSubmit;
32
+ submissionInProgress: boolean;
33
+ private reviewForm;
34
+ private RECAPTCHA_ERROR_MESSAGE;
35
+ private GENERIC_ERROR_MESSAGE;
36
+ render(): import("lit").TemplateResult<1>;
37
+ protected willUpdate(changed: PropertyValues): void;
38
+ /** Error to render instead of form inputs */
39
+ private get unrecoverableErrorTemplate();
40
+ /** Error to render next to submit button */
41
+ private get recoverableErrorTemplate();
42
+ private get recaptchaMessageTemplate();
43
+ /** Clickable group of stars */
44
+ private get starsInputTemplate();
45
+ /** Subject input and character counter */
46
+ private get subjectInputTemplate();
47
+ /** Body input and character counter */
48
+ private get bodyInputTemplate();
49
+ /** Hidden inputs we use to store other information for form submission */
50
+ private get hiddenInputsTemplate();
51
+ /** Buttons to render at bottom of form */
52
+ private get actionButtonsTemplate();
53
+ /**
54
+ * Renders a star icon, using its number and the current star rating
55
+ * to determine whether it should appear selected or not
56
+ *
57
+ * @param {number} num The number of the current star
58
+ * @returns {HTMLTemplateResult} The correct icon, rendered within a button
59
+ */
60
+ private renderStar;
61
+ /**
62
+ * Sets up ReCaptcha for the form, if possible.
63
+ *
64
+ * On failure, replaces form inputs with the ReCaptcha error message.
65
+ */
66
+ private setupRecaptcha;
67
+ /**
68
+ * Uses DOMpurify to sanitize any error message before render.
69
+ *
70
+ * @param {string} errorMsg The error message to be sanitized
71
+ * @returns {string} The sanitized error message
72
+ */
73
+ private sanitizeErrorMsg;
74
+ /** Handles validation and recaptcha execution on form submission */
75
+ private handleSubmit;
76
+ /**
77
+ * Generates a review object from the submitted review,
78
+ * for optimistic display on success.
79
+ *
80
+ * @returns {Review} The review to display
81
+ */
82
+ private generateSubmittedReview;
83
+ /**
84
+ * Converts date to string if it is a Date, otherwise
85
+ * leaves unchanged.
86
+ */
87
+ private dateToString;
88
+ /**
89
+ * Executes the ReCaptcha challenge for the form.
90
+ * Attempts form submission on success.
91
+ * */
92
+ private getRecaptchaToken;
93
+ private handleRecaptchaError;
94
+ private stopSubmission;
95
+ private cancelReviewEdit;
96
+ private handleStarClicked;
97
+ private handleClearBtnClicked;
98
+ private setStars;
99
+ private handleSubjectChanged;
100
+ private handleBodyChanged;
101
+ private checkSubmissionAllowed;
102
+ static get styles(): CSSResultGroup;
103
+ }
104
+ //# sourceMappingURL=ia-review-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-review-form.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-reviews/ia-review-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAGV,cAAc,EACd,cAAc,EACf,MAAM,KAAK,CAAC;AAQb,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAK3D,OAAO,aAAa,CAAC;AAErB;;GAEG;AACH,qBACa,YAAa,SAAQ,UAAU;IAEd,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,KAAK,EAAE,MAAM,CAAM;IAGnB,QAAQ,EAAE,MAAM,CAAyB;IAGzC,YAAY,EAAE,MAAM,CAAuB;IAEvE,iDAAiD;IACrB,mBAAmB,EAAE,MAAM,CAAe;IAEtE,+CAA+C;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAGrC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAG5C,eAAe,EAAE,OAAO,CAAS;IAG9D,OAAO,CAAC,eAAe,CAAC,CAA2B;IAInD,OAAO,CAAC,YAAY,CAAa;IAIjC,OAAO,CAAC,oBAAoB,CAAa;IAIzC,OAAO,CAAC,iBAAiB,CAAa;IAItC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAI1B,OAAO,CAAC,aAAa,CAAkB;IAIvC,oBAAoB,EAAE,OAAO,CAAS;IAItC,OAAO,CAAC,UAAU,CAAmB;IAGrC,OAAO,CAAC,uBAAuB,CACwB;IAEvD,OAAO,CAAC,qBAAqB,CAC2C;IAExE,MAAM;IAeN,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAiCnD,6CAA6C;IAC7C,OAAO,KAAK,0BAA0B,GAUrC;IAED,4CAA4C;IAC5C,OAAO,KAAK,wBAAwB,GAQnC;IAED,OAAO,KAAK,wBAAwB,GAwBnC;IAED,+BAA+B;IAC/B,OAAO,KAAK,kBAAkB,GAuB7B;IAED,0CAA0C;IAC1C,OAAO,KAAK,oBAAoB,GAqC/B;IAED,uCAAuC;IACvC,OAAO,KAAK,iBAAiB,GAkC5B;IAED,0EAA0E;IAC1E,OAAO,KAAK,oBAAoB,GAW/B;IAED,0CAA0C;IAC1C,OAAO,KAAK,qBAAqB,GAoBhC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA2BlB;;;;OAIG;YACW,cAAc;IAQ5B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAIxB,oEAAoE;YACtD,YAAY;IAmE1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;;SAGK;YACS,iBAAiB;IAgB/B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,sBAAsB;IA2B9B,MAAM,KAAK,MAAM,IAAI,cAAc,CAgJlC;CACF"}