@foxy.io/elements 1.29.0-beta.4 → 1.29.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-admin-subscription-form.js +1 -1
  6. package/dist/cdn/foxy-api-browser.js +1 -1
  7. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
  8. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
  9. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-card.js +1 -1
  11. package/dist/cdn/foxy-attribute-form.js +1 -1
  12. package/dist/cdn/foxy-billing-address-card.js +1 -1
  13. package/dist/cdn/foxy-cancellation-form.js +1 -1
  14. package/dist/cdn/foxy-cart-card.js +1 -1
  15. package/dist/cdn/foxy-cart-form.js +1 -1
  16. package/dist/cdn/foxy-client-card.js +1 -1
  17. package/dist/cdn/foxy-client-form.js +1 -1
  18. package/dist/cdn/foxy-collection-page.js +1 -1
  19. package/dist/cdn/foxy-collection-pages.js +1 -1
  20. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  21. package/dist/cdn/foxy-coupon-card.js +1 -1
  22. package/dist/cdn/foxy-coupon-code-card.js +1 -1
  23. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  24. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  25. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  26. package/dist/cdn/foxy-coupon-form.js +1 -1
  27. package/dist/cdn/foxy-custom-field-card.js +1 -1
  28. package/dist/cdn/foxy-custom-field-form.js +1 -1
  29. package/dist/cdn/foxy-customer-card.js +1 -1
  30. package/dist/cdn/foxy-customer-form.js +1 -1
  31. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  32. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  33. package/dist/cdn/foxy-customer-portal.js +1 -1
  34. package/dist/cdn/foxy-customer.js +1 -1
  35. package/dist/cdn/foxy-customers-table.js +1 -1
  36. package/dist/cdn/foxy-discount-builder.js +1 -1
  37. package/dist/cdn/foxy-discount-card.js +1 -1
  38. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  39. package/dist/cdn/foxy-donation.js +1 -1
  40. package/dist/cdn/foxy-downloadable-card.js +1 -1
  41. package/dist/cdn/foxy-downloadable-form.js +2 -2
  42. package/dist/cdn/foxy-email-template-card.js +1 -1
  43. package/dist/cdn/foxy-email-template-form.js +1 -1
  44. package/dist/cdn/foxy-error-entry-card.js +1 -1
  45. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  46. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  47. package/dist/cdn/foxy-form-dialog.js +1 -1
  48. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  49. package/dist/cdn/foxy-gift-card-card.js +1 -1
  50. package/dist/cdn/foxy-gift-card-code-card.js +1 -1
  51. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  52. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  53. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  54. package/dist/cdn/foxy-gift-card-form.js +1 -1
  55. package/dist/cdn/foxy-i18n-editor.js +554 -2
  56. package/dist/cdn/foxy-i18n.js +1 -1
  57. package/dist/cdn/foxy-integration-card.js +1 -1
  58. package/dist/cdn/foxy-integration-form.js +1 -1
  59. package/dist/cdn/foxy-item-card.js +1 -1
  60. package/dist/cdn/foxy-item-category-card.js +1 -1
  61. package/dist/cdn/foxy-item-category-form.js +1 -1
  62. package/dist/cdn/foxy-item-form.js +3 -3
  63. package/dist/cdn/foxy-item-option-card.js +1 -1
  64. package/dist/cdn/foxy-item-option-form.js +1 -1
  65. package/dist/cdn/foxy-items-form.js +1 -1
  66. package/dist/cdn/foxy-native-integration-card.js +1 -1
  67. package/dist/cdn/foxy-native-integration-form.js +1 -1
  68. package/dist/cdn/foxy-pagination.js +1 -1
  69. package/dist/cdn/foxy-passkey-card.js +1 -1
  70. package/dist/cdn/foxy-passkey-form.js +1 -1
  71. package/dist/cdn/foxy-payment-card-embed.js +1 -1
  72. package/dist/cdn/foxy-payment-card.js +1 -1
  73. package/dist/cdn/foxy-payment-method-card.js +1 -1
  74. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  75. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  76. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  77. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  78. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  79. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  80. package/dist/cdn/foxy-payments-api.js +1 -1
  81. package/dist/cdn/foxy-query-builder.js +1 -1
  82. package/dist/cdn/foxy-report-form.js +2 -2
  83. package/dist/cdn/foxy-reports-table.js +1 -1
  84. package/dist/cdn/foxy-shipment-card.js +1 -1
  85. package/dist/cdn/foxy-shipping-container-card.js +1 -1
  86. package/dist/cdn/foxy-shipping-drop-type-card.js +1 -1
  87. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  88. package/dist/cdn/foxy-shipping-service-card.js +1 -1
  89. package/dist/cdn/foxy-sign-in-form.js +1 -1
  90. package/dist/cdn/foxy-spinner.js +2 -2
  91. package/dist/cdn/foxy-store-card.js +1 -1
  92. package/dist/cdn/foxy-store-form.js +1 -1
  93. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  94. package/dist/cdn/foxy-subscription-card.js +1 -1
  95. package/dist/cdn/foxy-subscription-form.js +1 -1
  96. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  97. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  98. package/dist/cdn/foxy-table.js +1 -1
  99. package/dist/cdn/foxy-tax-card.js +1 -1
  100. package/dist/cdn/foxy-tax-form.js +1 -1
  101. package/dist/cdn/foxy-template-config-form.js +1 -1
  102. package/dist/cdn/foxy-template-form.js +1 -1
  103. package/dist/cdn/foxy-template-set-card.js +1 -1
  104. package/dist/cdn/foxy-template-set-form.js +1 -1
  105. package/dist/cdn/foxy-transaction-card.js +1 -1
  106. package/dist/cdn/foxy-transaction.js +1 -1
  107. package/dist/cdn/foxy-transactions-table.js +1 -1
  108. package/dist/cdn/foxy-update-payment-method-form.js +1 -1
  109. package/dist/cdn/foxy-user-card.js +1 -1
  110. package/dist/cdn/foxy-user-form.js +1 -1
  111. package/dist/cdn/foxy-users-table.js +1 -1
  112. package/dist/cdn/foxy-webhook-card.js +1 -1
  113. package/dist/cdn/foxy-webhook-form.js +1 -1
  114. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  115. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  116. package/dist/cdn/{shared-fa9e5c7f.js → shared-0ad0fb9f.js} +1 -1
  117. package/dist/cdn/{shared-9a90a24e.js → shared-0c7f9c0c.js} +1 -1
  118. package/dist/cdn/{shared-acdcae7e.js → shared-0f00d4d8.js} +1 -1
  119. package/dist/cdn/{shared-339bbd50.js → shared-13203be0.js} +1 -1
  120. package/dist/cdn/{shared-1cf1e1a4.js → shared-1467a889.js} +1 -1
  121. package/dist/cdn/{shared-f07d15d6.js → shared-19768452.js} +1 -1
  122. package/dist/cdn/{shared-77c4acdd.js → shared-1ecfa77b.js} +1 -1
  123. package/dist/cdn/{shared-7b8ad9c1.js → shared-226dd830.js} +1 -1
  124. package/dist/cdn/{shared-4993a79d.js → shared-22ba950a.js} +1 -1
  125. package/dist/cdn/{shared-075796e2.js → shared-25502f01.js} +1 -1
  126. package/dist/cdn/{shared-2fc671cd.js → shared-2c1dff50.js} +1 -1
  127. package/dist/cdn/{shared-e2a61f69.js → shared-301a779e.js} +1 -1
  128. package/dist/cdn/{shared-cbb0e610.js → shared-32e92c3b.js} +1 -1
  129. package/dist/cdn/{shared-abea5e34.js → shared-3483c729.js} +1 -1
  130. package/dist/cdn/{shared-72f41a65.js → shared-376784f0.js} +1 -1
  131. package/dist/cdn/{shared-8f7a31e0.js → shared-38f0bda5.js} +2 -2
  132. package/dist/cdn/{shared-cdf20ded.js → shared-40c6b1f6.js} +1 -1
  133. package/dist/cdn/{shared-876a4341.js → shared-421a3ced.js} +1 -1
  134. package/dist/cdn/{shared-f1d2b5bb.js → shared-49ecea83.js} +1 -1
  135. package/dist/cdn/{shared-8c1df97c.js → shared-4f183419.js} +1 -1
  136. package/dist/cdn/{shared-634b670e.js → shared-5c4d786c.js} +1 -1
  137. package/dist/cdn/{shared-77051754.js → shared-63192750.js} +1 -1
  138. package/dist/cdn/{shared-bdd4fbbb.js → shared-6a8a40cc.js} +1 -1
  139. package/dist/cdn/{shared-ff63a551.js → shared-6be24929.js} +1 -1
  140. package/dist/cdn/{shared-644ee296.js → shared-70747a5c.js} +1 -1
  141. package/dist/cdn/{shared-f5366dda.js → shared-75331d5e.js} +1 -1
  142. package/dist/cdn/{shared-fe77f6f6.js → shared-77e15843.js} +1 -1
  143. package/dist/cdn/{shared-2a71795e.js → shared-77ef56aa.js} +1 -1
  144. package/dist/cdn/{shared-3fa791ca.js → shared-8526ed32.js} +1 -1
  145. package/dist/cdn/{shared-fb56178f.js → shared-887e1795.js} +1 -1
  146. package/dist/cdn/{shared-12ac8cc6.js → shared-8bb3eb45.js} +1 -1
  147. package/dist/cdn/{shared-39a33102.js → shared-8cb35eb4.js} +1 -1
  148. package/dist/cdn/{shared-f22f22ae.js → shared-8f74f5fc.js} +1 -1
  149. package/dist/cdn/{shared-72c61f43.js → shared-8fce283a.js} +1 -1
  150. package/dist/cdn/shared-90706e10.js +1 -0
  151. package/dist/cdn/{shared-797ba64a.js → shared-970d98db.js} +1 -1
  152. package/dist/cdn/{shared-30221a16.js → shared-98ddb87c.js} +1 -1
  153. package/dist/cdn/{shared-d393bcd8.js → shared-9a22d597.js} +1 -1
  154. package/dist/cdn/{shared-021c7a22.js → shared-9b895561.js} +1 -1
  155. package/dist/cdn/{shared-d6010c96.js → shared-a97c3129.js} +1 -1
  156. package/dist/cdn/{shared-e6e84ff5.js → shared-ae00ce7c.js} +1 -1
  157. package/dist/cdn/{shared-ffd3690b.js → shared-afd7214a.js} +1 -1
  158. package/dist/cdn/{shared-b98b8d02.js → shared-ba7354fa.js} +1 -1
  159. package/dist/cdn/{shared-7026fb08.js → shared-c11df800.js} +1 -1
  160. package/dist/cdn/shared-c4124870.js +1 -0
  161. package/dist/cdn/{shared-a036e345.js → shared-c5a0cdd7.js} +1 -1
  162. package/dist/cdn/{shared-10325cda.js → shared-c9845b4a.js} +1 -1
  163. package/dist/cdn/{shared-2d723710.js → shared-cc808e01.js} +1 -1
  164. package/dist/cdn/{shared-7fd9a30f.js → shared-ce0465c6.js} +1 -1
  165. package/dist/cdn/shared-cfb33387.js +1 -0
  166. package/dist/cdn/{shared-f8723f3f.js → shared-d0e4d7b1.js} +1 -1
  167. package/dist/cdn/{shared-b731dfc5.js → shared-d75f83f8.js} +1 -1
  168. package/dist/cdn/{shared-e96c5384.js → shared-dbda59a0.js} +1 -1
  169. package/dist/cdn/{shared-a6273e4a.js → shared-df42c94f.js} +1 -1
  170. package/dist/cdn/{shared-a159ccff.js → shared-dfc47fd9.js} +1 -1
  171. package/dist/cdn/{shared-10b5e78f.js → shared-e4870c47.js} +1 -1
  172. package/dist/cdn/{shared-2099544a.js → shared-e7232c2b.js} +2 -2
  173. package/dist/cdn/{shared-b6814728.js → shared-ea8f9a88.js} +2 -2
  174. package/dist/cdn/{shared-7ce91c80.js → shared-ecf479f2.js} +1 -1
  175. package/dist/cdn/{shared-df00a537.js → shared-edae6816.js} +1 -1
  176. package/dist/cdn/{shared-cc79152c.js → shared-ee2cda29.js} +1 -1
  177. package/dist/cdn/{shared-d464d078.js → shared-f21254a3.js} +1 -1
  178. package/dist/cdn/{shared-a8170f94.js → shared-f4abc29a.js} +1 -1
  179. package/dist/cdn/{shared-558bc894.js → shared-f6573d25.js} +1 -1
  180. package/dist/cdn/{shared-6a4e81ad.js → shared-fb1602a2.js} +1 -1
  181. package/dist/cdn/{shared-303b428e.js → shared-fb1dd186.js} +1 -1
  182. package/dist/cdn/{shared-3e03c988.js → shared-fe4a2e3d.js} +1 -1
  183. package/dist/cdn/{shared-e5d37737.js → shared-ff7b2af6.js} +1 -1
  184. package/dist/cdn/translations/client-form/en.json +1 -0
  185. package/dist/cdn/translations/customer-portal/de.json +5 -75
  186. package/dist/cdn/translations/customer-portal/en.json +7 -77
  187. package/dist/cdn/translations/customer-portal/es.json +5 -74
  188. package/dist/cdn/translations/customer-portal/fr.json +5 -75
  189. package/dist/cdn/translations/customer-portal/nl.json +5 -75
  190. package/dist/cdn/translations/customer-portal/pl.json +5 -75
  191. package/dist/cdn/translations/customer-portal/sv.json +5 -75
  192. package/dist/cdn/translations/customer-portal/zh-hk.json +5 -75
  193. package/dist/cdn/translations/native-integration-form/en.json +0 -6
  194. package/dist/cdn/translations/payments-api-fraud-protection-form/en.json +25 -11
  195. package/dist/cdn/translations/payments-api-payment-method-form/en.json +40 -21
  196. package/dist/cdn/translations/payments-api-payment-preset-form/en.json +154 -36
  197. package/dist/cdn/translations/store-form/en.json +3 -4
  198. package/dist/cdn/translations/webhook-form/en.json +3 -11
  199. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js +1 -1
  200. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map +1 -1
  201. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.d.ts +2 -4
  202. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.js.map +1 -1
  203. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.d.ts +4 -2
  204. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.js +6 -5
  205. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.js.map +1 -1
  206. package/dist/elements/internal/InternalSwitchControl/InternalSwitchControl.js +1 -1
  207. package/dist/elements/internal/InternalSwitchControl/InternalSwitchControl.js.map +1 -1
  208. package/dist/elements/internal/InternalTextControl/InternalTextControl.js +1 -1
  209. package/dist/elements/internal/InternalTextControl/InternalTextControl.js.map +1 -1
  210. package/dist/elements/public/ClientForm/ClientForm.d.ts +1 -0
  211. package/dist/elements/public/ClientForm/ClientForm.js +10 -0
  212. package/dist/elements/public/ClientForm/ClientForm.js.map +1 -1
  213. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.d.ts +1 -1
  214. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.js +18 -25
  215. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.js.map +1 -1
  216. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.d.ts +2 -1
  217. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.js +90 -87
  218. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.js.map +1 -1
  219. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.d.ts +2 -1
  220. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.js +4 -1
  221. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.js.map +1 -1
  222. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.d.ts +1 -0
  223. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.js +18 -1
  224. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.js.map +1 -1
  225. package/dist/elements/public/PaymentsApi/api/handlers/available_payment_methods.js +16 -0
  226. package/dist/elements/public/PaymentsApi/api/handlers/available_payment_methods.js.map +1 -1
  227. package/dist/elements/public/PaymentsApi/api/index.js +7 -7
  228. package/dist/elements/public/PaymentsApi/api/index.js.map +1 -1
  229. package/dist/elements/public/PaymentsApi/api/types.d.ts +5 -0
  230. package/dist/elements/public/PaymentsApi/api/types.js.map +1 -1
  231. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.d.ts +1 -1
  232. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js +66 -36
  233. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js.map +1 -1
  234. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.d.ts +3 -2
  235. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js +3 -2
  236. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js.map +1 -1
  237. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.d.ts +8 -3
  238. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +171 -130
  239. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
  240. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.d.ts +2 -4
  241. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js +2 -4
  242. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js.map +1 -1
  243. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.d.ts +6 -7
  244. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js +80 -87
  245. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js.map +1 -1
  246. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.d.ts +2 -1
  247. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.js +2 -1
  248. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.js.map +1 -1
  249. package/dist/elements/public/StoreForm/StoreForm.js +1 -1
  250. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  251. package/dist/elements/public/WebhookForm/WebhookForm.d.ts +2 -1
  252. package/dist/elements/public/WebhookForm/WebhookForm.js +21 -17
  253. package/dist/elements/public/WebhookForm/WebhookForm.js.map +1 -1
  254. package/dist/elements/public/WebhookForm/index.d.ts +1 -0
  255. package/dist/elements/public/WebhookForm/index.js +1 -0
  256. package/dist/elements/public/WebhookForm/index.js.map +1 -1
  257. package/dist/mixins/themeable.js +0 -8
  258. package/dist/mixins/themeable.js.map +1 -1
  259. package/package.json +1 -1
  260. package/dist/cdn/shared-3ea78c8d.js +0 -1
  261. package/dist/cdn/shared-4c2d43e6.js +0 -1
  262. package/dist/cdn/shared-61f4e91a.js +0 -1
  263. package/dist/cdn/shared-81d3a9ae.js +0 -553
  264. package/dist/cdn/{shared-5c05ac06.js → shared-59b7fcc0.js} +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"available_payment_methods.js","sourceRoot":"","sources":["../../../../../../src/elements/public/PaymentsApi/api/handlers/available_payment_methods.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,oBAAiB;AACrC,OAAO,EAAE,OAAO,EAAE,kDAA+C;AAUjE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAc;;IACzC,IAAI,MAAM,GAAuB,SAAS,CAAC;IAC3C,IAAI,IAAY,CAAC;IAEjB,IAAI;QACF,MAAM,EACJ,8BAA8B,EAAE,kBAAkB,EAClD,wBAAwB,EAAE,YAAY,EACtC,sBAAsB,EAAE,SAAS,EACjC,OAAO,EACP,KAAK,GACN,GAAG,MAAM,CAAC;QAEX,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;YAC5B,MAAM,GAAG,GAAG,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;QAED,MAAM,SAAS,GAAG,+DAA+D,CAAC;QAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAE,CAAC,MAAO,CAAC,QAAQ,CAAC;QAOjF,MAAM,yBAAyB,GAAG,SAAS,CAAkB,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxF,MAAM,mBAAmB,GAAG,SAAS,CAAY,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAA,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,0CAAE,IAA0B,CAAC;QAC3E,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,MAAM,MAAM,GAAG,OAAO,CAAC;YACrB,2BAA2B,EAAE,MAAM,yBAAyB;YAC5D,qBAAqB,EAAE,MAAM,mBAAmB;YAChD,eAAe,EAAE,QAAQ;YACzB,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM;SAClC,CAAC,CAAC;QAEH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC;KACd;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,GAAG,CAAC;KACxB;IAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC","sourcesContent":["import type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { fetchJson } from '../utils';\nimport { compose } from '../composers/available_payment_methods';\n\nexport type Params = {\n hostedPaymentGatewaysHelperUrl: string;\n paymentGatewaysHelperUrl: string;\n getPaymentMethodSetUrl: (id: string) => string;\n request: Request;\n fetch: Window['fetch'];\n};\n\n/**\n * Request handler.\n *\n * Endpoint: `/payment_presets/:presetId/available_payment_methods`;\n * Methods: GET;\n * Curie: `fx:available_payment_methods`;\n * Type: property helper.\n */\nexport async function handle(params: Params): Promise<Response> {\n let status: number | undefined = undefined;\n let body: string;\n\n try {\n const {\n hostedPaymentGatewaysHelperUrl: hostedGwsHelperUrl,\n paymentGatewaysHelperUrl: gwsHelperUrl,\n getPaymentMethodSetUrl: getSetUrl,\n request,\n fetch,\n } = params;\n\n if (request.method !== 'GET') {\n status = 405;\n throw new Error('Method not allowed. Allowed methods: GET.');\n }\n\n const pathRegex = /\\/payment_presets\\/(?<presetId>.+)\\/available_payment_methods/;\n const presetId = pathRegex.exec(new URL(request.url).pathname)!.groups!.presetId;\n\n type HostedGwsHelper = Resource<Rels.HostedPaymentGatewaysHelper>;\n type GwsHelper = Resource<Rels.PaymentGatewaysHelper>;\n type Set = Resource<Rels.PaymentMethodSet>;\n type Gw = Resource<Rels.PaymentGateway>;\n\n const whenHostedGwsHelperLoaded = fetchJson<HostedGwsHelper>(fetch(hostedGwsHelperUrl));\n const whenGwsHelperLoaded = fetchJson<GwsHelper>(fetch(gwsHelperUrl));\n const set = await fetchJson<Set>(fetch(getSetUrl(presetId)));\n const gwUrl = set._links['fx:payment_gateway']?.href as string | undefined;\n const gw = gwUrl ? await fetchJson<Gw>(fetch(gwUrl)) : undefined;\n\n const output = compose({\n hostedPaymentGatewaysHelper: await whenHostedGwsHelperLoaded,\n paymentGatewaysHelper: await whenGwsHelperLoaded,\n paymentPresetId: presetId,\n paymentGateway: gw,\n base: new URL(request.url).origin,\n });\n\n body = JSON.stringify(output);\n status = 200;\n } catch (err) {\n body = err instanceof Error ? err.message : String(err);\n status = status ?? 500;\n }\n\n return new Response(body, { status });\n}\n"]}
1
+ {"version":3,"file":"available_payment_methods.js","sourceRoot":"","sources":["../../../../../../src/elements/public/PaymentsApi/api/handlers/available_payment_methods.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PaymentMethod, PaymentMethods } from '../types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { fetchJson } from '../utils';\nimport { compose } from '../composers/available_payment_methods';\n\nexport type Params = {\n hostedPaymentGatewaysHelperUrl: string;\n paymentGatewaysHelperUrl: string;\n getPaymentMethodSetUrl: (id: string) => string;\n request: Request;\n fetch: Window['fetch'];\n};\n\n/**\n * Request handler.\n *\n * Endpoint: `/payment_presets/:presetId/available_payment_methods`;\n * Methods: GET;\n * Curie: `fx:available_payment_methods`;\n * Type: property helper.\n */\nexport async function handle(params: Params): Promise<Response> {\n let status: number | undefined = undefined;\n let body: string;\n\n try {\n const {\n hostedPaymentGatewaysHelperUrl: hostedGwsHelperUrl,\n paymentGatewaysHelperUrl: gwsHelperUrl,\n getPaymentMethodSetUrl: getSetUrl,\n request,\n fetch,\n } = params;\n\n if (request.method !== 'GET') {\n status = 405;\n throw new Error('Method not allowed. Allowed methods: GET.');\n }\n\n const pathRegex = /\\/payment_presets\\/(?<presetId>.+)\\/available_payment_methods/;\n const presetId = pathRegex.exec(new URL(request.url).pathname)!.groups!.presetId;\n\n type HostedGwsHelper = Resource<Rels.HostedPaymentGatewaysHelper>;\n type GwsHelper = Resource<Rels.PaymentGatewaysHelper>;\n type Set = Resource<Rels.PaymentMethodSet>;\n type Gw = Resource<Rels.PaymentGateway>;\n\n const whenHostedGwsHelperLoaded = fetchJson<HostedGwsHelper>(fetch(hostedGwsHelperUrl));\n const whenGwsHelperLoaded = fetchJson<GwsHelper>(fetch(gwsHelperUrl));\n const set = await fetchJson<Set>(fetch(getSetUrl(presetId)));\n\n const whenPaymentMethodsLoaded = (async () => {\n const result: PaymentMethod[] = [];\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const base = new URL(request.url).origin;\n const url = new URL(`${base}/payment_presets/${presetId}/payment_methods`);\n url.searchParams.set('offset', result.length.toString());\n url.searchParams.set('limit', '200');\n\n const json = await fetchJson<PaymentMethods>(fetch(url.toString()));\n result.push(...json._embedded['fx:payment_methods']);\n\n if (json._embedded['fx:payment_methods'].length < 200) break;\n }\n\n return result;\n })();\n\n const gwUrl = set._links['fx:payment_gateway']?.href as string | undefined;\n const gw = gwUrl ? await fetchJson<Gw>(fetch(gwUrl)) : undefined;\n\n const output = compose({\n hostedPaymentGatewaysHelper: await whenHostedGwsHelperLoaded,\n paymentGatewaysHelper: await whenGwsHelperLoaded,\n paymentPresetId: presetId,\n paymentGateway: gw,\n paymentMethods: await whenPaymentMethodsLoaded,\n base: new URL(request.url).origin,\n });\n\n body = JSON.stringify(output);\n status = 200;\n } catch (err) {\n body = err instanceof Error ? err.message : String(err);\n status = status ?? 500;\n }\n\n return new Response(body, { status });\n}\n"]}
@@ -8,22 +8,22 @@ import { handle as handlePaymentPreset, } from "./handlers/payment_preset.js";
8
8
  import { handle as handlePaymentMethod, } from "./handlers/payment_method.js";
9
9
  export function getHandler(params) {
10
10
  const paths = [
11
- [/\/payment_presets\/(?<presetId>.+)\/payment_methods\/(?<methodId>.+)/, handlePaymentMethod],
11
+ [/\/payment_presets\/(?<presetId>.+?)\/payment_methods\/(?<methodId>.+?)/, handlePaymentMethod],
12
12
  [
13
- /\/payment_presets\/(?<presetId>.+)\/available_fraud_protections/,
13
+ /\/payment_presets\/(?<presetId>.+?)\/available_fraud_protections/,
14
14
  handleAvailableFraudProtections,
15
15
  ],
16
16
  [
17
- /\/payment_presets\/(?<presetId>.+)\/available_payment_methods/,
17
+ /\/payment_presets\/(?<presetId>.+?)\/available_payment_methods/,
18
18
  handleAvailablePaymentMethods,
19
19
  ],
20
20
  [
21
- /\/payment_presets\/(?<presetId>.+)\/fraud_protections\/(?<protectionId>.+)/,
21
+ /\/payment_presets\/(?<presetId>.+?)\/fraud_protections\/(?<protectionId>.+?)/,
22
22
  handleFraudProtection,
23
23
  ],
24
- [/\/payment_presets\/(?<presetId>.+)\/fraud_protections/, handleFraudProtections],
25
- [/\/payment_presets\/(?<presetId>.+)\/payment_methods/, handlePaymentMethods],
26
- [/\/payment_presets\/(?<presetId>.+)/, handlePaymentPreset],
24
+ [/\/payment_presets\/(?<presetId>.+?)\/fraud_protections/, handleFraudProtections],
25
+ [/\/payment_presets\/(?<presetId>.+?)\/payment_methods/, handlePaymentMethods],
26
+ [/\/payment_presets\/(?<presetId>.+?)/, handlePaymentPreset],
27
27
  [/\/payment_presets/, handlePaymentPresets],
28
28
  ];
29
29
  for (const [pathRegex, handler] of paths) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,6BAA6B,GAExC,gDAA6C;AAE9C,OAAO,EACL,MAAM,IAAI,+BAA+B,GAE1C,kDAA+C;AAEhD,OAAO,EACL,MAAM,IAAI,sBAAsB,GAEjC,wCAAqC;AAEtC,OAAO,EACL,MAAM,IAAI,qBAAqB,GAEhC,uCAAoC;AAErC,OAAO,EACL,MAAM,IAAI,oBAAoB,GAE/B,sCAAmC;AAEpC,OAAO,EACL,MAAM,IAAI,oBAAoB,GAE/B,sCAAmC;AAEpC,OAAO,EACL,MAAM,IAAI,mBAAmB,GAE9B,qCAAkC;AAEnC,OAAO,EACL,MAAM,IAAI,mBAAmB,GAE9B,qCAAkC;AAanC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG;QACZ,CAAC,sEAAsE,EAAE,mBAAmB,CAAC;QAC7F;YACE,iEAAiE;YACjE,+BAA+B;SAChC;QACD;YACE,+DAA+D;YAC/D,6BAA6B;SAC9B;QACD;YACE,4EAA4E;YAC5E,qBAAqB;SACtB;QACD,CAAC,uDAAuD,EAAE,sBAAsB,CAAC;QACjF,CAAC,qDAAqD,EAAE,oBAAoB,CAAC;QAC7E,CAAC,oCAAoC,EAAE,mBAAmB,CAAC;QAC3D,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACnC,CAAC;IAEX,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE;QACxC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;KAClF;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import {\n handle as handleAvailablePaymentMethods,\n Params as AvailablePaymentMethodsParams,\n} from './handlers/available_payment_methods';\n\nimport {\n handle as handleAvailableFraudProtections,\n Params as AvailableFraudProtectionsParams,\n} from './handlers/available_fraud_protections';\n\nimport {\n handle as handleFraudProtections,\n Params as FraudProtectionsParams,\n} from './handlers/fraud_protections';\n\nimport {\n handle as handleFraudProtection,\n Params as FraudProtectionParams,\n} from './handlers/fraud_protection';\n\nimport {\n handle as handlePaymentMethods,\n Params as PaymentMethodsParams,\n} from './handlers/payment_methods';\n\nimport {\n handle as handlePaymentPresets,\n Params as PaymentPresetsParams,\n} from './handlers/payment_presets';\n\nimport {\n handle as handlePaymentPreset,\n Params as PaymentPresetParams,\n} from './handlers/payment_preset';\n\nimport {\n handle as handlePaymentMethod,\n Params as PaymentMethodParams,\n} from './handlers/payment_method';\n\nexport type Handler = () => Promise<Response>;\n\nexport type Params = AvailablePaymentMethodsParams &\n AvailableFraudProtectionsParams &\n FraudProtectionsParams &\n FraudProtectionParams &\n PaymentMethodsParams &\n PaymentPresetsParams &\n PaymentPresetParams &\n PaymentMethodParams;\n\nexport function getHandler(params: Params): Promise<Response> | null {\n const paths = [\n [/\\/payment_presets\\/(?<presetId>.+)\\/payment_methods\\/(?<methodId>.+)/, handlePaymentMethod],\n [\n /\\/payment_presets\\/(?<presetId>.+)\\/available_fraud_protections/,\n handleAvailableFraudProtections,\n ],\n [\n /\\/payment_presets\\/(?<presetId>.+)\\/available_payment_methods/,\n handleAvailablePaymentMethods,\n ],\n [\n /\\/payment_presets\\/(?<presetId>.+)\\/fraud_protections\\/(?<protectionId>.+)/,\n handleFraudProtection,\n ],\n [/\\/payment_presets\\/(?<presetId>.+)\\/fraud_protections/, handleFraudProtections],\n [/\\/payment_presets\\/(?<presetId>.+)\\/payment_methods/, handlePaymentMethods],\n [/\\/payment_presets\\/(?<presetId>.+)/, handlePaymentPreset],\n [/\\/payment_presets/, handlePaymentPresets],\n ] as const;\n\n for (const [pathRegex, handler] of paths) {\n if (pathRegex.test(new URL(params.request.url).pathname)) return handler(params);\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,6BAA6B,GAExC,gDAA6C;AAE9C,OAAO,EACL,MAAM,IAAI,+BAA+B,GAE1C,kDAA+C;AAEhD,OAAO,EACL,MAAM,IAAI,sBAAsB,GAEjC,wCAAqC;AAEtC,OAAO,EACL,MAAM,IAAI,qBAAqB,GAEhC,uCAAoC;AAErC,OAAO,EACL,MAAM,IAAI,oBAAoB,GAE/B,sCAAmC;AAEpC,OAAO,EACL,MAAM,IAAI,oBAAoB,GAE/B,sCAAmC;AAEpC,OAAO,EACL,MAAM,IAAI,mBAAmB,GAE9B,qCAAkC;AAEnC,OAAO,EACL,MAAM,IAAI,mBAAmB,GAE9B,qCAAkC;AAanC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG;QACZ,CAAC,wEAAwE,EAAE,mBAAmB,CAAC;QAC/F;YACE,kEAAkE;YAClE,+BAA+B;SAChC;QACD;YACE,gEAAgE;YAChE,6BAA6B;SAC9B;QACD;YACE,8EAA8E;YAC9E,qBAAqB;SACtB;QACD,CAAC,wDAAwD,EAAE,sBAAsB,CAAC;QAClF,CAAC,sDAAsD,EAAE,oBAAoB,CAAC;QAC9E,CAAC,qCAAqC,EAAE,mBAAmB,CAAC;QAC5D,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACnC,CAAC;IAEX,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE;QACxC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;KAClF;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import {\n handle as handleAvailablePaymentMethods,\n Params as AvailablePaymentMethodsParams,\n} from './handlers/available_payment_methods';\n\nimport {\n handle as handleAvailableFraudProtections,\n Params as AvailableFraudProtectionsParams,\n} from './handlers/available_fraud_protections';\n\nimport {\n handle as handleFraudProtections,\n Params as FraudProtectionsParams,\n} from './handlers/fraud_protections';\n\nimport {\n handle as handleFraudProtection,\n Params as FraudProtectionParams,\n} from './handlers/fraud_protection';\n\nimport {\n handle as handlePaymentMethods,\n Params as PaymentMethodsParams,\n} from './handlers/payment_methods';\n\nimport {\n handle as handlePaymentPresets,\n Params as PaymentPresetsParams,\n} from './handlers/payment_presets';\n\nimport {\n handle as handlePaymentPreset,\n Params as PaymentPresetParams,\n} from './handlers/payment_preset';\n\nimport {\n handle as handlePaymentMethod,\n Params as PaymentMethodParams,\n} from './handlers/payment_method';\n\nexport type Handler = () => Promise<Response>;\n\nexport type Params = AvailablePaymentMethodsParams &\n AvailableFraudProtectionsParams &\n FraudProtectionsParams &\n FraudProtectionParams &\n PaymentMethodsParams &\n PaymentPresetsParams &\n PaymentPresetParams &\n PaymentMethodParams;\n\nexport function getHandler(params: Params): Promise<Response> | null {\n const paths = [\n [/\\/payment_presets\\/(?<presetId>.+?)\\/payment_methods\\/(?<methodId>.+?)/, handlePaymentMethod],\n [\n /\\/payment_presets\\/(?<presetId>.+?)\\/available_fraud_protections/,\n handleAvailableFraudProtections,\n ],\n [\n /\\/payment_presets\\/(?<presetId>.+?)\\/available_payment_methods/,\n handleAvailablePaymentMethods,\n ],\n [\n /\\/payment_presets\\/(?<presetId>.+?)\\/fraud_protections\\/(?<protectionId>.+?)/,\n handleFraudProtection,\n ],\n [/\\/payment_presets\\/(?<presetId>.+?)\\/fraud_protections/, handleFraudProtections],\n [/\\/payment_presets\\/(?<presetId>.+?)\\/payment_methods/, handlePaymentMethods],\n [/\\/payment_presets\\/(?<presetId>.+?)/, handlePaymentPreset],\n [/\\/payment_presets/, handlePaymentPresets],\n ] as const;\n\n for (const [pathRegex, handler] of paths) {\n if (pathRegex.test(new URL(params.request.url).pathname)) return handler(params);\n }\n\n return null;\n}\n"]}
@@ -120,6 +120,11 @@ interface AvailableFraudProtectionsRel extends Graph {
120
120
  values: {
121
121
  [key: string]: {
122
122
  name: string;
123
+ /** If this fraud protection can't be used due to a conflict with another fraud protection, the details about it will be here. */
124
+ conflict?: {
125
+ type: string;
126
+ name: string;
127
+ };
123
128
  uses_rejection_threshold: boolean;
124
129
  json: null | {
125
130
  blocks: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Rels } from '@foxy.io/sdk/backend';\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\n\nimport type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\ninterface PaymentPresetsRel extends Graph {\n curie: 'fx:payment_presets';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentPresetsRel>;\n child: PaymentPresetRel;\n}\n\ninterface PaymentPresetRel extends Graph {\n curie: 'fx:payment_preset';\n props: Omit<Rels.PaymentMethodSet['props'], 'gateway_uri'>;\n links: {\n 'self': PaymentPresetRel;\n 'fx:store': Rels.Store;\n 'fx:payment_methods': PaymentMethodsRel;\n 'fx:fraud_protections': FraudProtectionsRel;\n 'fx:available_payment_methods': AvailablePaymentMethodsRel;\n 'fx:available_fraud_protections': AvailableFraudProtectionsRel;\n };\n}\n\ninterface PaymentMethodsRel extends Graph {\n curie: 'fx:payment_methods';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentMethodsRel>;\n child: PaymentMethodRel;\n}\n\ninterface PaymentMethodRel extends Graph {\n curie: 'fx:payment_method';\n props: (Rels.HostedPaymentGateway['props'] | Rels.PaymentGateway['props']) & {\n helper: (\n | Rels.PaymentGatewaysHelper\n | Rels.HostedPaymentGatewaysHelper\n )['props']['values'][string];\n };\n links: {\n 'self': PaymentMethodRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': any;\n };\n}\n\ninterface FraudProtectionsRel extends Graph {\n curie: 'fx:fraud_protections';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<FraudProtectionsRel>;\n child: FraudProtectionRel;\n}\n\ninterface FraudProtectionRel extends Graph {\n curie: 'fx:fraud_protection';\n links: {\n 'self': FraudProtectionRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': PaymentPresetRel;\n };\n props: Rels.FraudProtection['props'] & {\n helper: AvailableFraudProtectionsRel['props']['values'][string];\n };\n}\n\ninterface AvailablePaymentMethodsRel extends Graph {\n curie: 'fx:available_payment_methods';\n props: {\n values: {\n [key: string]: {\n /** The name of this payment gateway. */\n name: string;\n /** The default id you can use for testing this gateway. */\n test_id: string;\n /** The default key you can use for testing this gateway. */\n test_key: string;\n /** The description of the id field for this gateway. */\n id_description: string;\n /** The description of the key field for this gateway. */\n key_description: string;\n /** Whether or not this gateway supports 3D Secure functionality. */\n supports_3d_secure: 0 | 1;\n /** Whether or not this gateway supports authorize only instead of auth+capture. */\n supports_auth_only: 0 | 1;\n /** The default third party key you can use for testing this gateway. */\n test_third_party_key: string;\n /** The description of the third party key field for this gateway. */\n third_party_key_description: string;\n /** Whether or not this payment method is deprecated. */\n is_deprecated: boolean;\n /** If this gateway requires additional information, this will contain details about the data which needs to be collected to configure this gateway. */\n additional_fields: null | {\n blocks: {\n id: string;\n is_live: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: string;\n }[];\n }[];\n };\n /** If this payment method can't be used due to a conflict with another payment method, the details about it will be here. */\n conflict?: { type: string; name: string };\n };\n };\n };\n links: {\n self: PaymentMethodRel;\n };\n}\n\ninterface AvailableFraudProtectionsRel extends Graph {\n curie: 'fx:available_fraud_protections';\n links: { self: AvailableFraudProtectionsRel };\n props: {\n values: {\n [key: string]: {\n name: string;\n uses_rejection_threshold: boolean;\n json: null | {\n blocks: {\n id: string;\n is_live?: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: unknown;\n }[];\n }[];\n };\n };\n };\n };\n}\n\nexport type PaymentMethods = Resource<PaymentMethodsRel>;\nexport type PaymentMethod = Resource<PaymentMethodRel>;\n\nexport type PaymentPresets = Resource<PaymentPresetsRel>;\nexport type PaymentPreset = Resource<PaymentPresetRel>;\n\nexport type FraudProtections = Resource<FraudProtectionsRel>;\nexport type FraudProtection = Resource<FraudProtectionRel>;\n\nexport type AvailablePaymentMethods = Resource<AvailablePaymentMethodsRel>;\nexport type AvailableFraudProtections = Resource<AvailableFraudProtectionsRel>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Rels } from '@foxy.io/sdk/backend';\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\n\nimport type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\ninterface PaymentPresetsRel extends Graph {\n curie: 'fx:payment_presets';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentPresetsRel>;\n child: PaymentPresetRel;\n}\n\ninterface PaymentPresetRel extends Graph {\n curie: 'fx:payment_preset';\n props: Omit<Rels.PaymentMethodSet['props'], 'gateway_uri'>;\n links: {\n 'self': PaymentPresetRel;\n 'fx:store': Rels.Store;\n 'fx:payment_methods': PaymentMethodsRel;\n 'fx:fraud_protections': FraudProtectionsRel;\n 'fx:available_payment_methods': AvailablePaymentMethodsRel;\n 'fx:available_fraud_protections': AvailableFraudProtectionsRel;\n };\n}\n\ninterface PaymentMethodsRel extends Graph {\n curie: 'fx:payment_methods';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentMethodsRel>;\n child: PaymentMethodRel;\n}\n\ninterface PaymentMethodRel extends Graph {\n curie: 'fx:payment_method';\n props: (Rels.HostedPaymentGateway['props'] | Rels.PaymentGateway['props']) & {\n helper: (\n | Rels.PaymentGatewaysHelper\n | Rels.HostedPaymentGatewaysHelper\n )['props']['values'][string];\n };\n links: {\n 'self': PaymentMethodRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': any;\n };\n}\n\ninterface FraudProtectionsRel extends Graph {\n curie: 'fx:fraud_protections';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<FraudProtectionsRel>;\n child: FraudProtectionRel;\n}\n\ninterface FraudProtectionRel extends Graph {\n curie: 'fx:fraud_protection';\n links: {\n 'self': FraudProtectionRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': PaymentPresetRel;\n };\n props: Rels.FraudProtection['props'] & {\n helper: AvailableFraudProtectionsRel['props']['values'][string];\n };\n}\n\ninterface AvailablePaymentMethodsRel extends Graph {\n curie: 'fx:available_payment_methods';\n props: {\n values: {\n [key: string]: {\n /** The name of this payment gateway. */\n name: string;\n /** The default id you can use for testing this gateway. */\n test_id: string;\n /** The default key you can use for testing this gateway. */\n test_key: string;\n /** The description of the id field for this gateway. */\n id_description: string;\n /** The description of the key field for this gateway. */\n key_description: string;\n /** Whether or not this gateway supports 3D Secure functionality. */\n supports_3d_secure: 0 | 1;\n /** Whether or not this gateway supports authorize only instead of auth+capture. */\n supports_auth_only: 0 | 1;\n /** The default third party key you can use for testing this gateway. */\n test_third_party_key: string;\n /** The description of the third party key field for this gateway. */\n third_party_key_description: string;\n /** Whether or not this payment method is deprecated. */\n is_deprecated: boolean;\n /** If this gateway requires additional information, this will contain details about the data which needs to be collected to configure this gateway. */\n additional_fields: null | {\n blocks: {\n id: string;\n is_live: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: string;\n }[];\n }[];\n };\n /** If this payment method can't be used due to a conflict with another payment method, the details about it will be here. */\n conflict?: { type: string; name: string };\n };\n };\n };\n links: {\n self: PaymentMethodRel;\n };\n}\n\ninterface AvailableFraudProtectionsRel extends Graph {\n curie: 'fx:available_fraud_protections';\n links: { self: AvailableFraudProtectionsRel };\n props: {\n values: {\n [key: string]: {\n name: string;\n /** If this fraud protection can't be used due to a conflict with another fraud protection, the details about it will be here. */\n conflict?: { type: string; name: string };\n uses_rejection_threshold: boolean;\n json: null | {\n blocks: {\n id: string;\n is_live?: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: unknown;\n }[];\n }[];\n };\n };\n };\n };\n}\n\nexport type PaymentMethods = Resource<PaymentMethodsRel>;\nexport type PaymentMethod = Resource<PaymentMethodRel>;\n\nexport type PaymentPresets = Resource<PaymentPresetsRel>;\nexport type PaymentPreset = Resource<PaymentPresetRel>;\n\nexport type FraudProtections = Resource<FraudProtectionsRel>;\nexport type FraudProtection = Resource<FraudProtectionRel>;\n\nexport type AvailablePaymentMethods = Resource<AvailablePaymentMethodsRel>;\nexport type AvailableFraudProtections = Resource<AvailableFraudProtectionsRel>;\n"]}
@@ -1,6 +1,6 @@
1
- import type { Data } from './types';
2
1
  import type { PropertyDeclarations } from 'lit-element';
3
2
  import type { TemplateResult } from 'lit-html';
3
+ import type { Data } from './types';
4
4
  import type { NucleonV8N } from '../NucleonElement/types';
5
5
  import { BooleanSelector } from '@foxy.io/sdk/core';
6
6
  import { InternalForm } from '../../internal/InternalForm/InternalForm';
@@ -2,6 +2,7 @@ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
2
  import { BooleanSelector } from '@foxy.io/sdk/core';
3
3
  import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
4
4
  import { ifDefined } from 'lit-html/directives/if-defined';
5
+ import { classMap } from "../../../utils/class-map.js";
5
6
  import { html } from 'lit-html';
6
7
  import get from 'lodash-es/get';
7
8
  import set from 'lodash-es/set';
@@ -99,9 +100,19 @@ export class PaymentsApiFraudProtectionForm extends Base {
99
100
  `;
100
101
  }
101
102
  renderBody() {
102
- return this.form.type
103
+ const loaders = html `
104
+ <foxy-nucleon
105
+ class="hidden"
106
+ infer=""
107
+ href=${ifDefined(this.__availableFraudProtectionsHref)}
108
+ id=${this.__availableFraudProtectionsLoaderId}
109
+ @update=${() => this.requestUpdate()}
110
+ >
111
+ </foxy-nucleon>
112
+ `;
113
+ return html `${this.renderHeader()}${this.form.type
103
114
  ? this.__renderFraudProtectionConfig()
104
- : this.__renderFraudProtectionSelector();
115
+ : this.__renderFraudProtectionSelector()}${loaders}`;
105
116
  }
106
117
  get __availableFraudProtectionsLoader() {
107
118
  return this.renderRoot.querySelector(`#${this.__availableFraudProtectionsLoaderId}`);
@@ -124,23 +135,19 @@ export class PaymentsApiFraudProtectionForm extends Base {
124
135
  }
125
136
  __renderFraudProtectionSelector() {
126
137
  var _a;
138
+ const loader = this.__availableFraudProtectionsLoader;
127
139
  return html `
128
- ${this.renderHeader()}
129
-
130
- <div class="grid grid-cols-2 gap-m" data-testid="select-protection-list">
131
- ${Object.entries((_a = this.__availableFraudProtections) !== null && _a !== void 0 ? _a : {}).map(([type, helper]) => {
140
+ ${(loader === null || loader === void 0 ? void 0 : loader.data) ? html `
141
+ <div class="grid grid-cols-2 gap-m" data-testid="select-protection-list">
142
+ ${Object.entries((_a = this.__availableFraudProtections) !== null && _a !== void 0 ? _a : {}).map(([type, helper]) => {
132
143
  return this.__renderFraudProtectionButton({ type, helper });
133
144
  })}
134
- </div>
135
-
136
- <foxy-nucleon
137
- class="hidden"
138
- infer=""
139
- href=${ifDefined(this.__availableFraudProtectionsHref)}
140
- id=${this.__availableFraudProtectionsLoaderId}
141
- @update=${() => this.requestUpdate()}
142
- >
143
- </foxy-nucleon>
145
+ </div>
146
+ `
147
+ : html `
148
+ <foxy-spinner infer="list-spinner" state=${(loader === null || loader === void 0 ? void 0 : loader.in('fail')) ? 'error' : 'busy'}>
149
+ </foxy-spinner>
150
+ `}
144
151
  `;
145
152
  }
146
153
  __renderFraudProtectionButton({ type, helper }) {
@@ -150,7 +157,14 @@ export class PaymentsApiFraudProtectionForm extends Base {
150
157
  const onError = (evt) => (evt.currentTarget.src = defaultSrc);
151
158
  return html `
152
159
  <button
153
- class="relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden transition-colors hover-bg-contrast-10 focus-outline-none focus-ring-2 focus-ring-primary-50"
160
+ class=${classMap({
161
+ 'relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden': true,
162
+ 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,
163
+ 'transition-colors hover-bg-contrast-10': !helper.conflict,
164
+ 'cursor-default': !!helper.conflict,
165
+ })}
166
+ ?disabled=${!!helper.conflict}
167
+ title=${ifDefined(helper.conflict ? this.t('conflict_message') : void 0)}
154
168
  @click=${() => this.edit({ type, helper })}
155
169
  >
156
170
  <img
@@ -158,20 +172,29 @@ export class PaymentsApiFraudProtectionForm extends Base {
158
172
  style="transform: translate3d(0, 0, 0)"
159
173
  src=${src}
160
174
  alt=""
175
+ ?hidden=${!!helper.conflict}
161
176
  @error=${onError}
162
177
  />
163
178
 
164
179
  <figure class="relative flex flex-col gap-m">
165
180
  <img
166
- class="h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
181
+ class=${classMap({
182
+ 'h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs': true,
183
+ 'filter grayscale': !!helper.conflict,
184
+ })}
167
185
  src=${src}
168
186
  alt=""
169
187
  @error=${onError}
170
188
  />
171
189
 
172
- <figcaption class="min-w-0 flex-1 truncate leading-s">
190
+ <figcaption
191
+ class=${classMap({
192
+ 'min-w-0 flex-1 truncate leading-s': true,
193
+ 'text-disabled': !!helper.conflict,
194
+ })}
195
+ >
173
196
  <div class="font-medium">${helper.name}&ZeroWidthSpace;</div>
174
- <div class="text-xs text-secondary">${type}</div>
197
+ <div class="text-xs ${helper.conflict ? '' : 'text-secondary'}">${type}</div>
175
198
  </figcaption>
176
199
  </figure>
177
200
  </button>
@@ -180,20 +203,26 @@ export class PaymentsApiFraudProtectionForm extends Base {
180
203
  __renderFraudProtectionConfig() {
181
204
  var _a, _b, _c;
182
205
  return html `
183
- ${this.renderHeader()}
184
- <foxy-internal-text-control infer="description"></foxy-internal-text-control>
185
- ${((_a = this.form.helper) === null || _a === void 0 ? void 0 : _a.uses_rejection_threshold) ? html `
186
- <foxy-internal-integer-control infer="score-threshold-reject">
187
- </foxy-internal-integer-control>
188
- `
206
+ <foxy-internal-summary-control infer="general">
207
+ <foxy-internal-text-control layout="summary-item" infer="description">
208
+ </foxy-internal-text-control>
209
+ </foxy-internal-summary-control>
210
+
211
+ <foxy-internal-summary-control infer="setup">
212
+ ${((_a = this.form.helper) === null || _a === void 0 ? void 0 : _a.uses_rejection_threshold) ? html `
213
+ <foxy-internal-number-control layout="summary-item" infer="score-threshold-reject">
214
+ </foxy-internal-number-control>
215
+ `
189
216
  : ''}
190
- ${(_c = (_b = this.form.helper) === null || _b === void 0 ? void 0 : _b.json) === null || _c === void 0 ? void 0 : _c.blocks.map(block => this.__renderBlock(block))}
217
+ ${(_c = (_b = this.form.helper) === null || _b === void 0 ? void 0 : _b.json) === null || _c === void 0 ? void 0 : _c.blocks.map(block => this.__renderBlock(block))}
218
+ </foxy-internal-summary-control>
219
+
191
220
  ${super.renderBody()}
192
221
  `;
193
222
  }
194
223
  __renderBlock(block) {
195
224
  return html `${block.fields.map(field => {
196
- var _a, _b, _c, _d, _e, _f;
225
+ var _a, _b, _c;
197
226
  const getValue = () => {
198
227
  var _a, _b;
199
228
  let config;
@@ -224,21 +253,21 @@ export class PaymentsApiFraudProtectionForm extends Base {
224
253
  return html `
225
254
  ${field.type === 'checkbox'
226
255
  ? html `
227
- <foxy-internal-checkbox-group-control
256
+ <foxy-internal-switch-control
228
257
  helper-text=${(_a = field.description) !== null && _a !== void 0 ? _a : ''}
229
- label=""
258
+ label=${field.name}
230
259
  infer=${scope}
231
- .options=${[{ label: field.name, value: 'checked' }]}
232
- .getValue=${() => (getValue() ? ['checked'] : [])}
233
- .setValue=${(newValue) => setValue(newValue.includes('checked'))}
260
+ .getValue=${getValue}
261
+ .setValue=${setValue}
234
262
  >
235
- </foxy-internal-checkbox-group-control>
263
+ </foxy-internal-switch-control>
236
264
  `
237
265
  : field.type === 'select'
238
266
  ? html `
239
267
  <foxy-internal-select-control
240
268
  helper-text=${(_b = field.description) !== null && _b !== void 0 ? _b : ''}
241
- placeholder=${(_e = (_d = (_c = field.options) === null || _c === void 0 ? void 0 : _c.find(o => o.value === field.default_value)) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : this.t('default_additional_field_placeholder')}
269
+ placeholder=${this.t('default_additional_field_placeholder')}
270
+ layout="summary-item"
242
271
  label=${field.name}
243
272
  infer=${scope}
244
273
  .options=${options.map(({ name, value }) => ({ label: name, value }))}
@@ -249,8 +278,9 @@ export class PaymentsApiFraudProtectionForm extends Base {
249
278
  `
250
279
  : html `
251
280
  <foxy-internal-text-control
252
- helper-text=${(_f = field.description) !== null && _f !== void 0 ? _f : ''}
281
+ helper-text=${(_c = field.description) !== null && _c !== void 0 ? _c : ''}
253
282
  placeholder=${field.default_value || this.t('default_additional_field_placeholder')}
283
+ layout="summary-item"
254
284
  label=${field.name}
255
285
  infer=${scope}
256
286
  .getValue=${getValue}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentsApiFraudProtectionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AvailableFraudProtections, FraudProtection } from '../PaymentsApi/api/types';\nimport type { Block, Data } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport has from 'lodash-es/has';\n\nconst NS = 'payments-api-fraud-protection-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:fraud_protection` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @element foxy-payments-api-fraud-protection-form\n * @since 1.21.0\n */\nexport class PaymentsApiFraudProtectionForm extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='M0 20.73v-9.9L10.83 0h9.9L0 20.73ZM0 0h9.41L0 9.41V0Zm0 22.14L22.14 0h9.9l-9.43 9.44-.61-.27-10.5 4.66v7-.29L0 32.04v-9.9Zm11.54-.23L0 33.46v9.9l14.14-14.14a15 15 0 0 1-2.6-7.3Zm3.2 8.12L.77 44h9.9l9.7-9.7a13.75 13.75 0 0 1-5.63-4.27Zm6.67 4.64L12.08 44h9.9L44 21.98v-9.9L32.16 23.92C31.01 29.15 27.05 33.6 22 34.83l-.59-.16Zm11.02-12.43L44 10.67V.77L31.42 13.35l1.08.48v7a13 13 0 0 1-.07 1.4Zm-1.99-9.32L43.35 0h-9.9l-9.87 9.87 6.86 3.05ZM23.4 44 44 23.4v9.9L33.3 44h-9.9Zm11.31 0L44 34.71V44h-9.29Z'/%3E%3Cpath fill='%23fff' d='M30.17 21.99H22V11.72l-8.17 3.63V22H22v10.42c4.34-1.34 7.55-5.63 8.17-10.43Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n\n ({ type: v }) => !!v || 'type:v8n_required',\n\n ({ score_threshold_reject: v }) => {\n if (typeof v !== 'number') return true;\n return (v <= 100 && v >= 0) || 'score-threshold-reject:v8n_out_of_range';\n },\n\n form => {\n const blocks = form.helper?.json?.blocks ?? [];\n let json: Record<string, unknown>;\n\n try {\n json = JSON.parse(form.json ?? '{}');\n } catch {\n json = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n if (!has(json, path) && field.type !== 'checkbox') return 'json:v8n_invalid';\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n /** A function that returns a URL of a fraud protection icon based on the given type. */\n getImageSrc: ((type: string) => string) | null = null;\n\n private readonly __availableFraudProtectionsLoaderId = 'availableFraudProtections';\n\n get hiddenSelector(): BooleanSelector {\n return new BooleanSelector(`header:copy-json ${super.hiddenSelector}`.trimEnd());\n }\n\n get headerTitleOptions(): Record<string, unknown> {\n return { ...this.data, context: this.form.type ?? 'new' };\n }\n\n get headerSubtitleOptions(): Record<string, unknown> {\n return { id: this.headerCopyIdValue };\n }\n\n renderHeader(...params: Parameters<InternalForm<Data>['renderHeader']>): TemplateResult {\n return html`\n <div>\n ${super.renderHeader(...params)}\n ${this.data?.type || !this.form.type\n ? html``\n : html`\n <vaadin-button\n data-testid=\"select-another-button\"\n theme=\"tertiary-inline\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n </div>\n `;\n }\n\n renderBody(): TemplateResult {\n return this.form.type\n ? this.__renderFraudProtectionConfig()\n : this.__renderFraudProtectionSelector();\n }\n\n private get __availableFraudProtectionsLoader() {\n type Loader = NucleonElement<AvailableFraudProtections>;\n return this.renderRoot.querySelector<Loader>(`#${this.__availableFraudProtectionsLoaderId}`);\n }\n\n private get __availableFraudProtectionsHref() {\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const pathname = new URL(this.href || this.parent).pathname;\n const presetId = presetIdRegex.exec(pathname)!.groups!.presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_fraud_protections`,\n this.href || this.parent\n );\n\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __availableFraudProtections() {\n return this.__availableFraudProtectionsLoader?.data?.values;\n }\n\n private __renderFraudProtectionSelector() {\n return html`\n ${this.renderHeader()}\n\n <div class=\"grid grid-cols-2 gap-m\" data-testid=\"select-protection-list\">\n ${Object.entries(this.__availableFraudProtections ?? {}).map(([type, helper]) => {\n return this.__renderFraudProtectionButton({ type, helper } as FraudProtection);\n })}\n </div>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__availableFraudProtectionsHref)}\n id=${this.__availableFraudProtectionsLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __renderFraudProtectionButton({ type, helper }: FraudProtection) {\n const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;\n const src = this.getImageSrc?.(type) ?? defaultSrc;\n const onError = (evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc);\n\n return html`\n <button\n class=\"relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden transition-colors hover-bg-contrast-10 focus-outline-none focus-ring-2 focus-ring-primary-50\"\n @click=${() => this.edit({ type, helper })}\n >\n <img\n class=\"absolute top-0 left-0 w-1-2 h-full object-cover bg-center filter saturate-200 blur-3xl\"\n style=\"transform: translate3d(0, 0, 0)\"\n src=${src}\n alt=\"\"\n @error=${onError}\n />\n\n <figure class=\"relative flex flex-col gap-m\">\n <img\n class=\"h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${src}\n alt=\"\"\n @error=${onError}\n />\n\n <figcaption class=\"min-w-0 flex-1 truncate leading-s\">\n <div class=\"font-medium\">${helper.name}&ZeroWidthSpace;</div>\n <div class=\"text-xs text-secondary\">${type}</div>\n </figcaption>\n </figure>\n </button>\n `;\n }\n\n private __renderFraudProtectionConfig() {\n return html`\n ${this.renderHeader()}\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n ${this.form.helper?.uses_rejection_threshold\n ? html`\n <foxy-internal-integer-control infer=\"score-threshold-reject\">\n </foxy-internal-integer-control>\n `\n : ''}\n ${this.form.helper?.json?.blocks.map(block => this.__renderBlock(block))}\n ${super.renderBody()}\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const getValue = () => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n return get(config, path) ?? config.default_value;\n };\n\n const setValue = (newValue: unknown) => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n this.edit({ json: JSON.stringify(set(config, path, newValue)) });\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n const scope = ['json', ...path].join('-').replace(/_/g, '-');\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-checkbox-group-control\n helper-text=${field.description ?? ''}\n label=\"\"\n infer=${scope}\n .options=${[{ label: field.name, value: 'checked' }]}\n .getValue=${() => (getValue() ? ['checked'] : [])}\n .setValue=${(newValue: string[]) => setValue(newValue.includes('checked'))}\n >\n </foxy-internal-checkbox-group-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n placeholder=${field.options?.find(o => o.value === field.default_value)?.name ??\n this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
1
+ {"version":3,"file":"PaymentsApiFraudProtectionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AvailableFraudProtections, FraudProtection } from '../PaymentsApi/api/types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Block, Data } from './types';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport has from 'lodash-es/has';\n\nconst NS = 'payments-api-fraud-protection-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:fraud_protection` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @element foxy-payments-api-fraud-protection-form\n * @since 1.21.0\n */\nexport class PaymentsApiFraudProtectionForm extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='M0 20.73v-9.9L10.83 0h9.9L0 20.73ZM0 0h9.41L0 9.41V0Zm0 22.14L22.14 0h9.9l-9.43 9.44-.61-.27-10.5 4.66v7-.29L0 32.04v-9.9Zm11.54-.23L0 33.46v9.9l14.14-14.14a15 15 0 0 1-2.6-7.3Zm3.2 8.12L.77 44h9.9l9.7-9.7a13.75 13.75 0 0 1-5.63-4.27Zm6.67 4.64L12.08 44h9.9L44 21.98v-9.9L32.16 23.92C31.01 29.15 27.05 33.6 22 34.83l-.59-.16Zm11.02-12.43L44 10.67V.77L31.42 13.35l1.08.48v7a13 13 0 0 1-.07 1.4Zm-1.99-9.32L43.35 0h-9.9l-9.87 9.87 6.86 3.05ZM23.4 44 44 23.4v9.9L33.3 44h-9.9Zm11.31 0L44 34.71V44h-9.29Z'/%3E%3Cpath fill='%23fff' d='M30.17 21.99H22V11.72l-8.17 3.63V22H22v10.42c4.34-1.34 7.55-5.63 8.17-10.43Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n\n ({ type: v }) => !!v || 'type:v8n_required',\n\n ({ score_threshold_reject: v }) => {\n if (typeof v !== 'number') return true;\n return (v <= 100 && v >= 0) || 'score-threshold-reject:v8n_out_of_range';\n },\n\n form => {\n const blocks = form.helper?.json?.blocks ?? [];\n let json: Record<string, unknown>;\n\n try {\n json = JSON.parse(form.json ?? '{}');\n } catch {\n json = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n if (!has(json, path) && field.type !== 'checkbox') return 'json:v8n_invalid';\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n /** A function that returns a URL of a fraud protection icon based on the given type. */\n getImageSrc: ((type: string) => string) | null = null;\n\n private readonly __availableFraudProtectionsLoaderId = 'availableFraudProtections';\n\n get hiddenSelector(): BooleanSelector {\n return new BooleanSelector(`header:copy-json ${super.hiddenSelector}`.trimEnd());\n }\n\n get headerTitleOptions(): Record<string, unknown> {\n return { ...this.data, context: this.form.type ?? 'new' };\n }\n\n get headerSubtitleOptions(): Record<string, unknown> {\n return { id: this.headerCopyIdValue };\n }\n\n renderHeader(...params: Parameters<InternalForm<Data>['renderHeader']>): TemplateResult {\n return html`\n <div>\n ${super.renderHeader(...params)}\n ${this.data?.type || !this.form.type\n ? html``\n : html`\n <vaadin-button\n data-testid=\"select-another-button\"\n theme=\"tertiary-inline\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n </div>\n `;\n }\n\n renderBody(): TemplateResult {\n const loaders = html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__availableFraudProtectionsHref)}\n id=${this.__availableFraudProtectionsLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n\n return html`${this.renderHeader()}${this.form.type\n ? this.__renderFraudProtectionConfig()\n : this.__renderFraudProtectionSelector()}${loaders}`;\n }\n\n private get __availableFraudProtectionsLoader() {\n type Loader = NucleonElement<AvailableFraudProtections>;\n return this.renderRoot.querySelector<Loader>(`#${this.__availableFraudProtectionsLoaderId}`);\n }\n\n private get __availableFraudProtectionsHref() {\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const pathname = new URL(this.href || this.parent).pathname;\n const presetId = presetIdRegex.exec(pathname)!.groups!.presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_fraud_protections`,\n this.href || this.parent\n );\n\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __availableFraudProtections() {\n return this.__availableFraudProtectionsLoader?.data?.values;\n }\n\n private __renderFraudProtectionSelector() {\n const loader = this.__availableFraudProtectionsLoader;\n\n return html`\n ${loader?.data\n ? html`\n <div class=\"grid grid-cols-2 gap-m\" data-testid=\"select-protection-list\">\n ${Object.entries(this.__availableFraudProtections ?? {}).map(([type, helper]) => {\n return this.__renderFraudProtectionButton({ type, helper } as FraudProtection);\n })}\n </div>\n `\n : html`\n <foxy-spinner infer=\"list-spinner\" state=${loader?.in('fail') ? 'error' : 'busy'}>\n </foxy-spinner>\n `}\n `;\n }\n\n private __renderFraudProtectionButton({ type, helper }: FraudProtection) {\n const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;\n const src = this.getImageSrc?.(type) ?? defaultSrc;\n const onError = (evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc);\n\n return html`\n <button\n class=${classMap({\n 'relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'transition-colors hover-bg-contrast-10': !helper.conflict,\n 'cursor-default': !!helper.conflict,\n })}\n ?disabled=${!!helper.conflict}\n title=${ifDefined(helper.conflict ? this.t('conflict_message') : void 0)}\n @click=${() => this.edit({ type, helper })}\n >\n <img\n class=\"absolute top-0 left-0 w-1-2 h-full object-cover bg-center filter saturate-200 blur-3xl\"\n style=\"transform: translate3d(0, 0, 0)\"\n src=${src}\n alt=\"\"\n ?hidden=${!!helper.conflict}\n @error=${onError}\n />\n\n <figure class=\"relative flex flex-col gap-m\">\n <img\n class=${classMap({\n 'h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs': true,\n 'filter grayscale': !!helper.conflict,\n })}\n src=${src}\n alt=\"\"\n @error=${onError}\n />\n\n <figcaption\n class=${classMap({\n 'min-w-0 flex-1 truncate leading-s': true,\n 'text-disabled': !!helper.conflict,\n })}\n >\n <div class=\"font-medium\">${helper.name}&ZeroWidthSpace;</div>\n <div class=\"text-xs ${helper.conflict ? '' : 'text-secondary'}\">${type}</div>\n </figcaption>\n </figure>\n </button>\n `;\n }\n\n private __renderFraudProtectionConfig() {\n return html`\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"description\">\n </foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"setup\">\n ${this.form.helper?.uses_rejection_threshold\n ? html`\n <foxy-internal-number-control layout=\"summary-item\" infer=\"score-threshold-reject\">\n </foxy-internal-number-control>\n `\n : ''}\n ${this.form.helper?.json?.blocks.map(block => this.__renderBlock(block))}\n </foxy-internal-summary-control>\n\n ${super.renderBody()}\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const getValue = () => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n return get(config, path) ?? config.default_value;\n };\n\n const setValue = (newValue: unknown) => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n this.edit({ json: JSON.stringify(set(config, path, newValue)) });\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n const scope = ['json', ...path].join('-').replace(/_/g, '-');\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-switch-control\n helper-text=${field.description ?? ''}\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-switch-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n placeholder=${this.t('default_additional_field_placeholder')}\n layout=\"summary-item\"\n label=${field.name}\n infer=${scope}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n layout=\"summary-item\"\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import '@vaadin/vaadin-button';
2
- import '../../internal/InternalCheckboxGroupControl/index';
3
- import '../../internal/InternalIntegerControl/index';
2
+ import '../../internal/InternalSummaryControl/index';
3
+ import '../../internal/InternalSwitchControl/index';
4
+ import '../../internal/InternalNumberControl/index';
4
5
  import '../../internal/InternalSelectControl/index';
5
6
  import '../../internal/InternalTextControl/index';
6
7
  import '../../internal/InternalForm/index';
@@ -1,6 +1,7 @@
1
1
  import '@vaadin/vaadin-button';
2
- import "../../internal/InternalCheckboxGroupControl/index.js";
3
- import "../../internal/InternalIntegerControl/index.js";
2
+ import "../../internal/InternalSummaryControl/index.js";
3
+ import "../../internal/InternalSwitchControl/index.js";
4
+ import "../../internal/InternalNumberControl/index.js";
4
5
  import "../../internal/InternalSelectControl/index.js";
5
6
  import "../../internal/InternalTextControl/index.js";
6
7
  import "../../internal/InternalForm/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,8DAA2D;AAC3D,wDAAqD;AACrD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,oCAAiC;AACjC,0BAAuB;AAEvB,OAAO,EAAE,8BAA8B,EAAE,4CAAyC;AAElF,cAAc,CAAC,MAAM,CAAC,yCAAyC,EAAE,8BAA8B,CAAC,CAAC;AAEjG,OAAO,EAAE,8BAA8B,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\n\nimport '../../internal/InternalCheckboxGroupControl/index';\nimport '../../internal/InternalIntegerControl/index';\nimport '../../internal/InternalSelectControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../NucleonElement/index';\nimport '../I18n/index';\n\nimport { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';\n\ncustomElements.define('foxy-payments-api-fraud-protection-form', PaymentsApiFraudProtectionForm);\n\nexport { PaymentsApiFraudProtectionForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,wDAAqD;AACrD,uDAAoD;AACpD,uDAAoD;AACpD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,oCAAiC;AACjC,0BAAuB;AAEvB,OAAO,EAAE,8BAA8B,EAAE,4CAAyC;AAElF,cAAc,CAAC,MAAM,CAAC,yCAAyC,EAAE,8BAA8B,CAAC,CAAC;AAEjG,OAAO,EAAE,8BAA8B,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\n\nimport '../../internal/InternalSummaryControl/index';\nimport '../../internal/InternalSwitchControl/index';\nimport '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalSelectControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../NucleonElement/index';\nimport '../I18n/index';\n\nimport { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';\n\ncustomElements.define('foxy-payments-api-fraud-protection-form', PaymentsApiFraudProtectionForm);\n\nexport { PaymentsApiFraudProtectionForm };\n"]}
@@ -22,16 +22,20 @@ export declare class PaymentsApiPaymentMethodForm extends Base<Data> {
22
22
  static get defaultImageSrc(): string;
23
23
  static get properties(): PropertyDeclarations;
24
24
  static get v8n(): NucleonV8N<Data>;
25
+ /** URL of the linked `fx:payment_preset` resource from the virtual Payments API. */
26
+ paymentPreset: string | null;
25
27
  /** A function that returns a URL of a payment method icon based on the given type. */
26
28
  getImageSrc: ((type: string) => string) | null;
29
+ /** URL of the linked `fx:store` resource. */
30
+ store: string | null;
27
31
  private readonly __availablePaymentMethodsLoaderId;
32
+ private readonly __paymentPresetLoaderId;
33
+ private readonly __storeLoaderId;
28
34
  private readonly __threeDSecureResponseGetValue;
29
35
  private readonly __threeDSecureResponseSetValue;
30
- private readonly __threeDSecureResponseOptions;
31
36
  private readonly __threeDSecureToggleGetValue;
32
37
  private readonly __threeDSecureToggleSetValue;
33
38
  private readonly __threeDSecureToggleOptions;
34
- private __tab;
35
39
  get hiddenSelector(): BooleanSelector;
36
40
  renderHeader(...params: Parameters<InternalForm<Data>['renderHeader']>): TemplateResult;
37
41
  get headerTitleOptions(): Record<string, unknown>;
@@ -40,8 +44,9 @@ export declare class PaymentsApiPaymentMethodForm extends Base<Data> {
40
44
  renderBody(): TemplateResult;
41
45
  private get __groupedAvailablePaymentMethods();
42
46
  private get __availablePaymentMethodsLoader();
43
- private get __availablePaymentMethodsHref();
44
47
  private get __availablePaymentMethods();
48
+ private get __paymentPresetLoader();
49
+ private get __storeLoader();
45
50
  private get __liveBlocks();
46
51
  private get __testBlocks();
47
52
  private __renderPaymentMethodSelector;