@internetarchive/elements 1.1.2 → 1.1.3-l10n-demo.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/README.md +34 -1
  2. package/dist/src/elements/ia-button/ia-button.d.ts.map +1 -1
  3. package/dist/src/elements/ia-button/ia-button.js +2 -2
  4. package/dist/src/elements/ia-button/ia-button.js.map +1 -1
  5. package/dist/src/elements/ia-combo-box/ia-combo-box.d.ts.map +1 -1
  6. package/dist/src/elements/ia-combo-box/ia-combo-box.js +3 -2
  7. package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
  8. package/dist/src/elements/ia-donation-form/analytics.d.ts +12 -0
  9. package/dist/src/elements/ia-donation-form/analytics.d.ts.map +1 -0
  10. package/dist/src/elements/ia-donation-form/analytics.js +2 -0
  11. package/dist/src/elements/ia-donation-form/analytics.js.map +1 -0
  12. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts +79 -0
  13. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts.map +1 -0
  14. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js +2 -0
  15. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js.map +1 -0
  16. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts +73 -0
  17. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts.map +1 -0
  18. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js +126 -0
  19. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js.map +1 -0
  20. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts +10 -0
  21. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts.map +1 -0
  22. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js +9 -0
  23. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js.map +1 -0
  24. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts +47 -0
  25. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts.map +1 -0
  26. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js +104 -0
  27. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js.map +1 -0
  28. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts +11 -0
  29. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts.map +1 -0
  30. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js +2 -0
  31. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js.map +1 -0
  32. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +20 -0
  33. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts.map +1 -0
  34. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +2 -0
  35. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -0
  36. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -0
  37. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts.map +1 -0
  38. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js +83 -0
  39. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -0
  40. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts +11 -0
  41. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts.map +1 -0
  42. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js +13 -0
  43. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -0
  44. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts +27 -0
  45. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts.map +1 -0
  46. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js +67 -0
  47. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js.map +1 -0
  48. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts +18 -0
  49. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts.map +1 -0
  50. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js +2 -0
  51. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js.map +1 -0
  52. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts +41 -0
  53. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts.map +1 -0
  54. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js +95 -0
  55. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js.map +1 -0
  56. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts +14 -0
  57. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts.map +1 -0
  58. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js +9 -0
  59. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js.map +1 -0
  60. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts +40 -0
  61. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts.map +1 -0
  62. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js +58 -0
  63. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js.map +1 -0
  64. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts +8 -0
  65. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts.map +1 -0
  66. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js +2 -0
  67. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js.map +1 -0
  68. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts +19 -0
  69. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts.map +1 -0
  70. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js +45 -0
  71. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js.map +1 -0
  72. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts +57 -0
  73. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts.map +1 -0
  74. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js +44 -0
  75. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js.map +1 -0
  76. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts +14 -0
  77. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts.map +1 -0
  78. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js +2 -0
  79. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js.map +1 -0
  80. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts +27 -0
  81. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts.map +1 -0
  82. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js +44 -0
  83. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js.map +1 -0
  84. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts +8 -0
  85. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts.map +1 -0
  86. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js +2 -0
  87. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js.map +1 -0
  88. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts +40 -0
  89. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts.map +1 -0
  90. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js +65 -0
  91. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js.map +1 -0
  92. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts +25 -0
  93. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts.map +1 -0
  94. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js +42 -0
  95. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js.map +1 -0
  96. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts +18 -0
  97. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts.map +1 -0
  98. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js +2 -0
  99. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js.map +1 -0
  100. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts +42 -0
  101. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts.map +1 -0
  102. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js +99 -0
  103. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js.map +1 -0
  104. package/dist/src/elements/ia-donation-form/currency-validator.d.ts +16 -0
  105. package/dist/src/elements/ia-donation-form/currency-validator.d.ts.map +1 -0
  106. package/dist/src/elements/ia-donation-form/currency-validator.js +37 -0
  107. package/dist/src/elements/ia-donation-form/currency-validator.js.map +1 -0
  108. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts +5 -0
  109. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts.map +1 -0
  110. package/dist/src/elements/ia-donation-form/donation-form-error.js +8 -0
  111. package/dist/src/elements/ia-donation-form/donation-form-error.js.map +1 -0
  112. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts +118 -0
  113. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts.map +1 -0
  114. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js +194 -0
  115. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js.map +1 -0
  116. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts +24 -0
  117. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts.map +1 -0
  118. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js +70 -0
  119. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js.map +1 -0
  120. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts +44 -0
  121. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts.map +1 -0
  122. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js +110 -0
  123. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js.map +1 -0
  124. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts +24 -0
  125. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts.map +1 -0
  126. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js +74 -0
  127. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js.map +1 -0
  128. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts +47 -0
  129. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts.map +1 -0
  130. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js +204 -0
  131. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js.map +1 -0
  132. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts +30 -0
  133. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts.map +1 -0
  134. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js +77 -0
  135. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js.map +1 -0
  136. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts +80 -0
  137. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts.map +1 -0
  138. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js +72 -0
  139. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js.map +1 -0
  140. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts +2 -0
  141. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts.map +1 -0
  142. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js +2 -0
  143. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js.map +1 -0
  144. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts +3 -0
  145. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts.map +1 -0
  146. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js +254 -0
  147. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js.map +1 -0
  148. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts +70 -0
  149. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts.map +1 -0
  150. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js +497 -0
  151. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js.map +1 -0
  152. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts +26 -0
  153. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts.map +1 -0
  154. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js +163 -0
  155. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js.map +1 -0
  156. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts +118 -0
  157. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts.map +1 -0
  158. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js +772 -0
  159. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js.map +1 -0
  160. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts +31 -0
  161. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts.map +1 -0
  162. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js +93 -0
  163. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js.map +1 -0
  164. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts +33 -0
  165. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts.map +1 -0
  166. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js +378 -0
  167. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js.map +1 -0
  168. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts +21 -0
  169. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts.map +1 -0
  170. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js +182 -0
  171. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js.map +1 -0
  172. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts +11 -0
  173. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts.map +1 -0
  174. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js +60 -0
  175. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js.map +1 -0
  176. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts +10 -0
  177. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts.map +1 -0
  178. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js +76 -0
  179. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js.map +1 -0
  180. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts +114 -0
  181. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts.map +1 -0
  182. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js +586 -0
  183. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js.map +1 -0
  184. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts +94 -0
  185. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts.map +1 -0
  186. package/dist/src/elements/ia-donation-form/ia-donation-form.js +516 -0
  187. package/dist/src/elements/ia-donation-form/ia-donation-form.js.map +1 -0
  188. package/dist/src/elements/ia-donation-form/icons/apple-pay.svg +22 -0
  189. package/dist/src/elements/ia-donation-form/icons/calendar.svg +15 -0
  190. package/dist/src/elements/ia-donation-form/icons/credit-card.svg +15 -0
  191. package/dist/src/elements/ia-donation-form/icons/email.svg +3 -0
  192. package/dist/src/elements/ia-donation-form/icons/google-pay.svg +38 -0
  193. package/dist/src/elements/ia-donation-form/icons/locale-pin.svg +7 -0
  194. package/dist/src/elements/ia-donation-form/icons/lock.svg +6 -0
  195. package/dist/src/elements/ia-donation-form/icons/paypal.svg +39 -0
  196. package/dist/src/elements/ia-donation-form/icons/user.svg +6 -0
  197. package/dist/src/elements/ia-donation-form/icons/venmo.svg +9 -0
  198. package/dist/src/elements/ia-donation-form/icons.d.ts +12 -0
  199. package/dist/src/elements/ia-donation-form/icons.d.ts.map +1 -0
  200. package/dist/src/elements/ia-donation-form/icons.js +33 -0
  201. package/dist/src/elements/ia-donation-form/icons.js.map +1 -0
  202. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts +27 -0
  203. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts.map +1 -0
  204. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js +196 -0
  205. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js.map +1 -0
  206. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts +7 -0
  207. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts.map +1 -0
  208. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js +64 -0
  209. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js.map +1 -0
  210. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts +28 -0
  211. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts.map +1 -0
  212. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js +314 -0
  213. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js.map +1 -0
  214. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts +34 -0
  215. package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts.map +1 -0
  216. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js +54 -0
  217. package/dist/src/elements/ia-donation-form/models/donation-payment-info.js.map +1 -0
  218. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts +62 -0
  219. package/dist/src/elements/ia-donation-form/models/donation-request.d.ts.map +1 -0
  220. package/dist/src/elements/ia-donation-form/models/donation-request.js +35 -0
  221. package/dist/src/elements/ia-donation-form/models/donation-request.js.map +1 -0
  222. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts +67 -0
  223. package/dist/src/elements/ia-donation-form/models/donation-response.d.ts.map +1 -0
  224. package/dist/src/elements/ia-donation-form/models/donation-response.js +57 -0
  225. package/dist/src/elements/ia-donation-form/models/donation-response.js.map +1 -0
  226. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts +8 -0
  227. package/dist/src/elements/ia-donation-form/models/donation-type.d.ts.map +1 -0
  228. package/dist/src/elements/ia-donation-form/models/donation-type.js +7 -0
  229. package/dist/src/elements/ia-donation-form/models/donation-type.js.map +1 -0
  230. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts +38 -0
  231. package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts.map +1 -0
  232. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js +27 -0
  233. package/dist/src/elements/ia-donation-form/models/donor-contact-info.js.map +1 -0
  234. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts +10 -0
  235. package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts.map +1 -0
  236. package/dist/src/elements/ia-donation-form/models/payment-provider.js +9 -0
  237. package/dist/src/elements/ia-donation-form/models/payment-provider.js.map +1 -0
  238. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts +36 -0
  239. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts.map +1 -0
  240. package/dist/src/elements/ia-donation-form/recaptcha-manager.js +76 -0
  241. package/dist/src/elements/ia-donation-form/recaptcha-manager.js.map +1 -0
  242. package/dist/src/elements/ia-dropdown/assets/caret-down.svg +4 -0
  243. package/dist/src/elements/ia-dropdown/assets/caret-up.svg +4 -0
  244. package/dist/src/elements/ia-dropdown/ia-dropdown.d.ts +185 -0
  245. package/dist/src/elements/ia-dropdown/ia-dropdown.d.ts.map +1 -0
  246. package/dist/src/elements/ia-dropdown/ia-dropdown.js +762 -0
  247. package/dist/src/elements/ia-dropdown/ia-dropdown.js.map +1 -0
  248. package/dist/src/elements/ia-dropdown/ia-icon-label.d.ts +10 -0
  249. package/dist/src/elements/ia-dropdown/ia-icon-label.d.ts.map +1 -0
  250. package/dist/src/elements/ia-dropdown/ia-icon-label.js +103 -0
  251. package/dist/src/elements/ia-dropdown/ia-icon-label.js.map +1 -0
  252. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +3 -3
  253. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
  254. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +5 -6
  255. package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
  256. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
  257. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
  258. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +5 -8
  259. package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
  260. package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
  261. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +3 -2
  262. package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
  263. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
  264. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +3 -2
  265. package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
  266. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
  267. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +3 -2
  268. package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
  269. package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
  270. package/dist/src/elements/ia-otp-form/ia-otp-form.js +3 -2
  271. package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
  272. package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
  273. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +3 -2
  274. package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
  275. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  276. package/dist/src/elements/ia-radio-player/ia-radio-player.js +3 -2
  277. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  278. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
  279. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +3 -2
  280. package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
  281. package/dist/src/elements/ia-reviews/assets/delete-icon.svg +8 -0
  282. package/dist/src/elements/ia-reviews/assets/star-basic.svg +6 -0
  283. package/dist/src/elements/ia-reviews/assets/star-selected.svg +8 -0
  284. package/dist/src/elements/ia-reviews/assets/star-unselected.svg +8 -0
  285. package/dist/src/elements/ia-reviews/ia-review-form.d.ts +103 -0
  286. package/dist/src/elements/ia-reviews/ia-review-form.d.ts.map +1 -0
  287. package/dist/src/elements/ia-reviews/ia-review-form.js +685 -0
  288. package/dist/src/elements/ia-reviews/ia-review-form.js.map +1 -0
  289. package/dist/src/elements/ia-reviews/ia-review.d.ts +51 -0
  290. package/dist/src/elements/ia-reviews/ia-review.d.ts.map +1 -0
  291. package/dist/src/elements/ia-reviews/ia-review.js +344 -0
  292. package/dist/src/elements/ia-reviews/ia-review.js.map +1 -0
  293. package/dist/src/elements/ia-reviews/ia-reviews.d.ts +68 -0
  294. package/dist/src/elements/ia-reviews/ia-reviews.d.ts.map +1 -0
  295. package/dist/src/elements/ia-reviews/ia-reviews.js +354 -0
  296. package/dist/src/elements/ia-reviews/ia-reviews.js.map +1 -0
  297. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts +23 -0
  298. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts.map +1 -0
  299. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js +37 -0
  300. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js.map +1 -0
  301. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts +12 -0
  302. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts.map +1 -0
  303. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js +19 -0
  304. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js.map +1 -0
  305. package/dist/src/elements/ia-reviews/models.d.ts +38 -0
  306. package/dist/src/elements/ia-reviews/models.d.ts.map +1 -0
  307. package/dist/src/elements/ia-reviews/models.js +2 -0
  308. package/dist/src/elements/ia-reviews/models.js.map +1 -0
  309. package/dist/src/elements/ia-reviews/review-service.d.ts +53 -0
  310. package/dist/src/elements/ia-reviews/review-service.d.ts.map +1 -0
  311. package/dist/src/elements/ia-reviews/review-service.js +97 -0
  312. package/dist/src/elements/ia-reviews/review-service.js.map +1 -0
  313. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts +13 -0
  314. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts.map +1 -0
  315. package/dist/src/elements/ia-reviews/utils/collapse-space.js +19 -0
  316. package/dist/src/elements/ia-reviews/utils/collapse-space.js.map +1 -0
  317. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts +14 -0
  318. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts.map +1 -0
  319. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js +65 -0
  320. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js.map +1 -0
  321. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts +9 -0
  322. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts.map +1 -0
  323. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js +40 -0
  324. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js.map +1 -0
  325. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts +9 -0
  326. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts.map +1 -0
  327. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js +29 -0
  328. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js.map +1 -0
  329. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts +13 -0
  330. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts.map +1 -0
  331. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js +19 -0
  332. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js.map +1 -0
  333. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
  334. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
  335. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +4 -5
  336. package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
  337. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
  338. package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
  339. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +7 -12
  340. package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
  341. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
  342. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
  343. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
  344. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
  345. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
  346. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
  347. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
  348. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
  349. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
  350. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
  351. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
  352. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
  353. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
  354. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
  355. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
  356. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
  357. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
  358. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
  359. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
  360. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
  361. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
  362. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
  363. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
  364. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
  365. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
  366. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
  367. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
  368. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
  369. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
  370. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
  371. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
  372. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
  373. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
  374. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
  375. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
  376. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
  377. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
  378. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
  379. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
  380. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
  381. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
  382. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
  383. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
  384. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
  385. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
  386. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
  387. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
  388. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
  389. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
  390. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
  391. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
  392. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
  393. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
  394. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
  395. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
  396. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
  397. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
  398. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
  399. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
  400. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
  401. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
  402. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
  403. package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
  404. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
  405. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
  406. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
  407. package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
  408. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
  409. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
  410. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
  411. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
  412. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
  413. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
  414. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
  415. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
  416. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
  417. package/dist/src/elements/ia-topnav/data/menus.d.ts +17 -0
  418. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
  419. package/dist/src/elements/ia-topnav/data/menus.js +754 -0
  420. package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
  421. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
  422. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
  423. package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
  424. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
  425. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
  426. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
  427. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
  428. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
  429. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
  430. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
  431. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
  432. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
  433. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
  434. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
  435. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
  436. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
  437. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
  438. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
  439. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +287 -0
  440. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
  441. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
  442. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
  443. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
  444. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
  445. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
  446. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
  447. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
  448. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
  449. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
  450. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
  451. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
  452. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
  453. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
  454. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
  455. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
  456. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
  457. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
  458. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
  459. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
  460. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
  461. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
  462. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
  463. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
  464. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
  465. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
  466. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
  467. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
  468. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
  469. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
  470. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
  471. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
  472. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
  473. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
  474. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
  475. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
  476. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
  477. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
  478. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
  479. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
  480. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
  481. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +88 -0
  482. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
  483. package/dist/src/elements/ia-topnav/ia-topnav.js +443 -0
  484. package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
  485. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
  486. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
  487. package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
  488. package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
  489. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
  490. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
  491. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
  492. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
  493. package/dist/src/elements/ia-topnav/models.d.ts +65 -0
  494. package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
  495. package/dist/src/elements/ia-topnav/models.js +10 -0
  496. package/dist/src/elements/ia-topnav/models.js.map +1 -0
  497. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
  498. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
  499. package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
  500. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
  501. package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
  502. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
  503. package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
  504. package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
  505. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
  506. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +4 -0
  507. package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
  508. package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
  509. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +3 -2
  510. package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
  511. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
  512. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
  513. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
  514. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
  515. package/dist/src/elements/index.d.ts +63 -0
  516. package/dist/src/elements/index.d.ts.map +1 -1
  517. package/dist/src/elements/index.js +63 -0
  518. package/dist/src/elements/index.js.map +1 -1
  519. package/dist/src/locales/es.d.ts +254 -0
  520. package/dist/src/locales/es.d.ts.map +1 -0
  521. package/dist/src/locales/es.js +304 -0
  522. package/dist/src/locales/es.js.map +1 -0
  523. package/package.json +43 -6
@@ -0,0 +1,42 @@
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+ import { type Unsubscribe } from 'nanoevents';
3
+ import type { BraintreeManagerInterface } from './braintree-manager-interface.js';
4
+ import { HostingEnvironment } from './hosting-environment.js';
5
+ import type { PaymentClientsInterface } from './payment-clients.js';
6
+ import type { PaymentProvidersEvents, PaymentProvidersInterface } from './payment-providers-interface.js';
7
+ import type { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface.js';
8
+ import type { CreditCardHandlerInterface } from './payment-providers/credit-card/credit-card-interface.js';
9
+ import type { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration.js';
10
+ import type { GooglePayHandlerInterface } from './payment-providers/google-pay/google-pay-interface.js';
11
+ import type { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface.js';
12
+ import type { VenmoHandlerInterface } from './payment-providers/venmo/venmo-interface.js';
13
+ /**
14
+ * The IA-specific handlers for each payment provider, each created on first
15
+ * request. They're data-focused rather than UI-focused, though there's some
16
+ * overlap with the flow handlers.
17
+ */
18
+ export declare class PaymentProviders implements PaymentProvidersInterface {
19
+ on<E extends keyof PaymentProvidersEvents>(event: E, callback: PaymentProvidersEvents[E]): Unsubscribe;
20
+ creditCardHandler: PromisedSingleton<CreditCardHandlerInterface>;
21
+ applePayHandler: PromisedSingleton<ApplePayHandlerInterface>;
22
+ /** Undefined when no Venmo profile id was configured, so Venmo isn't offered. */
23
+ venmoHandler: PromisedSingleton<VenmoHandlerInterface | undefined>;
24
+ paypalHandler: PromisedSingleton<PayPalHandlerInterface>;
25
+ googlePayHandler: PromisedSingleton<GooglePayHandlerInterface>;
26
+ private braintreeManager;
27
+ private venmoProfileId?;
28
+ private googlePayMerchantId?;
29
+ private hostedFieldConfig;
30
+ private hostingEnvironment;
31
+ private paymentClients;
32
+ private emitter;
33
+ constructor(options: {
34
+ braintreeManager: BraintreeManagerInterface;
35
+ paymentClients: PaymentClientsInterface;
36
+ venmoProfileId?: string;
37
+ googlePayMerchantId?: string;
38
+ hostingEnvironment: HostingEnvironment;
39
+ hostedFieldConfig: HostedFieldConfiguration;
40
+ });
41
+ }
42
+ //# sourceMappingURL=payment-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-providers.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/braintree/payment-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAGlG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACxG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AAE3G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAErG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAEvF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,yBAAyB;IAChE,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACvC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,WAAW;IAId,iBAAiB,gDAmBd;IAEH,eAAe,8CASZ;IAEH,iFAAiF;IACjF,YAAY,uDAYT;IAEH,aAAa,4CAaV;IAEH,gBAAgB,+CAab;IAEH,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAErC,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,OAAO,CAAC,kBAAkB,CACO;IAEjC,OAAO,CAAC,cAAc,CAA0B;IAEhD,OAAO,CAAC,OAAO,CAA8C;gBAEjD,OAAO,EAAE;QACnB,gBAAgB,EAAE,yBAAyB,CAAC;QAC5C,cAAc,EAAE,uBAAuB,CAAC;QACxC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,EAAE,wBAAwB,CAAC;KAC7C;CAQF"}
@@ -0,0 +1,99 @@
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+ import { createNanoEvents } from 'nanoevents';
3
+ import { HostingEnvironment } from './hosting-environment.js';
4
+ import { ApplePayHandler } from './payment-providers/apple-pay/apple-pay.js';
5
+ import { ApplePaySessionManager } from './payment-providers/apple-pay/apple-pay-session-manager.js';
6
+ import { CreditCardHandler } from './payment-providers/credit-card/credit-card.js';
7
+ import { GooglePayHandler } from './payment-providers/google-pay/google-pay.js';
8
+ import { PayPalHandler } from './payment-providers/paypal/paypal.js';
9
+ import { VenmoHandler } from './payment-providers/venmo/venmo.js';
10
+ /**
11
+ * The IA-specific handlers for each payment provider, each created on first
12
+ * request. They're data-focused rather than UI-focused, though there's some
13
+ * overlap with the flow handlers.
14
+ */
15
+ export class PaymentProviders {
16
+ on(event, callback) {
17
+ return this.emitter.on(event, callback);
18
+ }
19
+ constructor(options) {
20
+ this.creditCardHandler = new PromisedSingleton({
21
+ generator: async () => {
22
+ const client = await this.paymentClients.hostedFields.get();
23
+ const handler = new CreditCardHandler({
24
+ braintreeManager: this.braintreeManager,
25
+ hostedFieldClient: client,
26
+ hostedFieldConfig: this.hostedFieldConfig,
27
+ });
28
+ handler.on('hostedFieldsRetry', (retryNumber) => {
29
+ this.emitter.emit('hostedFieldsRetry', retryNumber);
30
+ });
31
+ handler.on('hostedFieldsFailed', (error) => {
32
+ this.emitter.emit('hostedFieldsFailed', error);
33
+ });
34
+ return handler;
35
+ },
36
+ });
37
+ this.applePayHandler = new PromisedSingleton({
38
+ generator: async () => {
39
+ const client = await this.paymentClients.applePay.get();
40
+ return new ApplePayHandler({
41
+ braintreeManager: this.braintreeManager,
42
+ applePayClient: client,
43
+ applePaySessionManager: new ApplePaySessionManager(),
44
+ });
45
+ },
46
+ });
47
+ /** Undefined when no Venmo profile id was configured, so Venmo isn't offered. */
48
+ this.venmoHandler = new PromisedSingleton({
49
+ generator: async () => {
50
+ const client = await this.paymentClients.venmo.get();
51
+ if (!this.venmoProfileId) {
52
+ return undefined;
53
+ }
54
+ return new VenmoHandler({
55
+ braintreeManager: this.braintreeManager,
56
+ venmoClient: client,
57
+ venmoProfileId: this.venmoProfileId,
58
+ });
59
+ },
60
+ });
61
+ this.paypalHandler = new PromisedSingleton({
62
+ generator: async () => {
63
+ const [client, paypalLibrary] = await Promise.all([
64
+ this.paymentClients.payPal.get(),
65
+ this.paymentClients.paypalLibrary.get(),
66
+ ]);
67
+ return new PayPalHandler({
68
+ braintreeManager: this.braintreeManager,
69
+ paypalClient: client,
70
+ paypalButton: paypalLibrary.Button,
71
+ hostingEnvironment: this.hostingEnvironment,
72
+ });
73
+ },
74
+ });
75
+ this.googlePayHandler = new PromisedSingleton({
76
+ generator: async () => {
77
+ const [braintreeClient, googlePaymentsClient] = await Promise.all([
78
+ this.paymentClients.googlePayBraintreeClient.get(),
79
+ this.paymentClients.googlePaymentsClient.get(),
80
+ ]);
81
+ return new GooglePayHandler({
82
+ braintreeManager: this.braintreeManager,
83
+ googlePayMerchantId: this.googlePayMerchantId,
84
+ googlePayBraintreeClient: braintreeClient,
85
+ googlePaymentsClient,
86
+ });
87
+ },
88
+ });
89
+ this.hostingEnvironment = HostingEnvironment.Development;
90
+ this.emitter = createNanoEvents();
91
+ this.braintreeManager = options.braintreeManager;
92
+ this.venmoProfileId = options.venmoProfileId;
93
+ this.googlePayMerchantId = options.googlePayMerchantId;
94
+ this.paymentClients = options.paymentClients;
95
+ this.hostingEnvironment = options.hostingEnvironment;
96
+ this.hostedFieldConfig = options.hostedFieldConfig;
97
+ }
98
+ }
99
+ //# sourceMappingURL=payment-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-providers.js","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/braintree/payment-providers.ts"],"names":[],"mappings":"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","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { createNanoEvents, type Unsubscribe } from 'nanoevents';\n\nimport type { BraintreeManagerInterface } from './braintree-manager-interface';\nimport { HostingEnvironment } from './hosting-environment';\nimport type { PaymentClientsInterface } from './payment-clients';\nimport type {\n PaymentProvidersEvents,\n PaymentProvidersInterface,\n} from './payment-providers-interface';\nimport { ApplePayHandler } from './payment-providers/apple-pay/apple-pay';\nimport type { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';\nimport { ApplePaySessionManager } from './payment-providers/apple-pay/apple-pay-session-manager';\nimport { CreditCardHandler } from './payment-providers/credit-card/credit-card';\nimport type { CreditCardHandlerInterface } from './payment-providers/credit-card/credit-card-interface';\nimport type { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';\nimport { GooglePayHandler } from './payment-providers/google-pay/google-pay';\nimport type { GooglePayHandlerInterface } from './payment-providers/google-pay/google-pay-interface';\nimport { PayPalHandler } from './payment-providers/paypal/paypal';\nimport type { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';\nimport { VenmoHandler } from './payment-providers/venmo/venmo';\nimport type { VenmoHandlerInterface } from './payment-providers/venmo/venmo-interface';\n\n/**\n * The IA-specific handlers for each payment provider, each created on first\n * request. They're data-focused rather than UI-focused, though there's some\n * overlap with the flow handlers.\n */\nexport class PaymentProviders implements PaymentProvidersInterface {\n on<E extends keyof PaymentProvidersEvents>(\n event: E,\n callback: PaymentProvidersEvents[E],\n ): Unsubscribe {\n return this.emitter.on(event, callback);\n }\n\n creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({\n generator: async () => {\n const client = await this.paymentClients.hostedFields.get();\n const handler = new CreditCardHandler({\n braintreeManager: this.braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: this.hostedFieldConfig,\n });\n\n handler.on('hostedFieldsRetry', (retryNumber: number) => {\n this.emitter.emit('hostedFieldsRetry', retryNumber);\n });\n\n handler.on('hostedFieldsFailed', (error: unknown) => {\n this.emitter.emit('hostedFieldsFailed', error);\n });\n\n return handler;\n },\n });\n\n applePayHandler = new PromisedSingleton<ApplePayHandlerInterface>({\n generator: async () => {\n const client = await this.paymentClients.applePay.get();\n return new ApplePayHandler({\n braintreeManager: this.braintreeManager,\n applePayClient: client,\n applePaySessionManager: new ApplePaySessionManager(),\n });\n },\n });\n\n /** Undefined when no Venmo profile id was configured, so Venmo isn't offered. */\n venmoHandler = new PromisedSingleton<VenmoHandlerInterface | undefined>({\n generator: async () => {\n const client = await this.paymentClients.venmo.get();\n if (!this.venmoProfileId) {\n return undefined;\n }\n return new VenmoHandler({\n braintreeManager: this.braintreeManager,\n venmoClient: client,\n venmoProfileId: this.venmoProfileId,\n });\n },\n });\n\n paypalHandler = new PromisedSingleton<PayPalHandlerInterface>({\n generator: async () => {\n const [client, paypalLibrary] = await Promise.all([\n this.paymentClients.payPal.get(),\n this.paymentClients.paypalLibrary.get(),\n ]);\n return new PayPalHandler({\n braintreeManager: this.braintreeManager,\n paypalClient: client,\n paypalButton: paypalLibrary.Button,\n hostingEnvironment: this.hostingEnvironment,\n });\n },\n });\n\n googlePayHandler = new PromisedSingleton<GooglePayHandlerInterface>({\n generator: async () => {\n const [braintreeClient, googlePaymentsClient] = await Promise.all([\n this.paymentClients.googlePayBraintreeClient.get(),\n this.paymentClients.googlePaymentsClient.get(),\n ]);\n return new GooglePayHandler({\n braintreeManager: this.braintreeManager,\n googlePayMerchantId: this.googlePayMerchantId,\n googlePayBraintreeClient: braintreeClient,\n googlePaymentsClient,\n });\n },\n });\n\n private braintreeManager: BraintreeManagerInterface;\n\n private venmoProfileId?: string;\n\n private googlePayMerchantId?: string;\n\n private hostedFieldConfig: HostedFieldConfiguration;\n\n private hostingEnvironment: HostingEnvironment =\n HostingEnvironment.Development;\n\n private paymentClients: PaymentClientsInterface;\n\n private emitter = createNanoEvents<PaymentProvidersEvents>();\n\n constructor(options: {\n braintreeManager: BraintreeManagerInterface;\n paymentClients: PaymentClientsInterface;\n venmoProfileId?: string;\n googlePayMerchantId?: string;\n hostingEnvironment: HostingEnvironment;\n hostedFieldConfig: HostedFieldConfiguration;\n }) {\n this.braintreeManager = options.braintreeManager;\n this.venmoProfileId = options.venmoProfileId;\n this.googlePayMerchantId = options.googlePayMerchantId;\n this.paymentClients = options.paymentClients;\n this.hostingEnvironment = options.hostingEnvironment;\n this.hostedFieldConfig = options.hostedFieldConfig;\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ /** Something that can veto a keystroke in a text field. */
2
+ export interface FieldValidatorInterface {
3
+ keydown(e: KeyboardEvent): void;
4
+ }
5
+ /**
6
+ * Keeps a text field to a currency amount: digits with an optional decimal
7
+ * point and up to two decimal places. Attach it as the field's `keydown`
8
+ * handler; it cancels any keystroke that would make the value invalid.
9
+ *
10
+ * Because it checks the value the keystroke *would* produce, it accounts for
11
+ * the cursor position and any selected text being replaced.
12
+ */
13
+ export declare class CurrencyValidator implements FieldValidatorInterface {
14
+ keydown(e: KeyboardEvent): void;
15
+ }
16
+ //# sourceMappingURL=currency-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-validator.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-donation-form/currency-validator.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAC/D,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;CA6BhC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Keeps a text field to a currency amount: digits with an optional decimal
3
+ * point and up to two decimal places. Attach it as the field's `keydown`
4
+ * handler; it cancels any keystroke that would make the value invalid.
5
+ *
6
+ * Because it checks the value the keystroke *would* produce, it accounts for
7
+ * the cursor position and any selected text being replaced.
8
+ */
9
+ export class CurrencyValidator {
10
+ keydown(e) {
11
+ const char = e.key;
12
+ // Shortcuts like select-all go through
13
+ if (e.metaKey)
14
+ return;
15
+ switch (char) {
16
+ case 'Tab':
17
+ case 'Delete':
18
+ case 'Backspace':
19
+ case 'ArrowLeft':
20
+ case 'ArrowRight':
21
+ case 'ArrowUp':
22
+ case 'ArrowDown':
23
+ return;
24
+ }
25
+ const input = e.target;
26
+ const value = input.value;
27
+ const prefix = value.slice(0, input.selectionStart ?? 0);
28
+ const suffix = value.slice(input.selectionEnd ?? 0);
29
+ const newValue = `${prefix}${char}${suffix}`;
30
+ const regex = /^[0-9]+(\.[0-9]{0,2})?$/; // xxxxx.xx
31
+ const valid = regex.test(newValue);
32
+ if (!valid) {
33
+ e.preventDefault();
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=currency-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-validator.js","sourceRoot":"","sources":["../../../../src/elements/ia-donation-form/currency-validator.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,CAAgB;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;QAEnB,uCAAuC;QACvC,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO;QAEtB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY,CAAC;YAClB,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,yBAAyB,CAAC,CAAC,WAAW;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;CACF","sourcesContent":["/** Something that can veto a keystroke in a text field. */\nexport interface FieldValidatorInterface {\n keydown(e: KeyboardEvent): void;\n}\n\n/**\n * Keeps a text field to a currency amount: digits with an optional decimal\n * point and up to two decimal places. Attach it as the field's `keydown`\n * handler; it cancels any keystroke that would make the value invalid.\n *\n * Because it checks the value the keystroke *would* produce, it accounts for\n * the cursor position and any selected text being replaced.\n */\nexport class CurrencyValidator implements FieldValidatorInterface {\n keydown(e: KeyboardEvent): void {\n const char = e.key;\n\n // Shortcuts like select-all go through\n if (e.metaKey) return;\n\n switch (char) {\n case 'Tab':\n case 'Delete':\n case 'Backspace':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n return;\n }\n\n const input = e.target as HTMLInputElement;\n const value = input.value;\n const prefix = value.slice(0, input.selectionStart ?? 0);\n const suffix = value.slice(input.selectionEnd ?? 0);\n const newValue = `${prefix}${char}${suffix}`;\n const regex = /^[0-9]+(\\.[0-9]{0,2})?$/; // xxxxx.xx\n const valid = regex.test(newValue);\n\n if (!valid) {\n e.preventDefault();\n }\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /** An error raised by the donation form itself, as opposed to one from a payment library. */
2
+ export declare class DonationFormError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ //# sourceMappingURL=donation-form-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donation-form-error.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-donation-form/donation-form-error.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,8 @@
1
+ /** An error raised by the donation form itself, as opposed to one from a payment library. */
2
+ export class DonationFormError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'DonationFormError';
6
+ }
7
+ }
8
+ //# sourceMappingURL=donation-form-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donation-form-error.js","sourceRoot":"","sources":["../../../../src/elements/ia-donation-form/donation-form-error.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF","sourcesContent":["/** An error raised by the donation form itself, as opposed to one from a payment library. */\nexport class DonationFormError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'DonationFormError';\n }\n}\n"]}
@@ -0,0 +1,118 @@
1
+ import { type ModalManagerInterface } from '@internetarchive/modal-manager';
2
+ import type { DonationEventLoggerInterface } from '../analytics.js';
3
+ import type { BraintreeManagerInterface } from '../braintree/braintree-manager-interface.js';
4
+ import type { DonationPaymentInfo } from '../models/donation-payment-info.js';
5
+ import { type DonationResponse, type SuccessResponse } from '../models/donation-response.js';
6
+ import { DonationType } from '../models/donation-type.js';
7
+ import type { BillingInfo, CustomerInfo } from '../models/donor-contact-info.js';
8
+ import type { PaymentProvider } from '../models/payment-provider.js';
9
+ import { UpsellModalCTAMode } from '../modals/ia-donation-upsell-modal-content.js';
10
+ import '../modals/ia-donation-confirm-modal.js';
11
+ import '../modals/ia-donation-error-modal-content.js';
12
+ import '../modals/ia-donation-upsell-modal-content.js';
13
+ /**
14
+ * The high-level modal flow. Each payment provider gets the donor to a nonce
15
+ * differently (PayPal button, Apple Pay sheet, the Venmo app), but from there
16
+ * the modals are the same: processing, upsell, thank you, error. The flow
17
+ * handlers call this to take the donor through them.
18
+ */
19
+ export interface DonationFlowModalManagerInterface {
20
+ showConfirmationStepModal(options: {
21
+ amount: number;
22
+ donationType: DonationType;
23
+ currencyType: string;
24
+ confirmDonationCB: () => void;
25
+ cancelDonationCB: () => void;
26
+ }): Promise<void>;
27
+ closeModal(): void;
28
+ showProcessingModal(): void;
29
+ showThankYouModal(options: {
30
+ successResponse: SuccessResponse;
31
+ upsellSuccessResponse?: SuccessResponse;
32
+ }): void;
33
+ showErrorModal(options: {
34
+ message: string;
35
+ userClosedModalCallback?: () => void;
36
+ }): void;
37
+ showUpsellModal(options: {
38
+ oneTimeAmount: number;
39
+ ctaMode?: UpsellModalCTAMode;
40
+ yesSelected?: (amount: number) => void;
41
+ noSelected?: () => void;
42
+ amountChanged?: (amount: number) => void;
43
+ userClosedModalCallback?: () => void;
44
+ }): Promise<void>;
45
+ /**
46
+ * The main flow, once the provider has handed back a nonce: show
47
+ * processing, submit, then the upsell or thank you or error.
48
+ */
49
+ startDonationSubmissionFlow(options: {
50
+ nonce: string;
51
+ paymentProvider: PaymentProvider;
52
+ donationInfo: DonationPaymentInfo;
53
+ billingInfo: BillingInfo;
54
+ customerInfo: CustomerInfo;
55
+ upsellOnetimeTransactionId?: string;
56
+ customerId?: string;
57
+ recaptchaToken?: string;
58
+ bin?: string;
59
+ binName?: string;
60
+ }): Promise<DonationResponse | undefined>;
61
+ /**
62
+ * What happens after a successful donation depends on its type: a one-time
63
+ * donation gets the monthly upsell, a monthly one goes straight to thanks.
64
+ */
65
+ handleSuccessfulDonationResponse(donationInfo: DonationPaymentInfo, response: SuccessResponse): void;
66
+ }
67
+ export declare class DonationFlowModalManager implements DonationFlowModalManagerInterface {
68
+ private braintreeManager;
69
+ private modalManager;
70
+ private analytics;
71
+ constructor(options: {
72
+ braintreeManager: BraintreeManagerInterface;
73
+ modalManager: ModalManagerInterface;
74
+ analytics: DonationEventLoggerInterface;
75
+ });
76
+ closeModal(): void;
77
+ showProcessingModal(): void;
78
+ showThankYouModal(options: {
79
+ successResponse: SuccessResponse;
80
+ upsellSuccessResponse?: SuccessResponse;
81
+ }): void;
82
+ showErrorModal(options: {
83
+ message: string;
84
+ userClosedModalCallback?: () => void;
85
+ }): void;
86
+ showConfirmationStepModal(options: {
87
+ amount: number;
88
+ donationType: DonationType;
89
+ currencyType: string;
90
+ confirmDonationCB: () => void;
91
+ cancelDonationCB: () => void;
92
+ }): Promise<void>;
93
+ showUpsellModal(options: {
94
+ oneTimeAmount: number;
95
+ yesSelected?: (amount: number) => void;
96
+ noSelected?: () => void;
97
+ amountChanged?: (amount: number) => void;
98
+ userClosedModalCallback?: () => void;
99
+ ctaMode?: UpsellModalCTAMode;
100
+ }): Promise<void>;
101
+ startDonationSubmissionFlow(options: {
102
+ nonce: string;
103
+ paymentProvider: PaymentProvider;
104
+ donationInfo: DonationPaymentInfo;
105
+ billingInfo: BillingInfo;
106
+ customerInfo: CustomerInfo;
107
+ upsellOnetimeTransactionId?: string;
108
+ customerId?: string;
109
+ recaptchaToken?: string;
110
+ bin?: string;
111
+ binName?: string;
112
+ }): Promise<DonationResponse | undefined>;
113
+ private upsellModalYesSelected;
114
+ /** The monthly amount the upsell suggests, stepped up with the one-time gift. */
115
+ static getDefaultUpsellAmount(oneTimeAmount: number): number;
116
+ handleSuccessfulDonationResponse(donationInfo: DonationPaymentInfo, response: SuccessResponse): void;
117
+ }
118
+ //# sourceMappingURL=donation-flow-modal-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donation-flow-modal-manager.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ import { html } from 'lit';
2
+ import { msg } from '@lit/localize';
3
+ import { ModalConfig, } from '@internetarchive/modal-manager';
4
+ import { DonationType } from '../models/donation-type.js';
5
+ import { UpsellModalCTAMode } from '../modals/ia-donation-upsell-modal-content.js';
6
+ import '../modals/ia-donation-confirm-modal.js';
7
+ import '../modals/ia-donation-error-modal-content.js';
8
+ import '../modals/ia-donation-upsell-modal-content.js';
9
+ const ModalHeaderColor = {
10
+ Blue: '#497fbf',
11
+ Green: '#55A183',
12
+ Red: '#691916',
13
+ };
14
+ export class DonationFlowModalManager {
15
+ constructor(options) {
16
+ this.modalManager = options.modalManager;
17
+ this.braintreeManager = options.braintreeManager;
18
+ this.analytics = options.analytics;
19
+ }
20
+ closeModal() {
21
+ this.modalManager.closeModal();
22
+ }
23
+ showProcessingModal() {
24
+ const modalConfig = new ModalConfig({
25
+ headerColor: ModalHeaderColor.Blue,
26
+ showProcessingIndicator: true,
27
+ closeOnBackdropClick: false,
28
+ showCloseButton: false,
29
+ processingImageMode: 'processing',
30
+ title: html `${msg('Processing...')}`,
31
+ });
32
+ this.modalManager.showModal({ config: modalConfig });
33
+ }
34
+ showThankYouModal(options) {
35
+ const modalConfig = new ModalConfig({
36
+ showProcessingIndicator: true,
37
+ processingImageMode: 'complete',
38
+ headerColor: ModalHeaderColor.Green,
39
+ title: html `${msg('Thank You!')}`,
40
+ });
41
+ this.modalManager.showModal({ config: modalConfig });
42
+ const selectedPayment = options.successResponse.paymentProvider.replace(/\s+/g, '');
43
+ let action = `Donated-${selectedPayment}`;
44
+ if (options.upsellSuccessResponse) {
45
+ action += `-upsell`;
46
+ }
47
+ const label = options.successResponse.donationType;
48
+ this.analytics.logDonationFlowEvent(action, label);
49
+ this.braintreeManager.donationSuccessful(options);
50
+ }
51
+ showErrorModal(options) {
52
+ const modalConfig = new ModalConfig({
53
+ headerColor: ModalHeaderColor.Red,
54
+ title: html `${msg('Processing error')}`,
55
+ headline: html `${msg("There's been a problem completing your donation.")}`,
56
+ message: html `${options.message}`,
57
+ });
58
+ this.modalManager.showModal({
59
+ config: modalConfig,
60
+ userClosedModalCallback: options.userClosedModalCallback,
61
+ customModalContent: html `
62
+ <ia-donation-error-modal-content></ia-donation-error-modal-content>
63
+ `,
64
+ });
65
+ }
66
+ showConfirmationStepModal(options) {
67
+ const modalTitle = options.donationType === DonationType.Upsell
68
+ ? msg('Confirm monthly donation')
69
+ : msg('Complete donation');
70
+ const modalConfig = new ModalConfig({
71
+ closeOnBackdropClick: false,
72
+ headerColor: ModalHeaderColor.Green,
73
+ title: html `${modalTitle}`,
74
+ message: html `
75
+ <ia-donation-confirm-modal
76
+ .amount=${options.amount}
77
+ .currencyType=${options.currencyType}
78
+ .donationType=${options.donationType}
79
+ .confirmDonation=${options.confirmDonationCB}
80
+ .cancelDonation=${options.cancelDonationCB}
81
+ ></ia-donation-confirm-modal>
82
+ `,
83
+ });
84
+ return this.modalManager.showModal({
85
+ config: modalConfig,
86
+ userClosedModalCallback: options.cancelDonationCB,
87
+ });
88
+ }
89
+ showUpsellModal(options) {
90
+ const modalConfig = new ModalConfig({
91
+ headerColor: ModalHeaderColor.Green,
92
+ title: html `${msg('Donation received')}`,
93
+ processingImageMode: 'complete',
94
+ showProcessingIndicator: true,
95
+ });
96
+ const upsellAmount = DonationFlowModalManager.getDefaultUpsellAmount(options.oneTimeAmount);
97
+ options.amountChanged?.(upsellAmount);
98
+ const modalContent = html `
99
+ <ia-donation-upsell-modal-content
100
+ .amount=${upsellAmount}
101
+ .yesButtonMode=${options.ctaMode ?? UpsellModalCTAMode.YesButton}
102
+ @yesSelected=${(e) => options.yesSelected?.(e.detail.amount)}
103
+ @noThanksSelected=${options.noSelected}
104
+ @amountChanged=${(e) => options.amountChanged?.(e.detail.amount)}
105
+ >
106
+ <slot name="paypal-upsell-button"></slot>
107
+ </ia-donation-upsell-modal-content>
108
+ `;
109
+ return this.modalManager.showModal({
110
+ config: modalConfig,
111
+ customModalContent: modalContent,
112
+ userClosedModalCallback: options.userClosedModalCallback,
113
+ });
114
+ }
115
+ async startDonationSubmissionFlow(options) {
116
+ this.showProcessingModal();
117
+ try {
118
+ const response = await this.braintreeManager.submitDonation(options);
119
+ if (response.success) {
120
+ this.handleSuccessfulDonationResponse(options.donationInfo, response.value);
121
+ }
122
+ else {
123
+ const error = response.value;
124
+ this.showErrorModal({ message: error.message });
125
+ }
126
+ return response;
127
+ }
128
+ catch (error) {
129
+ this.showErrorModal({ message: `${error}` });
130
+ console.error('error getting a response', error);
131
+ return undefined;
132
+ }
133
+ }
134
+ async upsellModalYesSelected(oneTimeDonationResponse, amount) {
135
+ this.showProcessingModal();
136
+ try {
137
+ const response = await this.braintreeManager.submitUpsellDonation({
138
+ oneTimeDonationResponse,
139
+ amount,
140
+ });
141
+ if (response.success) {
142
+ this.showThankYouModal({
143
+ successResponse: oneTimeDonationResponse,
144
+ upsellSuccessResponse: response.value,
145
+ });
146
+ }
147
+ else {
148
+ const error = response.value;
149
+ this.showErrorModal({ message: error.message });
150
+ }
151
+ return response;
152
+ }
153
+ catch (error) {
154
+ this.showErrorModal({ message: `${error}` });
155
+ console.error('error getting a response', error);
156
+ return undefined;
157
+ }
158
+ }
159
+ /** The monthly amount the upsell suggests, stepped up with the one-time gift. */
160
+ static getDefaultUpsellAmount(oneTimeAmount) {
161
+ if (oneTimeAmount <= 10)
162
+ return 8;
163
+ if (oneTimeAmount <= 25)
164
+ return 10;
165
+ if (oneTimeAmount <= 100)
166
+ return 25;
167
+ return 50;
168
+ }
169
+ handleSuccessfulDonationResponse(donationInfo, response) {
170
+ switch (donationInfo.donationType) {
171
+ case DonationType.OneTime:
172
+ this.showUpsellModal({
173
+ oneTimeAmount: response.amount,
174
+ yesSelected: (amount) => {
175
+ this.upsellModalYesSelected(response, amount);
176
+ },
177
+ noSelected: () => {
178
+ this.showThankYouModal({ successResponse: response });
179
+ },
180
+ userClosedModalCallback: () => {
181
+ this.showThankYouModal({ successResponse: response });
182
+ },
183
+ });
184
+ break;
185
+ case DonationType.Monthly:
186
+ this.showThankYouModal({ successResponse: response });
187
+ break;
188
+ // The upsell itself is completed in `upsellModalYesSelected`
189
+ case DonationType.Upsell:
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ //# sourceMappingURL=donation-flow-modal-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donation-flow-modal-manager.js","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport { msg } from '@lit/localize';\nimport {\n ModalConfig,\n type ModalManagerInterface,\n} from '@internetarchive/modal-manager';\n\nimport type { DonationEventLoggerInterface } from '../analytics';\nimport type { BraintreeManagerInterface } from '../braintree/braintree-manager-interface';\nimport type { DonationPaymentInfo } from '../models/donation-payment-info';\nimport {\n type DonationResponse,\n type ErrorResponse,\n type SuccessResponse,\n} from '../models/donation-response';\nimport { DonationType } from '../models/donation-type';\nimport type { BillingInfo, CustomerInfo } from '../models/donor-contact-info';\nimport type { PaymentProvider } from '../models/payment-provider';\nimport { UpsellModalCTAMode } from '../modals/ia-donation-upsell-modal-content';\nimport '../modals/ia-donation-confirm-modal';\nimport '../modals/ia-donation-error-modal-content';\nimport '../modals/ia-donation-upsell-modal-content';\n\nconst ModalHeaderColor = {\n Blue: '#497fbf',\n Green: '#55A183',\n Red: '#691916',\n} as const;\n\n/**\n * The high-level modal flow. Each payment provider gets the donor to a nonce\n * differently (PayPal button, Apple Pay sheet, the Venmo app), but from there\n * the modals are the same: processing, upsell, thank you, error. The flow\n * handlers call this to take the donor through them.\n */\nexport interface DonationFlowModalManagerInterface {\n showConfirmationStepModal(options: {\n amount: number;\n donationType: DonationType;\n currencyType: string;\n confirmDonationCB: () => void;\n cancelDonationCB: () => void;\n }): Promise<void>;\n\n closeModal(): void;\n\n showProcessingModal(): void;\n\n showThankYouModal(options: {\n successResponse: SuccessResponse;\n upsellSuccessResponse?: SuccessResponse;\n }): void;\n\n showErrorModal(options: {\n message: string;\n userClosedModalCallback?: () => void;\n }): void;\n\n showUpsellModal(options: {\n oneTimeAmount: number;\n ctaMode?: UpsellModalCTAMode;\n yesSelected?: (amount: number) => void;\n noSelected?: () => void;\n amountChanged?: (amount: number) => void;\n userClosedModalCallback?: () => void;\n }): Promise<void>;\n\n /**\n * The main flow, once the provider has handed back a nonce: show\n * processing, submit, then the upsell or thank you or error.\n */\n startDonationSubmissionFlow(options: {\n nonce: string;\n paymentProvider: PaymentProvider;\n donationInfo: DonationPaymentInfo;\n billingInfo: BillingInfo;\n customerInfo: CustomerInfo;\n upsellOnetimeTransactionId?: string;\n customerId?: string;\n recaptchaToken?: string;\n bin?: string;\n binName?: string;\n }): Promise<DonationResponse | undefined>;\n\n /**\n * What happens after a successful donation depends on its type: a one-time\n * donation gets the monthly upsell, a monthly one goes straight to thanks.\n */\n handleSuccessfulDonationResponse(\n donationInfo: DonationPaymentInfo,\n response: SuccessResponse,\n ): void;\n}\n\nexport class DonationFlowModalManager\n implements DonationFlowModalManagerInterface\n{\n private braintreeManager: BraintreeManagerInterface;\n\n private modalManager: ModalManagerInterface;\n\n private analytics: DonationEventLoggerInterface;\n\n constructor(options: {\n braintreeManager: BraintreeManagerInterface;\n modalManager: ModalManagerInterface;\n analytics: DonationEventLoggerInterface;\n }) {\n this.modalManager = options.modalManager;\n this.braintreeManager = options.braintreeManager;\n this.analytics = options.analytics;\n }\n\n closeModal(): void {\n this.modalManager.closeModal();\n }\n\n showProcessingModal(): void {\n const modalConfig = new ModalConfig({\n headerColor: ModalHeaderColor.Blue,\n showProcessingIndicator: true,\n closeOnBackdropClick: false,\n showCloseButton: false,\n processingImageMode: 'processing',\n title: html`${msg('Processing...')}`,\n });\n this.modalManager.showModal({ config: modalConfig });\n }\n\n showThankYouModal(options: {\n successResponse: SuccessResponse;\n upsellSuccessResponse?: SuccessResponse;\n }): void {\n const modalConfig = new ModalConfig({\n showProcessingIndicator: true,\n processingImageMode: 'complete',\n headerColor: ModalHeaderColor.Green,\n title: html`${msg('Thank You!')}`,\n });\n this.modalManager.showModal({ config: modalConfig });\n\n const selectedPayment = options.successResponse.paymentProvider.replace(\n /\\s+/g,\n '',\n );\n let action = `Donated-${selectedPayment}`;\n if (options.upsellSuccessResponse) {\n action += `-upsell`;\n }\n const label = options.successResponse.donationType;\n this.analytics.logDonationFlowEvent(action, label);\n\n this.braintreeManager.donationSuccessful(options);\n }\n\n showErrorModal(options: {\n message: string;\n userClosedModalCallback?: () => void;\n }): void {\n const modalConfig = new ModalConfig({\n headerColor: ModalHeaderColor.Red,\n title: html`${msg('Processing error')}`,\n headline: html`${msg(\"There's been a problem completing your donation.\")}`,\n message: html`${options.message}`,\n });\n\n this.modalManager.showModal({\n config: modalConfig,\n userClosedModalCallback: options.userClosedModalCallback,\n customModalContent: html`\n <ia-donation-error-modal-content></ia-donation-error-modal-content>\n `,\n });\n }\n\n showConfirmationStepModal(options: {\n amount: number;\n donationType: DonationType;\n currencyType: string;\n confirmDonationCB: () => void;\n cancelDonationCB: () => void;\n }): Promise<void> {\n const modalTitle =\n options.donationType === DonationType.Upsell\n ? msg('Confirm monthly donation')\n : msg('Complete donation');\n\n const modalConfig = new ModalConfig({\n closeOnBackdropClick: false,\n headerColor: ModalHeaderColor.Green,\n title: html`${modalTitle}`,\n message: html`\n <ia-donation-confirm-modal\n .amount=${options.amount}\n .currencyType=${options.currencyType}\n .donationType=${options.donationType}\n .confirmDonation=${options.confirmDonationCB}\n .cancelDonation=${options.cancelDonationCB}\n ></ia-donation-confirm-modal>\n `,\n });\n return this.modalManager.showModal({\n config: modalConfig,\n userClosedModalCallback: options.cancelDonationCB,\n });\n }\n\n showUpsellModal(options: {\n oneTimeAmount: number;\n yesSelected?: (amount: number) => void;\n noSelected?: () => void;\n amountChanged?: (amount: number) => void;\n userClosedModalCallback?: () => void;\n ctaMode?: UpsellModalCTAMode;\n }): Promise<void> {\n const modalConfig = new ModalConfig({\n headerColor: ModalHeaderColor.Green,\n title: html`${msg('Donation received')}`,\n processingImageMode: 'complete',\n showProcessingIndicator: true,\n });\n\n const upsellAmount = DonationFlowModalManager.getDefaultUpsellAmount(\n options.oneTimeAmount,\n );\n options.amountChanged?.(upsellAmount);\n\n const modalContent = html`\n <ia-donation-upsell-modal-content\n .amount=${upsellAmount}\n .yesButtonMode=${options.ctaMode ?? UpsellModalCTAMode.YesButton}\n @yesSelected=${(e: CustomEvent): void =>\n options.yesSelected?.(e.detail.amount)}\n @noThanksSelected=${options.noSelected}\n @amountChanged=${(e: CustomEvent): void =>\n options.amountChanged?.(e.detail.amount)}\n >\n <slot name=\"paypal-upsell-button\"></slot>\n </ia-donation-upsell-modal-content>\n `;\n return this.modalManager.showModal({\n config: modalConfig,\n customModalContent: modalContent,\n userClosedModalCallback: options.userClosedModalCallback,\n });\n }\n\n async startDonationSubmissionFlow(options: {\n nonce: string;\n paymentProvider: PaymentProvider;\n donationInfo: DonationPaymentInfo;\n billingInfo: BillingInfo;\n customerInfo: CustomerInfo;\n upsellOnetimeTransactionId?: string;\n customerId?: string;\n recaptchaToken?: string;\n bin?: string;\n binName?: string;\n }): Promise<DonationResponse | undefined> {\n this.showProcessingModal();\n\n try {\n const response = await this.braintreeManager.submitDonation(options);\n\n if (response.success) {\n this.handleSuccessfulDonationResponse(\n options.donationInfo,\n response.value as SuccessResponse,\n );\n } else {\n const error = response.value as ErrorResponse;\n this.showErrorModal({ message: error.message });\n }\n return response;\n } catch (error) {\n this.showErrorModal({ message: `${error}` });\n console.error('error getting a response', error);\n return undefined;\n }\n }\n\n private async upsellModalYesSelected(\n oneTimeDonationResponse: SuccessResponse,\n amount: number,\n ): Promise<DonationResponse | undefined> {\n this.showProcessingModal();\n\n try {\n const response = await this.braintreeManager.submitUpsellDonation({\n oneTimeDonationResponse,\n amount,\n });\n\n if (response.success) {\n this.showThankYouModal({\n successResponse: oneTimeDonationResponse,\n upsellSuccessResponse: response.value as SuccessResponse,\n });\n } else {\n const error = response.value as ErrorResponse;\n this.showErrorModal({ message: error.message });\n }\n\n return response;\n } catch (error) {\n this.showErrorModal({ message: `${error}` });\n console.error('error getting a response', error);\n return undefined;\n }\n }\n\n /** The monthly amount the upsell suggests, stepped up with the one-time gift. */\n static getDefaultUpsellAmount(oneTimeAmount: number): number {\n if (oneTimeAmount <= 10) return 8;\n if (oneTimeAmount <= 25) return 10;\n if (oneTimeAmount <= 100) return 25;\n return 50;\n }\n\n handleSuccessfulDonationResponse(\n donationInfo: DonationPaymentInfo,\n response: SuccessResponse,\n ): void {\n switch (donationInfo.donationType) {\n case DonationType.OneTime:\n this.showUpsellModal({\n oneTimeAmount: response.amount,\n yesSelected: (amount: number) => {\n this.upsellModalYesSelected(response, amount);\n },\n noSelected: () => {\n this.showThankYouModal({ successResponse: response });\n },\n userClosedModalCallback: () => {\n this.showThankYouModal({ successResponse: response });\n },\n });\n break;\n case DonationType.Monthly:\n this.showThankYouModal({ successResponse: response });\n break;\n // The upsell itself is completed in `upsellModalYesSelected`\n case DonationType.Upsell:\n break;\n }\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import type { BraintreeManagerInterface } from '../../braintree/braintree-manager-interface.js';
2
+ import type { ApplePaySessionDataSourceDelegate } from '../../braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js';
3
+ import type { DonationPaymentInfo } from '../../models/donation-payment-info.js';
4
+ import type { DonationResponse } from '../../models/donation-response.js';
5
+ import type { DonationFlowModalManagerInterface } from '../donation-flow-modal-manager.js';
6
+ export interface ApplePayFlowHandlerInterface {
7
+ paymentInitiated(donationInfo: DonationPaymentInfo, e: Event): Promise<void>;
8
+ }
9
+ /** The Apple Pay flow: the sheet does the collecting, this handles what comes back. */
10
+ export declare class ApplePayFlowHandler implements ApplePayFlowHandlerInterface, ApplePaySessionDataSourceDelegate {
11
+ private donationFlowModalManager;
12
+ private braintreeManager;
13
+ constructor(options: {
14
+ braintreeManager: BraintreeManagerInterface;
15
+ donationFlowModalManager: DonationFlowModalManagerInterface;
16
+ });
17
+ private applePayDataSource?;
18
+ paymentInitiated(donationInfo: DonationPaymentInfo, e: Event): Promise<void>;
19
+ private modalYesSelected;
20
+ paymentComplete(response: DonationResponse): void;
21
+ paymentFailed(): void;
22
+ paymentCancelled(): void;
23
+ }
24
+ //# sourceMappingURL=apple-pay-flow-handler.d.ts.map