@xyo-network/react-form-credit-card 2.81.9 → 2.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/dist/browser/components/controls/card/Email.d.cts +2 -1
  2. package/dist/browser/components/controls/card/Email.d.cts.map +1 -1
  3. package/dist/browser/components/controls/card/Email.d.mts +2 -1
  4. package/dist/browser/components/controls/card/Email.d.mts.map +1 -1
  5. package/dist/browser/components/controls/card/Email.d.ts +2 -1
  6. package/dist/browser/components/controls/card/Email.d.ts.map +1 -1
  7. package/dist/browser/components/controls/card/Expiration.d.cts +2 -1
  8. package/dist/browser/components/controls/card/Expiration.d.cts.map +1 -1
  9. package/dist/browser/components/controls/card/Expiration.d.mts +2 -1
  10. package/dist/browser/components/controls/card/Expiration.d.mts.map +1 -1
  11. package/dist/browser/components/controls/card/Expiration.d.ts +2 -1
  12. package/dist/browser/components/controls/card/Expiration.d.ts.map +1 -1
  13. package/dist/browser/components/controls/card/FormControlTextField.d.cts +2 -1
  14. package/dist/browser/components/controls/card/FormControlTextField.d.cts.map +1 -1
  15. package/dist/browser/components/controls/card/FormControlTextField.d.mts +2 -1
  16. package/dist/browser/components/controls/card/FormControlTextField.d.mts.map +1 -1
  17. package/dist/browser/components/controls/card/FormControlTextField.d.ts +2 -1
  18. package/dist/browser/components/controls/card/FormControlTextField.d.ts.map +1 -1
  19. package/dist/browser/components/controls/card/Name.d.cts +2 -1
  20. package/dist/browser/components/controls/card/Name.d.cts.map +1 -1
  21. package/dist/browser/components/controls/card/Name.d.mts +2 -1
  22. package/dist/browser/components/controls/card/Name.d.mts.map +1 -1
  23. package/dist/browser/components/controls/card/Name.d.ts +2 -1
  24. package/dist/browser/components/controls/card/Name.d.ts.map +1 -1
  25. package/dist/browser/components/controls/card/Zip.d.cts +2 -1
  26. package/dist/browser/components/controls/card/Zip.d.cts.map +1 -1
  27. package/dist/browser/components/controls/card/Zip.d.mts +2 -1
  28. package/dist/browser/components/controls/card/Zip.d.mts.map +1 -1
  29. package/dist/browser/components/controls/card/Zip.d.ts +2 -1
  30. package/dist/browser/components/controls/card/Zip.d.ts.map +1 -1
  31. package/dist/browser/components/controls/card/cvv/Cvv.d.cts +2 -1
  32. package/dist/browser/components/controls/card/cvv/Cvv.d.cts.map +1 -1
  33. package/dist/browser/components/controls/card/cvv/Cvv.d.mts +2 -1
  34. package/dist/browser/components/controls/card/cvv/Cvv.d.mts.map +1 -1
  35. package/dist/browser/components/controls/card/cvv/Cvv.d.ts +2 -1
  36. package/dist/browser/components/controls/card/cvv/Cvv.d.ts.map +1 -1
  37. package/dist/browser/components/controls/card/cvv/index.d.cts +2 -2
  38. package/dist/browser/components/controls/card/cvv/index.d.cts.map +1 -1
  39. package/dist/browser/components/controls/card/cvv/index.d.mts +2 -2
  40. package/dist/browser/components/controls/card/cvv/index.d.mts.map +1 -1
  41. package/dist/browser/components/controls/card/cvv/index.d.ts +2 -2
  42. package/dist/browser/components/controls/card/cvv/index.d.ts.map +1 -1
  43. package/dist/browser/components/controls/card/cvv/use.d.cts.map +1 -1
  44. package/dist/browser/components/controls/card/cvv/use.d.mts.map +1 -1
  45. package/dist/browser/components/controls/card/cvv/use.d.ts.map +1 -1
  46. package/dist/browser/components/controls/card/index.d.cts +9 -9
  47. package/dist/browser/components/controls/card/index.d.cts.map +1 -1
  48. package/dist/browser/components/controls/card/index.d.mts +9 -9
  49. package/dist/browser/components/controls/card/index.d.mts.map +1 -1
  50. package/dist/browser/components/controls/card/index.d.ts +9 -9
  51. package/dist/browser/components/controls/card/index.d.ts.map +1 -1
  52. package/dist/browser/components/controls/card/number/Number.d.cts +2 -1
  53. package/dist/browser/components/controls/card/number/Number.d.cts.map +1 -1
  54. package/dist/browser/components/controls/card/number/Number.d.mts +2 -1
  55. package/dist/browser/components/controls/card/number/Number.d.mts.map +1 -1
  56. package/dist/browser/components/controls/card/number/Number.d.ts +2 -1
  57. package/dist/browser/components/controls/card/number/Number.d.ts.map +1 -1
  58. package/dist/browser/components/controls/card/number/index.d.cts +2 -2
  59. package/dist/browser/components/controls/card/number/index.d.cts.map +1 -1
  60. package/dist/browser/components/controls/card/number/index.d.mts +2 -2
  61. package/dist/browser/components/controls/card/number/index.d.mts.map +1 -1
  62. package/dist/browser/components/controls/card/number/index.d.ts +2 -2
  63. package/dist/browser/components/controls/card/number/index.d.ts.map +1 -1
  64. package/dist/browser/components/controls/card/number/use.d.cts.map +1 -1
  65. package/dist/browser/components/controls/card/number/use.d.mts.map +1 -1
  66. package/dist/browser/components/controls/card/number/use.d.ts.map +1 -1
  67. package/dist/browser/components/controls/index.d.cts +2 -2
  68. package/dist/browser/components/controls/index.d.mts +2 -2
  69. package/dist/browser/components/controls/index.d.ts +2 -2
  70. package/dist/browser/components/form/Form.d.cts +2 -1
  71. package/dist/browser/components/form/Form.d.cts.map +1 -1
  72. package/dist/browser/components/form/Form.d.mts +2 -1
  73. package/dist/browser/components/form/Form.d.mts.map +1 -1
  74. package/dist/browser/components/form/Form.d.ts +2 -1
  75. package/dist/browser/components/form/Form.d.ts.map +1 -1
  76. package/dist/browser/components/form/InputFieldsStack.d.cts +1 -1
  77. package/dist/browser/components/form/InputFieldsStack.d.cts.map +1 -1
  78. package/dist/browser/components/form/InputFieldsStack.d.mts +1 -1
  79. package/dist/browser/components/form/InputFieldsStack.d.mts.map +1 -1
  80. package/dist/browser/components/form/InputFieldsStack.d.ts +1 -1
  81. package/dist/browser/components/form/InputFieldsStack.d.ts.map +1 -1
  82. package/dist/browser/components/form/Props.d.cts +1 -1
  83. package/dist/browser/components/form/Props.d.mts +1 -1
  84. package/dist/browser/components/form/Props.d.ts +1 -1
  85. package/dist/browser/components/form/index.d.cts +4 -4
  86. package/dist/browser/components/form/index.d.cts.map +1 -1
  87. package/dist/browser/components/form/index.d.mts +4 -4
  88. package/dist/browser/components/form/index.d.mts.map +1 -1
  89. package/dist/browser/components/form/index.d.ts +4 -4
  90. package/dist/browser/components/form/index.d.ts.map +1 -1
  91. package/dist/browser/components/form/useFormStorage.d.cts +1 -1
  92. package/dist/browser/components/form/useFormStorage.d.mts +1 -1
  93. package/dist/browser/components/form/useFormStorage.d.ts +1 -1
  94. package/dist/browser/components/index.d.cts +4 -4
  95. package/dist/browser/components/index.d.mts +4 -4
  96. package/dist/browser/components/index.d.ts +4 -4
  97. package/dist/browser/components/support/index.d.cts +3 -3
  98. package/dist/browser/components/support/index.d.mts +3 -3
  99. package/dist/browser/components/support/index.d.ts +3 -3
  100. package/dist/browser/components/support/validateCreditCardInputs.d.cts +1 -1
  101. package/dist/browser/components/support/validateCreditCardInputs.d.mts +1 -1
  102. package/dist/browser/components/support/validateCreditCardInputs.d.ts +1 -1
  103. package/dist/browser/context/FormGroupCreditCardContext.d.cts +2 -2
  104. package/dist/browser/context/FormGroupCreditCardContext.d.mts +2 -2
  105. package/dist/browser/context/FormGroupCreditCardContext.d.ts +2 -2
  106. package/dist/browser/context/FormGroupCreditCardProvider.d.cts +2 -2
  107. package/dist/browser/context/FormGroupCreditCardProvider.d.cts.map +1 -1
  108. package/dist/browser/context/FormGroupCreditCardProvider.d.mts +2 -2
  109. package/dist/browser/context/FormGroupCreditCardProvider.d.mts.map +1 -1
  110. package/dist/browser/context/FormGroupCreditCardProvider.d.ts +2 -2
  111. package/dist/browser/context/FormGroupCreditCardProvider.d.ts.map +1 -1
  112. package/dist/browser/context/index.d.cts +3 -3
  113. package/dist/browser/context/index.d.cts.map +1 -1
  114. package/dist/browser/context/index.d.mts +3 -3
  115. package/dist/browser/context/index.d.mts.map +1 -1
  116. package/dist/browser/context/index.d.ts +3 -3
  117. package/dist/browser/context/index.d.ts.map +1 -1
  118. package/dist/browser/context/useFormGroupWithCreditCard.d.cts +2 -2
  119. package/dist/browser/context/useFormGroupWithCreditCard.d.mts +2 -2
  120. package/dist/browser/context/useFormGroupWithCreditCard.d.ts +2 -2
  121. package/dist/browser/controls/CreditCardCvv.d.cts +1 -1
  122. package/dist/browser/controls/CreditCardCvv.d.mts +1 -1
  123. package/dist/browser/controls/CreditCardCvv.d.ts +1 -1
  124. package/dist/browser/controls/CreditCardExpiry.d.cts +1 -1
  125. package/dist/browser/controls/CreditCardExpiry.d.mts +1 -1
  126. package/dist/browser/controls/CreditCardExpiry.d.ts +1 -1
  127. package/dist/browser/controls/CreditCardNumber.d.cts +1 -1
  128. package/dist/browser/controls/CreditCardNumber.d.mts +1 -1
  129. package/dist/browser/controls/CreditCardNumber.d.ts +1 -1
  130. package/dist/browser/controls/Zip.d.cts +1 -1
  131. package/dist/browser/controls/Zip.d.mts +1 -1
  132. package/dist/browser/controls/Zip.d.ts +1 -1
  133. package/dist/browser/controls/index.d.cts +6 -6
  134. package/dist/browser/controls/index.d.mts +6 -6
  135. package/dist/browser/controls/index.d.ts +6 -6
  136. package/dist/browser/index.cjs +451 -260
  137. package/dist/browser/index.cjs.map +1 -1
  138. package/dist/browser/index.d.cts +5 -5
  139. package/dist/browser/index.d.mts +5 -5
  140. package/dist/browser/index.d.ts +5 -5
  141. package/dist/browser/{index.js → index.mjs} +450 -257
  142. package/dist/browser/index.mjs.map +1 -0
  143. package/dist/browser/models/index.d.cts +1 -1
  144. package/dist/browser/models/index.d.mts +1 -1
  145. package/dist/browser/models/index.d.ts +1 -1
  146. package/dist/browser/utils/index.d.cts +1 -1
  147. package/dist/browser/utils/index.d.mts +1 -1
  148. package/dist/browser/utils/index.d.ts +1 -1
  149. package/dist/neutral/components/controls/card/Email.d.cts +2 -1
  150. package/dist/neutral/components/controls/card/Email.d.cts.map +1 -1
  151. package/dist/neutral/components/controls/card/Email.d.mts +2 -1
  152. package/dist/neutral/components/controls/card/Email.d.mts.map +1 -1
  153. package/dist/neutral/components/controls/card/Email.d.ts +2 -1
  154. package/dist/neutral/components/controls/card/Email.d.ts.map +1 -1
  155. package/dist/neutral/components/controls/card/Expiration.d.cts +2 -1
  156. package/dist/neutral/components/controls/card/Expiration.d.cts.map +1 -1
  157. package/dist/neutral/components/controls/card/Expiration.d.mts +2 -1
  158. package/dist/neutral/components/controls/card/Expiration.d.mts.map +1 -1
  159. package/dist/neutral/components/controls/card/Expiration.d.ts +2 -1
  160. package/dist/neutral/components/controls/card/Expiration.d.ts.map +1 -1
  161. package/dist/neutral/components/controls/card/FormControlTextField.d.cts +2 -1
  162. package/dist/neutral/components/controls/card/FormControlTextField.d.cts.map +1 -1
  163. package/dist/neutral/components/controls/card/FormControlTextField.d.mts +2 -1
  164. package/dist/neutral/components/controls/card/FormControlTextField.d.mts.map +1 -1
  165. package/dist/neutral/components/controls/card/FormControlTextField.d.ts +2 -1
  166. package/dist/neutral/components/controls/card/FormControlTextField.d.ts.map +1 -1
  167. package/dist/neutral/components/controls/card/Name.d.cts +2 -1
  168. package/dist/neutral/components/controls/card/Name.d.cts.map +1 -1
  169. package/dist/neutral/components/controls/card/Name.d.mts +2 -1
  170. package/dist/neutral/components/controls/card/Name.d.mts.map +1 -1
  171. package/dist/neutral/components/controls/card/Name.d.ts +2 -1
  172. package/dist/neutral/components/controls/card/Name.d.ts.map +1 -1
  173. package/dist/neutral/components/controls/card/Zip.d.cts +2 -1
  174. package/dist/neutral/components/controls/card/Zip.d.cts.map +1 -1
  175. package/dist/neutral/components/controls/card/Zip.d.mts +2 -1
  176. package/dist/neutral/components/controls/card/Zip.d.mts.map +1 -1
  177. package/dist/neutral/components/controls/card/Zip.d.ts +2 -1
  178. package/dist/neutral/components/controls/card/Zip.d.ts.map +1 -1
  179. package/dist/neutral/components/controls/card/cvv/Cvv.d.cts +2 -1
  180. package/dist/neutral/components/controls/card/cvv/Cvv.d.cts.map +1 -1
  181. package/dist/neutral/components/controls/card/cvv/Cvv.d.mts +2 -1
  182. package/dist/neutral/components/controls/card/cvv/Cvv.d.mts.map +1 -1
  183. package/dist/neutral/components/controls/card/cvv/Cvv.d.ts +2 -1
  184. package/dist/neutral/components/controls/card/cvv/Cvv.d.ts.map +1 -1
  185. package/dist/neutral/components/controls/card/cvv/index.d.cts +2 -2
  186. package/dist/neutral/components/controls/card/cvv/index.d.cts.map +1 -1
  187. package/dist/neutral/components/controls/card/cvv/index.d.mts +2 -2
  188. package/dist/neutral/components/controls/card/cvv/index.d.mts.map +1 -1
  189. package/dist/neutral/components/controls/card/cvv/index.d.ts +2 -2
  190. package/dist/neutral/components/controls/card/cvv/index.d.ts.map +1 -1
  191. package/dist/neutral/components/controls/card/cvv/use.d.cts.map +1 -1
  192. package/dist/neutral/components/controls/card/cvv/use.d.mts.map +1 -1
  193. package/dist/neutral/components/controls/card/cvv/use.d.ts.map +1 -1
  194. package/dist/neutral/components/controls/card/index.d.cts +9 -9
  195. package/dist/neutral/components/controls/card/index.d.cts.map +1 -1
  196. package/dist/neutral/components/controls/card/index.d.mts +9 -9
  197. package/dist/neutral/components/controls/card/index.d.mts.map +1 -1
  198. package/dist/neutral/components/controls/card/index.d.ts +9 -9
  199. package/dist/neutral/components/controls/card/index.d.ts.map +1 -1
  200. package/dist/neutral/components/controls/card/number/Number.d.cts +2 -1
  201. package/dist/neutral/components/controls/card/number/Number.d.cts.map +1 -1
  202. package/dist/neutral/components/controls/card/number/Number.d.mts +2 -1
  203. package/dist/neutral/components/controls/card/number/Number.d.mts.map +1 -1
  204. package/dist/neutral/components/controls/card/number/Number.d.ts +2 -1
  205. package/dist/neutral/components/controls/card/number/Number.d.ts.map +1 -1
  206. package/dist/neutral/components/controls/card/number/index.d.cts +2 -2
  207. package/dist/neutral/components/controls/card/number/index.d.cts.map +1 -1
  208. package/dist/neutral/components/controls/card/number/index.d.mts +2 -2
  209. package/dist/neutral/components/controls/card/number/index.d.mts.map +1 -1
  210. package/dist/neutral/components/controls/card/number/index.d.ts +2 -2
  211. package/dist/neutral/components/controls/card/number/index.d.ts.map +1 -1
  212. package/dist/neutral/components/controls/card/number/use.d.cts.map +1 -1
  213. package/dist/neutral/components/controls/card/number/use.d.mts.map +1 -1
  214. package/dist/neutral/components/controls/card/number/use.d.ts.map +1 -1
  215. package/dist/neutral/components/controls/index.d.cts +2 -2
  216. package/dist/neutral/components/controls/index.d.mts +2 -2
  217. package/dist/neutral/components/controls/index.d.ts +2 -2
  218. package/dist/neutral/components/form/Form.d.cts +2 -1
  219. package/dist/neutral/components/form/Form.d.cts.map +1 -1
  220. package/dist/neutral/components/form/Form.d.mts +2 -1
  221. package/dist/neutral/components/form/Form.d.mts.map +1 -1
  222. package/dist/neutral/components/form/Form.d.ts +2 -1
  223. package/dist/neutral/components/form/Form.d.ts.map +1 -1
  224. package/dist/neutral/components/form/InputFieldsStack.d.cts +1 -1
  225. package/dist/neutral/components/form/InputFieldsStack.d.cts.map +1 -1
  226. package/dist/neutral/components/form/InputFieldsStack.d.mts +1 -1
  227. package/dist/neutral/components/form/InputFieldsStack.d.mts.map +1 -1
  228. package/dist/neutral/components/form/InputFieldsStack.d.ts +1 -1
  229. package/dist/neutral/components/form/InputFieldsStack.d.ts.map +1 -1
  230. package/dist/neutral/components/form/Props.d.cts +1 -1
  231. package/dist/neutral/components/form/Props.d.mts +1 -1
  232. package/dist/neutral/components/form/Props.d.ts +1 -1
  233. package/dist/neutral/components/form/index.d.cts +4 -4
  234. package/dist/neutral/components/form/index.d.cts.map +1 -1
  235. package/dist/neutral/components/form/index.d.mts +4 -4
  236. package/dist/neutral/components/form/index.d.mts.map +1 -1
  237. package/dist/neutral/components/form/index.d.ts +4 -4
  238. package/dist/neutral/components/form/index.d.ts.map +1 -1
  239. package/dist/neutral/components/form/useFormStorage.d.cts +1 -1
  240. package/dist/neutral/components/form/useFormStorage.d.mts +1 -1
  241. package/dist/neutral/components/form/useFormStorage.d.ts +1 -1
  242. package/dist/neutral/components/index.d.cts +4 -4
  243. package/dist/neutral/components/index.d.mts +4 -4
  244. package/dist/neutral/components/index.d.ts +4 -4
  245. package/dist/neutral/components/support/index.d.cts +3 -3
  246. package/dist/neutral/components/support/index.d.mts +3 -3
  247. package/dist/neutral/components/support/index.d.ts +3 -3
  248. package/dist/neutral/components/support/validateCreditCardInputs.d.cts +1 -1
  249. package/dist/neutral/components/support/validateCreditCardInputs.d.mts +1 -1
  250. package/dist/neutral/components/support/validateCreditCardInputs.d.ts +1 -1
  251. package/dist/neutral/context/FormGroupCreditCardContext.d.cts +2 -2
  252. package/dist/neutral/context/FormGroupCreditCardContext.d.mts +2 -2
  253. package/dist/neutral/context/FormGroupCreditCardContext.d.ts +2 -2
  254. package/dist/neutral/context/FormGroupCreditCardProvider.d.cts +2 -2
  255. package/dist/neutral/context/FormGroupCreditCardProvider.d.cts.map +1 -1
  256. package/dist/neutral/context/FormGroupCreditCardProvider.d.mts +2 -2
  257. package/dist/neutral/context/FormGroupCreditCardProvider.d.mts.map +1 -1
  258. package/dist/neutral/context/FormGroupCreditCardProvider.d.ts +2 -2
  259. package/dist/neutral/context/FormGroupCreditCardProvider.d.ts.map +1 -1
  260. package/dist/neutral/context/index.d.cts +3 -3
  261. package/dist/neutral/context/index.d.cts.map +1 -1
  262. package/dist/neutral/context/index.d.mts +3 -3
  263. package/dist/neutral/context/index.d.mts.map +1 -1
  264. package/dist/neutral/context/index.d.ts +3 -3
  265. package/dist/neutral/context/index.d.ts.map +1 -1
  266. package/dist/neutral/context/useFormGroupWithCreditCard.d.cts +2 -2
  267. package/dist/neutral/context/useFormGroupWithCreditCard.d.mts +2 -2
  268. package/dist/neutral/context/useFormGroupWithCreditCard.d.ts +2 -2
  269. package/dist/neutral/controls/CreditCardCvv.d.cts +1 -1
  270. package/dist/neutral/controls/CreditCardCvv.d.mts +1 -1
  271. package/dist/neutral/controls/CreditCardCvv.d.ts +1 -1
  272. package/dist/neutral/controls/CreditCardExpiry.d.cts +1 -1
  273. package/dist/neutral/controls/CreditCardExpiry.d.mts +1 -1
  274. package/dist/neutral/controls/CreditCardExpiry.d.ts +1 -1
  275. package/dist/neutral/controls/CreditCardNumber.d.cts +1 -1
  276. package/dist/neutral/controls/CreditCardNumber.d.mts +1 -1
  277. package/dist/neutral/controls/CreditCardNumber.d.ts +1 -1
  278. package/dist/neutral/controls/Zip.d.cts +1 -1
  279. package/dist/neutral/controls/Zip.d.mts +1 -1
  280. package/dist/neutral/controls/Zip.d.ts +1 -1
  281. package/dist/neutral/controls/index.d.cts +6 -6
  282. package/dist/neutral/controls/index.d.mts +6 -6
  283. package/dist/neutral/controls/index.d.ts +6 -6
  284. package/dist/neutral/index.cjs +451 -260
  285. package/dist/neutral/index.cjs.map +1 -1
  286. package/dist/neutral/index.d.cts +5 -5
  287. package/dist/neutral/index.d.mts +5 -5
  288. package/dist/neutral/index.d.ts +5 -5
  289. package/dist/neutral/{index.js → index.mjs} +450 -257
  290. package/dist/neutral/index.mjs.map +1 -0
  291. package/dist/neutral/models/index.d.cts +1 -1
  292. package/dist/neutral/models/index.d.mts +1 -1
  293. package/dist/neutral/models/index.d.ts +1 -1
  294. package/dist/neutral/utils/index.d.cts +1 -1
  295. package/dist/neutral/utils/index.d.mts +1 -1
  296. package/dist/neutral/utils/index.d.ts +1 -1
  297. package/dist/node/components/controls/card/Email.d.cts +2 -1
  298. package/dist/node/components/controls/card/Email.d.cts.map +1 -1
  299. package/dist/node/components/controls/card/Email.d.mts +2 -1
  300. package/dist/node/components/controls/card/Email.d.mts.map +1 -1
  301. package/dist/node/components/controls/card/Email.d.ts +2 -1
  302. package/dist/node/components/controls/card/Email.d.ts.map +1 -1
  303. package/dist/node/components/controls/card/Expiration.d.cts +2 -1
  304. package/dist/node/components/controls/card/Expiration.d.cts.map +1 -1
  305. package/dist/node/components/controls/card/Expiration.d.mts +2 -1
  306. package/dist/node/components/controls/card/Expiration.d.mts.map +1 -1
  307. package/dist/node/components/controls/card/Expiration.d.ts +2 -1
  308. package/dist/node/components/controls/card/Expiration.d.ts.map +1 -1
  309. package/dist/node/components/controls/card/FormControlTextField.d.cts +2 -1
  310. package/dist/node/components/controls/card/FormControlTextField.d.cts.map +1 -1
  311. package/dist/node/components/controls/card/FormControlTextField.d.mts +2 -1
  312. package/dist/node/components/controls/card/FormControlTextField.d.mts.map +1 -1
  313. package/dist/node/components/controls/card/FormControlTextField.d.ts +2 -1
  314. package/dist/node/components/controls/card/FormControlTextField.d.ts.map +1 -1
  315. package/dist/node/components/controls/card/Name.d.cts +2 -1
  316. package/dist/node/components/controls/card/Name.d.cts.map +1 -1
  317. package/dist/node/components/controls/card/Name.d.mts +2 -1
  318. package/dist/node/components/controls/card/Name.d.mts.map +1 -1
  319. package/dist/node/components/controls/card/Name.d.ts +2 -1
  320. package/dist/node/components/controls/card/Name.d.ts.map +1 -1
  321. package/dist/node/components/controls/card/Zip.d.cts +2 -1
  322. package/dist/node/components/controls/card/Zip.d.cts.map +1 -1
  323. package/dist/node/components/controls/card/Zip.d.mts +2 -1
  324. package/dist/node/components/controls/card/Zip.d.mts.map +1 -1
  325. package/dist/node/components/controls/card/Zip.d.ts +2 -1
  326. package/dist/node/components/controls/card/Zip.d.ts.map +1 -1
  327. package/dist/node/components/controls/card/cvv/Cvv.d.cts +2 -1
  328. package/dist/node/components/controls/card/cvv/Cvv.d.cts.map +1 -1
  329. package/dist/node/components/controls/card/cvv/Cvv.d.mts +2 -1
  330. package/dist/node/components/controls/card/cvv/Cvv.d.mts.map +1 -1
  331. package/dist/node/components/controls/card/cvv/Cvv.d.ts +2 -1
  332. package/dist/node/components/controls/card/cvv/Cvv.d.ts.map +1 -1
  333. package/dist/node/components/controls/card/cvv/index.d.cts +2 -2
  334. package/dist/node/components/controls/card/cvv/index.d.cts.map +1 -1
  335. package/dist/node/components/controls/card/cvv/index.d.mts +2 -2
  336. package/dist/node/components/controls/card/cvv/index.d.mts.map +1 -1
  337. package/dist/node/components/controls/card/cvv/index.d.ts +2 -2
  338. package/dist/node/components/controls/card/cvv/index.d.ts.map +1 -1
  339. package/dist/node/components/controls/card/cvv/use.d.cts.map +1 -1
  340. package/dist/node/components/controls/card/cvv/use.d.mts.map +1 -1
  341. package/dist/node/components/controls/card/cvv/use.d.ts.map +1 -1
  342. package/dist/node/components/controls/card/index.d.cts +9 -9
  343. package/dist/node/components/controls/card/index.d.cts.map +1 -1
  344. package/dist/node/components/controls/card/index.d.mts +9 -9
  345. package/dist/node/components/controls/card/index.d.mts.map +1 -1
  346. package/dist/node/components/controls/card/index.d.ts +9 -9
  347. package/dist/node/components/controls/card/index.d.ts.map +1 -1
  348. package/dist/node/components/controls/card/number/Number.d.cts +2 -1
  349. package/dist/node/components/controls/card/number/Number.d.cts.map +1 -1
  350. package/dist/node/components/controls/card/number/Number.d.mts +2 -1
  351. package/dist/node/components/controls/card/number/Number.d.mts.map +1 -1
  352. package/dist/node/components/controls/card/number/Number.d.ts +2 -1
  353. package/dist/node/components/controls/card/number/Number.d.ts.map +1 -1
  354. package/dist/node/components/controls/card/number/index.d.cts +2 -2
  355. package/dist/node/components/controls/card/number/index.d.cts.map +1 -1
  356. package/dist/node/components/controls/card/number/index.d.mts +2 -2
  357. package/dist/node/components/controls/card/number/index.d.mts.map +1 -1
  358. package/dist/node/components/controls/card/number/index.d.ts +2 -2
  359. package/dist/node/components/controls/card/number/index.d.ts.map +1 -1
  360. package/dist/node/components/controls/card/number/use.d.cts.map +1 -1
  361. package/dist/node/components/controls/card/number/use.d.mts.map +1 -1
  362. package/dist/node/components/controls/card/number/use.d.ts.map +1 -1
  363. package/dist/node/components/controls/index.d.cts +2 -2
  364. package/dist/node/components/controls/index.d.mts +2 -2
  365. package/dist/node/components/controls/index.d.ts +2 -2
  366. package/dist/node/components/form/Form.d.cts +2 -1
  367. package/dist/node/components/form/Form.d.cts.map +1 -1
  368. package/dist/node/components/form/Form.d.mts +2 -1
  369. package/dist/node/components/form/Form.d.mts.map +1 -1
  370. package/dist/node/components/form/Form.d.ts +2 -1
  371. package/dist/node/components/form/Form.d.ts.map +1 -1
  372. package/dist/node/components/form/InputFieldsStack.d.cts +1 -1
  373. package/dist/node/components/form/InputFieldsStack.d.cts.map +1 -1
  374. package/dist/node/components/form/InputFieldsStack.d.mts +1 -1
  375. package/dist/node/components/form/InputFieldsStack.d.mts.map +1 -1
  376. package/dist/node/components/form/InputFieldsStack.d.ts +1 -1
  377. package/dist/node/components/form/InputFieldsStack.d.ts.map +1 -1
  378. package/dist/node/components/form/Props.d.cts +1 -1
  379. package/dist/node/components/form/Props.d.mts +1 -1
  380. package/dist/node/components/form/Props.d.ts +1 -1
  381. package/dist/node/components/form/index.d.cts +4 -4
  382. package/dist/node/components/form/index.d.cts.map +1 -1
  383. package/dist/node/components/form/index.d.mts +4 -4
  384. package/dist/node/components/form/index.d.mts.map +1 -1
  385. package/dist/node/components/form/index.d.ts +4 -4
  386. package/dist/node/components/form/index.d.ts.map +1 -1
  387. package/dist/node/components/form/useFormStorage.d.cts +1 -1
  388. package/dist/node/components/form/useFormStorage.d.mts +1 -1
  389. package/dist/node/components/form/useFormStorage.d.ts +1 -1
  390. package/dist/node/components/index.d.cts +4 -4
  391. package/dist/node/components/index.d.mts +4 -4
  392. package/dist/node/components/index.d.ts +4 -4
  393. package/dist/node/components/support/index.d.cts +3 -3
  394. package/dist/node/components/support/index.d.mts +3 -3
  395. package/dist/node/components/support/index.d.ts +3 -3
  396. package/dist/node/components/support/validateCreditCardInputs.d.cts +1 -1
  397. package/dist/node/components/support/validateCreditCardInputs.d.mts +1 -1
  398. package/dist/node/components/support/validateCreditCardInputs.d.ts +1 -1
  399. package/dist/node/context/FormGroupCreditCardContext.d.cts +2 -2
  400. package/dist/node/context/FormGroupCreditCardContext.d.mts +2 -2
  401. package/dist/node/context/FormGroupCreditCardContext.d.ts +2 -2
  402. package/dist/node/context/FormGroupCreditCardProvider.d.cts +2 -2
  403. package/dist/node/context/FormGroupCreditCardProvider.d.cts.map +1 -1
  404. package/dist/node/context/FormGroupCreditCardProvider.d.mts +2 -2
  405. package/dist/node/context/FormGroupCreditCardProvider.d.mts.map +1 -1
  406. package/dist/node/context/FormGroupCreditCardProvider.d.ts +2 -2
  407. package/dist/node/context/FormGroupCreditCardProvider.d.ts.map +1 -1
  408. package/dist/node/context/index.d.cts +3 -3
  409. package/dist/node/context/index.d.cts.map +1 -1
  410. package/dist/node/context/index.d.mts +3 -3
  411. package/dist/node/context/index.d.mts.map +1 -1
  412. package/dist/node/context/index.d.ts +3 -3
  413. package/dist/node/context/index.d.ts.map +1 -1
  414. package/dist/node/context/useFormGroupWithCreditCard.d.cts +2 -2
  415. package/dist/node/context/useFormGroupWithCreditCard.d.mts +2 -2
  416. package/dist/node/context/useFormGroupWithCreditCard.d.ts +2 -2
  417. package/dist/node/controls/CreditCardCvv.d.cts +1 -1
  418. package/dist/node/controls/CreditCardCvv.d.mts +1 -1
  419. package/dist/node/controls/CreditCardCvv.d.ts +1 -1
  420. package/dist/node/controls/CreditCardExpiry.d.cts +1 -1
  421. package/dist/node/controls/CreditCardExpiry.d.mts +1 -1
  422. package/dist/node/controls/CreditCardExpiry.d.ts +1 -1
  423. package/dist/node/controls/CreditCardNumber.d.cts +1 -1
  424. package/dist/node/controls/CreditCardNumber.d.mts +1 -1
  425. package/dist/node/controls/CreditCardNumber.d.ts +1 -1
  426. package/dist/node/controls/Zip.d.cts +1 -1
  427. package/dist/node/controls/Zip.d.mts +1 -1
  428. package/dist/node/controls/Zip.d.ts +1 -1
  429. package/dist/node/controls/index.d.cts +6 -6
  430. package/dist/node/controls/index.d.mts +6 -6
  431. package/dist/node/controls/index.d.ts +6 -6
  432. package/dist/node/index.cjs +452 -267
  433. package/dist/node/index.cjs.map +1 -1
  434. package/dist/node/index.d.cts +5 -5
  435. package/dist/node/index.d.mts +5 -5
  436. package/dist/node/index.d.ts +5 -5
  437. package/dist/node/{index.js → index.mjs} +451 -264
  438. package/dist/node/index.mjs.map +1 -0
  439. package/dist/node/models/index.d.cts +1 -1
  440. package/dist/node/models/index.d.mts +1 -1
  441. package/dist/node/models/index.d.ts +1 -1
  442. package/dist/node/utils/index.d.cts +1 -1
  443. package/dist/node/utils/index.d.mts +1 -1
  444. package/dist/node/utils/index.d.ts +1 -1
  445. package/package.json +18 -18
  446. package/src/components/controls/card/Email.tsx +6 -4
  447. package/src/components/controls/card/Expiration.tsx +6 -4
  448. package/src/components/controls/card/FormControlTextField.tsx +2 -2
  449. package/src/components/controls/card/Name.tsx +5 -5
  450. package/src/components/controls/card/Options.ts +1 -1
  451. package/src/components/controls/card/Zip.tsx +6 -4
  452. package/src/components/controls/card/cvv/Cvv.tsx +6 -4
  453. package/src/components/controls/card/cvv/index.ts +2 -2
  454. package/src/components/controls/card/cvv/{use.tsx → use.ts} +3 -3
  455. package/src/components/controls/card/index.ts +9 -9
  456. package/src/components/controls/card/number/Number.tsx +13 -10
  457. package/src/components/controls/card/number/index.ts +2 -2
  458. package/src/components/controls/card/number/{use.tsx → use.ts} +3 -3
  459. package/src/components/controls/card/useCreditCardFormControl.tsx +1 -1
  460. package/src/components/controls/index.ts +2 -2
  461. package/src/components/form/Form.tsx +15 -13
  462. package/src/components/form/InputFieldsStack.tsx +4 -4
  463. package/src/components/form/Props.ts +1 -1
  464. package/src/components/form/index.ts +4 -4
  465. package/src/components/form/useFormStorage.tsx +1 -1
  466. package/src/components/index.ts +4 -4
  467. package/src/components/support/index.ts +3 -3
  468. package/src/components/support/validateCreditCardInputs.ts +1 -1
  469. package/src/context/FormGroupCreditCardContext.ts +1 -1
  470. package/src/context/FormGroupCreditCardProvider.tsx +4 -3
  471. package/src/context/index.ts +3 -3
  472. package/src/context/useFormGroupWithCreditCard.tsx +1 -1
  473. package/src/controls/CreditCardCvv.ts +1 -1
  474. package/src/controls/CreditCardExpiry.ts +1 -1
  475. package/src/controls/CreditCardNumber.ts +1 -1
  476. package/src/controls/Zip.ts +1 -1
  477. package/src/controls/index.ts +6 -6
  478. package/src/index.ts +5 -5
  479. package/src/models/index.ts +1 -1
  480. package/src/stories/form.stories.tsx +4 -4
  481. package/src/utils/index.ts +1 -1
  482. package/dist/browser/index.js.map +0 -1
  483. package/dist/neutral/index.js.map +0 -1
  484. package/dist/node/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/controls/CreditCardCvv.ts","../../src/utils/umask.ts","../../src/controls/CreditCardExpiry.ts","../../src/controls/CreditCardNumber.ts","../../src/controls/Email.ts","../../src/controls/Name.ts","../../src/controls/Zip.ts","../../src/components/controls/card/FormControlTextField.tsx","../../src/components/controls/card/cvv/use.tsx","../../src/context/FormGroupCreditCardContext.ts","../../src/context/FormGroupCreditCardProvider.tsx","../../src/context/useFormGroupWithCreditCard.tsx","../../src/components/controls/card/useCreditCardFormControl.tsx","../../src/components/controls/card/cvv/Cvv.tsx","../../src/components/controls/card/Email.tsx","../../src/components/controls/card/Expiration.tsx","../../src/components/controls/card/Name.tsx","../../src/components/controls/card/number/Number.tsx","../../src/components/img/index.ts","../../src/components/controls/card/Options.ts","../../src/components/controls/card/number/use.tsx","../../src/components/controls/card/Zip.tsx","../../src/components/form/Form.tsx","../../src/components/support/Fields.ts","../../src/components/support/validateCreditCardInputs.ts","../../src/models/CreditCardInput.ts","../../src/components/form/InputFieldsStack.tsx","../../src/components/form/useFormStorage.tsx"],"sourcesContent":["export * from './components/index.js'\nexport * from './context/index.js'\nexport * from './controls/index.js'\nexport * from './models/index.js'\nexport * from './utils/index.js'\n","import { assertEx } from '@xylabs/assert'\nimport { EmptyObject } from '@xylabs/object'\nimport { AbstractControl, FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.js'\n\nconst CONTROL_NAME = 'cvv'\n\nexport class CreditCardCvvFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your card cvc is invalid.'\n\n override pattern = /^\\d{0,4}$/\n override patternStrict = /^\\d{1,4}$/\n\n override props = {\n autoComplete: 'cc-csc',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: 'CVC',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n private _cardNumberFormControl: AbstractControl | undefined = undefined\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n get cardNumberFormControl() {\n return assertEx(this._cardNumberFormControl, () => 'Card number form control is not set')\n }\n\n override blurError(value: string) {\n const num = this.cardNumberFormControl.value\n const max = this.getCardNumberCvcMax(num)\n const cvvValidation = valid.cvv(value, max)\n if (cvvValidation.isValid) {\n this.setError('')\n this.setStatus('VALID')\n } else {\n this.setError(this.invalidMessage)\n this.setStatus('INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const num = this.cardNumberFormControl.value\n const max = this.getCardNumberCvcMax(num)\n const cvvValidation = valid.cvv(value, max)\n if (cvvValidation.isPotentiallyValid) {\n this.setError('')\n this.setStatus('VALID')\n } else {\n this.setError('Your card cvc is invalid.')\n this.setStatus('INVALID')\n }\n } else {\n this.setError(this.invalidMessage)\n this.setStatus('INVALID')\n }\n }\n\n setCardNumberFormControl(cardNumberFormControl: AbstractControl) {\n this._cardNumberFormControl = cardNumberFormControl\n }\n\n private getCardNumberCvcMax(num?: string) {\n if (!num) return 3\n const numberValidation = valid.number(num)\n return numberValidation.card ? numberValidation.card.code.size : 3\n }\n}\n","export function unmask(value: string) {\n return value.replaceAll(/\\D/g, '')\n}\n","import { assertEx } from '@xylabs/assert'\nimport { EmptyObject } from '@xylabs/object'\nimport { AbstractControl, FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.js'\n\nconst CONTROL_NAME = 'expiration'\n\nexport class CreditCardExpirationFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase {\n override invalidMessage = 'Card Expiration is invalid'\n\n override pattern = /^\\d{0,4}$/\n override patternStrict = /^\\d{1,4}$/\n\n override props = {\n autoComplete: 'cc-exp',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: 'MM / YY',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n private _cardNumberFormControl: AbstractControl | undefined = undefined\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n get cardNumberFormControl() {\n return assertEx(this._cardNumberFormControl, () => 'Card number form control is not set')\n }\n\n // make it so the raw value is the same to preserve the / separator in the value\n override get rawValue() {\n return this.value\n }\n\n override blurError(value: string) {\n const unmasked = unmask(value)\n const expirationValid = valid.expirationDate(unmasked)\n if (!unmasked || (unmasked && unmasked.length !== 4)) {\n this.setErrorAndValidity('Your card expiration is incomplete.', 'INVALID')\n } else if (expirationValid.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(\"Your card's expiration year is in the past.\", 'INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const expirationValid = valid.expirationDate(unmasked)\n if (expirationValid.isPotentiallyValid) {\n this.setErrorAndValidity('', 'VALID')\n } else if (expirationValid.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(\"Your card's expiration year is in the past.\", 'INVALID')\n }\n }\n\n override mask(value: string) {\n if (/^[2-9]/.test(unmask(value))) {\n return this.makeMask(' / ', 2)(`0${value}`)\n }\n return this.makeMask(' / ', 2)(value)\n }\n\n private makeMask(separator: string, limit: number) {\n return (value: string) => {\n const output: string[] = []\n // eslint-disable-next-line unicorn/no-for-loop\n for (let i = 0; i < value.length; i++) {\n if (i !== 0 && i % limit === 0) {\n output.push(separator)\n }\n\n output.push(value[i])\n }\n\n return output.join('')\n }\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase, SetOptions, ValidControlValue } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.js'\n\nconst CONTROL_NAME = 'cardNumber2'\n\nexport class CreditCardNumberFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n creditCardType: string = ''\n\n override invalidMessage = 'Card Number is invalid'\n\n override pattern = /^(\\d+)?$/\n override patternStrict = /^\\d+$/\n\n override props = {\n autoComplete: 'cc-number',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: '1234 1234 1234 1234',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n override blurError(value: string) {\n const unmasked = unmask(value)\n const numberValidation = valid.number(unmasked)\n if (!numberValidation.isValid) {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n return\n }\n this.setErrorAndValidity('', 'VALID')\n }\n\n override changeError(value: string) {\n const unmasked = unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const numberValidation = valid.number(unmasked)\n if (!numberValidation.isPotentiallyValid) {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n return\n }\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n earlyNumberCheck(number: string) {\n switch (number) {\n case '4': {\n this.setCreditCardType('visa')\n break\n }\n case '5': {\n this.setCreditCardType('mastercard')\n break\n }\n case '3': {\n this.setCreditCardType('amex')\n break\n }\n case '6': {\n this.setCreditCardType('discover')\n break\n }\n default: {\n this.setCreditCardType('')\n }\n }\n }\n\n override getCursorPosition() {\n if (this.value) {\n const previousValue = this.previousValue ?? ''\n const unmasked = unmask(this.value)\n const numberValidation = valid.number(unmasked)\n const card = numberValidation.card\n const lengthChange = this.value.length - (previousValue?.length ?? 0)\n const unmaskedChange = unmask(this.value).length - unmask(previousValue).length\n\n if (card) {\n const gaps = card.gaps\n const oldCursor = this.cursorPosition.previous ?? 0\n const oldSeparation = gaps.filter((gap, i) => gap + i < oldCursor).length\n const newSeparation = gaps.filter((gap, i) => gap + i < oldCursor + lengthChange).length\n const newCursor = oldCursor - oldSeparation + newSeparation + unmaskedChange\n return newCursor\n }\n }\n\n return\n }\n\n override mask(value: ValidControlValue = '') {\n const unmasked = unmask(value)\n const numberValidation = valid.number(unmasked)\n const card = numberValidation.card\n\n if (card) {\n const max = card.lengths.includes(16) ? 16 : card.lengths[0]\n const gaps = [...card.gaps, max]\n const newVal = gaps\n .map((gap, i) => unmasked.slice(gaps[i - 1] || 0, gap))\n .filter(Boolean)\n .join(' ')\n\n return newVal\n }\n\n return value\n }\n\n onCreditCardTypeChange: (type: string) => void = () => {}\n\n setCreditCardType(type: string) {\n this.creditCardType = type\n this.onCreditCardTypeChange(type)\n }\n\n override setValue(value = '', options: SetOptions) {\n const umMasked = this.unmask(value)\n super.setValue(umMasked, options)\n this.earlyNumberCheck(umMasked.charAt(0))\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\n\nconst CONTROL_NAME = 'Email'\n\nexport class CreditCardEmailFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your email is invalid.'\n\n override pattern = /^.*$/\n override patternStrict = /^([\\w+.\\-])+@(([\\dA-Za-z-])+\\.)+([\\dA-Za-z]{2,4})+$/\n\n override props = {\n autoComplete: 'email',\n autoCorrect: 'off',\n id: CONTROL_NAME.toLocaleLowerCase(),\n name: CONTROL_NAME.toLocaleLowerCase(),\n placeholder: 'jerry.smith@email.com',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: false, serializable: true })\n }\n\n override blurError(value: string) {\n const match = value.match(this.patternStrict)\n this.updateValidation(match)\n }\n\n override changeError(value: string) {\n if (this.error) {\n this.blurError(value)\n }\n }\n\n private updateValidation(match: RegExpMatchArray | null) {\n if (match) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\n\nexport class NameFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override required = true\n\n constructor(\n private nameLabel: string,\n autoCompleteLabel: string,\n placeHolder: string,\n ) {\n super()\n super.setName(nameLabel)\n this.setSerializeSettings({ sensitive: false, serializable: true })\n this.invalidMessage = `${nameLabel} name is missing.`\n this.props = {\n autoComplete: autoCompleteLabel,\n autoCorrect: 'off',\n id: this.nameLabel,\n name: this.nameLabel,\n placeholder: placeHolder,\n spellCheck: false,\n } as TProps\n }\n\n override blurError(value: string) {\n if (value) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n override changeError(value: string): void {\n this.blurError(value)\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.js'\n\nconst CONTROL_NAME = 'Zip'\n\nexport class CreditCardZipFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your zip code is invalid.'\n\n override props = {\n autoComplete: 'postal-code',\n autoCorrect: 'off',\n id: CONTROL_NAME.toLocaleLowerCase(),\n name: CONTROL_NAME.toLocaleLowerCase(),\n placeholder: '12345',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n override blurError(value: string) {\n const postalCodeValidation = valid.postalCode(value)\n if (postalCodeValidation.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const postalCodeValidation = valid.postalCode(value)\n if (postalCodeValidation.isPotentiallyValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity('Your zip code is invalid.', 'INVALID')\n }\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n}\n","import { FormControl as MuiFormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { FormControl } from '@xyo-network/react-form-group'\nimport { LabeledTextFieldWrapper } from '@xyo-network/react-shared'\nimport { ChangeEventHandler, FocusEventHandler, forwardRef, KeyboardEvent } from 'react'\n\nexport interface FormControlTextFieldProps extends StandardTextFieldProps {\n fieldLabel: string\n formControl?: FormControl<StandardTextFieldProps>\n formControlError?: string\n}\n\nexport const FormControlTextField = forwardRef<HTMLDivElement, FormControlTextFieldProps>(\n ({ formControl, formControlError, fieldLabel = '', ...props }, ref) => {\n const { name } = formControl?.props ?? {}\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n formControl?.setValue(event.target.value)\n }\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n formControl?.blurError?.(event.target.value)\n formControl?.setTouched(true)\n }\n\n return (\n <MuiFormControl fullWidth>\n <LabeledTextFieldWrapper label={fieldLabel}>\n <label htmlFor={name}>\n <TextField\n error={!!formControlError}\n helperText={formControlError || ' '}\n fullWidth\n hiddenLabel\n name={name}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n // See - https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682\n // .currentTarget is the div in mui that emits the event, .target is the input element\n // Unfortunately, the type definitions do not let you pass a generic specifically for target, only currentTarget\n const selectionEnd = (event.target as HTMLInputElement).selectionEnd\n if (selectionEnd && formControl) {\n formControl.cursorPosition.previous = selectionEnd\n }\n }}\n ref={ref}\n required={formControl?.required}\n size={'small'}\n variant=\"filled\"\n {...props}\n />\n </label>\n </LabeledTextFieldWrapper>\n </MuiFormControl>\n )\n },\n)\n\nFormControlTextField.displayName = 'FormControlTextField'\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport { useEffect } from 'react'\n\nimport { useFormGroupWithCreditCardInput } from '../../../../context/index.js'\nimport { CreditCardCvvFormControl } from '../../../../controls/index.js'\nimport { useCreditCardFormControl } from '../useCreditCardFormControl.js'\n\nexport const useCreditCardCvvFormControl = (\n formControlName?: string,\n cardNumberControlName = 'cardNumber',\n control?: new () => FormControlBase<StandardTextFieldProps>,\n) => {\n const { creditCardFormControl, error, value, inputRef } = useCreditCardFormControl(formControlName, control)\n\n // only use FormGroupContext when name is passed\n const { formGroup } = useFormGroupWithCreditCardInput(!!formControlName)\n\n const creditCardNumberFormControl = formGroup?.getControl?.(cardNumberControlName)\n\n useEffect(() => {\n if (creditCardNumberFormControl) {\n const castControl = creditCardFormControl as CreditCardCvvFormControl\n if (!castControl.setCardNumberFormControl) {\n console.error('cannot setCardNumberFormControl on control because it is not a CreditCardCvvFormControl')\n return\n }\n castControl.setCardNumberFormControl(creditCardNumberFormControl)\n }\n }, [creditCardFormControl, creditCardNumberFormControl])\n\n return { creditCardFormControl, error, inputRef, value }\n}\n","import { FormGroupContextWithPayloadState } from '@xyo-network/react-form-group'\nimport { createContextEx } from '@xyo-network/react-shared'\n\nimport { CreditCardInput } from '../models/index.js'\n\nexport const FormGroupCreditCardContext = createContextEx<FormGroupContextWithPayloadState<CreditCardInput, CreditCardInput>>()\n","import { Payload } from '@xyo-network/payload-model'\nimport { FormGroup, FormGroupParams } from '@xyo-network/react-form-group'\nimport { PropsWithChildren, useMemo } from 'react'\n\nimport { CreditCardInput } from '../models/CreditCardInput.js'\nimport { FormGroupCreditCardContext } from './FormGroupCreditCardContext.js'\n\nexport interface FormGroupCreditCardProviderProps<TStorage extends Payload = Payload> extends PropsWithChildren {\n params?: FormGroupParams<TStorage>\n}\n\nexport const FormGroupCreditCardProvider: React.FC<FormGroupCreditCardProviderProps<CreditCardInput>> = ({ children, params, ...props }) => {\n const formGroup = useMemo(() => {\n const formGroup = new FormGroup<CreditCardInput, CreditCardInput>(params)\n return formGroup\n }, [params])\n\n return (\n <FormGroupCreditCardContext.Provider value={{ formGroup, provided: true }} {...props}>\n {children}\n </FormGroupCreditCardContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { FormGroupCreditCardContext } from './FormGroupCreditCardContext.js'\n\nexport const useFormGroupWithCreditCardInput = (required = false) => {\n return useContextEx(FormGroupCreditCardContext, 'FormGroupCreditCard', required)\n}\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase, ValidControlValue } from '@xyo-network/react-form-group'\nimport { useMemo, useRef, useState } from 'react'\n\nimport { useFormGroupWithCreditCardInput } from '../../../context/index.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst StableDefaultArgs: any[] = []\n\nexport const useCreditCardFormControl = (\n formControlName?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Control?: new (...args: any[]) => FormControlBase<StandardTextFieldProps>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[] = StableDefaultArgs,\n) => {\n const [error, setError] = useState('')\n const [value, setValue] = useState<ValidControlValue>('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n // only use FormGroupContext when name is passed\n const { formGroup } = useFormGroupWithCreditCardInput(!!formControlName)\n\n const creditCardFormControl = useMemo(() => {\n if (Control) {\n const control = new Control(...args)\n control.registerOnErrorChange((newError: string) => setError(newError))\n control.registerOnChange((value: ValidControlValue) => setValue(value))\n\n if (formControlName) formGroup?.registerControl(formControlName, control)\n return control\n }\n }, [Control, args, formControlName, formGroup])\n\n return { creditCardFormControl, error, inputRef, value }\n}\n","import { CreditCardCvvFormControl } from '../../../../controls/index.js'\nimport { WithFormControlProps } from '../../WithFormControlProps.js'\nimport { FormControlTextField } from '../FormControlTextField.js'\nimport { useCreditCardCvvFormControl } from './use.js'\n\nexport const CreditCardCvvWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'cvc', fieldLabel = 'CVC', ...props }) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardCvvFormControl(formControlName, undefined, CreditCardCvvFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} number on the back of your card`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { CreditCardEmailFormControl } from '../../../controls/index.js'\nimport { WithFormControlProps } from '../WithFormControlProps.js'\nimport { FormControlTextField } from './FormControlTextField.js'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.js'\n\nexport const CreditCardEmailWithFormControl: React.FC<WithFormControlProps> = ({\n formControlName = 'emailAddress',\n fieldLabel = 'Email',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardEmailFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} for your purchase`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { CreditCardExpirationFormControl } from '../../../controls/index.js'\nimport { WithFormControlProps } from '../WithFormControlProps.js'\nimport { FormControlTextField } from './FormControlTextField.js'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.js'\n\nexport const CreditCardExpirationWithFormControl: React.FC<WithFormControlProps> = ({\n formControlName = 'expiration',\n fieldLabel = 'Expiration',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardExpirationFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...expirationProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n inputRef={inputRef}\n formControl={creditCardFormControl}\n fieldLabel={fieldLabel}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} of the card`, autoComplete, autoCorrect, id, name, spellCheck }}\n value={value}\n {...expirationProps}\n {...props}\n />\n )\n}\n","import { useMemo } from 'react'\n\nimport { NameFormControl } from '../../../controls/index.js'\nimport { WithFormControlProps } from '../WithFormControlProps.js'\nimport { FormControlTextField } from './FormControlTextField.js'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.js'\n\nexport interface NameWithFormControlProps extends WithFormControlProps {\n autoCompleteLabel: string\n}\n\nexport const NameWithFormControl: React.FC<NameWithFormControlProps> = ({\n autoCompleteLabel,\n fieldLabel = 'Name',\n formControlName,\n placeholder,\n tabIndex,\n ...props\n}) => {\n const args = useMemo(() => [fieldLabel, autoCompleteLabel, placeholder ?? ''], [autoCompleteLabel, fieldLabel, placeholder])\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, NameFormControl, args)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} name on your card`, autoComplete, autoCorrect, id, name, spellCheck, tabIndex }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { InputAdornment } from '@mui/material'\n\nimport { CreditCardNumberFormControl } from '../../../../controls/index.js'\nimport { WithFormControlProps } from '../../WithFormControlProps.js'\nimport { FormControlTextField } from '../FormControlTextField.js'\nimport { CreditCardData } from '../Options.js'\nimport { useCreditCardNumberFormControl } from './use.js'\n\nexport const CreditCardNumberWithFormControl: React.FC<WithFormControlProps> = ({\n fieldLabel = 'Card Number',\n formControlName = 'cardNumber',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, type, value } = useCreditCardNumberFormControl(formControlName, CreditCardNumberFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cardProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputRef={inputRef}\n inputMode={inputMode}\n inputProps={{ 'aria-label': fieldLabel, autoComplete, autoCorrect, id, inputMode, name, spellCheck }}\n InputProps={{\n startAdornment:\n type.length > 0 ?\n <InputAdornment position=\"start\">\n <img height={'30px'} width={'40px'} src={CreditCardData[type].icon} />\n </InputAdornment>\n : null,\n }}\n value={value}\n {...cardProps}\n {...props}\n />\n )\n}\n","export { default as AmexIcon } from './american-express.svg'\nexport { default as DiscoverIcon } from './discover.svg'\nexport { default as MastercardIcon } from './mastercard.svg'\nexport { default as VisaIcon } from './visa.svg'\n","import { AmexIcon, DiscoverIcon, MastercardIcon, VisaIcon } from '../../img/index.js'\n\nexport interface CreditCardInfo {\n icon: string\n name: string\n}\n\nexport interface CreditCardOptions {\n amex: CreditCardInfo\n discover: CreditCardInfo\n mastercard: CreditCardInfo\n visa: CreditCardInfo\n}\n\nexport const CreditCardData: CreditCardOptions = {\n amex: { icon: AmexIcon, name: 'American Express' },\n discover: { icon: DiscoverIcon, name: 'Discover' },\n mastercard: { icon: MastercardIcon, name: 'Mastercard' },\n visa: { icon: VisaIcon, name: 'Visa' },\n}\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport { useEffect, useState } from 'react'\n\nimport { CreditCardNumberFormControl } from '../../../../controls/index.js'\nimport { CreditCardOptions } from '../Options.js'\nimport { useCreditCardFormControl } from '../useCreditCardFormControl.js'\n\nexport const useCreditCardNumberFormControl = (formControlName?: string, control?: new () => FormControlBase<StandardTextFieldProps>) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, control)\n const [type, setType] = useState('' as keyof CreditCardOptions)\n\n useEffect(() => {\n if (creditCardFormControl) {\n const castControl = creditCardFormControl as CreditCardNumberFormControl<StandardTextFieldProps>\n if (!castControl.onCreditCardTypeChange) {\n console.error('cannot set onCreditCardTypeChange on control because it is not a CreditCardNumberFormControl')\n return\n }\n castControl.onCreditCardTypeChange = (type: string) => setType(type as keyof CreditCardOptions)\n castControl.onCursorChange = (cursor: number | undefined) => {\n if (inputRef.current && cursor) {\n inputRef.current.setSelectionRange(cursor, cursor)\n }\n }\n }\n }, [creditCardFormControl, inputRef])\n\n return { creditCardFormControl, error, inputRef, type, value }\n}\n","import { CreditCardZipFormControl } from '../../../controls/index.js'\nimport { WithFormControlProps } from '../WithFormControlProps.js'\nimport { FormControlTextField } from './FormControlTextField.js'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.js'\n\nexport const CreditCardZipWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'zip', fieldLabel = 'Zip', ...props }) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardZipFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} code for your card`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { Stack } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport { useState } from 'react'\n\nimport { FormGroupCreditCardProvider, useFormGroupWithCreditCardInput } from '../../context/index.js'\nimport { validateCreditCardInputs } from '../support/index.js'\nimport { InputFieldsStack } from './InputFieldsStack.js'\nimport { CreditCardFormProps } from './Props.js'\nimport { useFormStorage } from './useFormStorage.js'\n\nexport const CreditCardFormFlexbox: React.FC<CreditCardFormProps> = ({\n ConfirmationButton,\n displayErrors,\n onErrorDuringSubmit,\n onInvalidSubmit,\n onSuccessfulSubmit,\n onValidSubmit,\n ...props\n}) => {\n const { formGroup } = useFormGroupWithCreditCardInput(true)\n const [error, setError] = useState<Error>()\n\n const handleConfirmPayment = async () => {\n try {\n if (!formGroup) {\n throw new Error('formGroup is not defined')\n }\n\n formGroup.validateFields()\n\n const errorSummary = formGroup.errorSummary\n\n if (errorSummary.invalidFields.length > 0) {\n onInvalidSubmit?.(errorSummary)\n }\n\n if (errorSummary.invalidFields.length > 0) return\n\n const formOutput = validateCreditCardInputs(formGroup.values)\n\n await onValidSubmit?.(formOutput)\n\n onSuccessfulSubmit?.()\n } catch (error) {\n onErrorDuringSubmit?.(error as Error)\n if (displayErrors) setError(error as Error)\n }\n }\n\n return (\n <>\n <ErrorRender error={error} />\n <FlexCol sx={{ flexDirection: { md: 'row', xs: 'column' } }} width={'100%'} gap={2} {...props}>\n <Stack flexDirection={'column'} sx={{ width: '100%' }} gap={2}>\n <InputFieldsStack />\n {ConfirmationButton ?\n <ConfirmationButton onClick={handleConfirmPayment} variant=\"contained\" sx={{ alignSelf: 'end' }}>\n Confirm Payment\n </ConfirmationButton>\n : null}\n </Stack>\n </FlexCol>\n </>\n )\n}\n\nexport const CreditCardFormFlexboxWithFormGroupProvider: React.FC<CreditCardFormProps> = (props) => {\n const [params, error] = useFormStorage()\n return (\n <FormGroupCreditCardProvider params={params}>\n <ErrorRender error={error} />\n <CreditCardFormFlexbox {...props} />\n </FormGroupCreditCardProvider>\n )\n}\n","export const NameFields = ['firstName', 'lastName'] as const\nexport const NameLabels = ['First', 'Last'] as const\nexport type NameLabel = (typeof NameLabels)[number]\n","import { assertEx } from '@xylabs/assert'\n\nimport { CreditCardInput, CreditCardInputSchema } from '../../models/index.js'\n\nexport const validateCreditCardInputs = (values: CreditCardInput): CreditCardInput => {\n return {\n cardNumber: assertEx(values.cardNumber, () => 'card number is not a string') as string,\n cvc: assertEx(values.cvc, () => 'card cvc is not a string') as string,\n emailAddress: assertEx(values.emailAddress, () => 'emailAddress is not a string') as string,\n expiration: assertEx(values.expiration, () => 'card expiration is not a string') as string,\n firstName: assertEx(values.firstName, () => 'first name is not a string') as string,\n lastName: assertEx(values.lastName, () => 'last name is not a string') as string,\n schema: CreditCardInputSchema,\n timestamp: values.timestamp,\n zip: assertEx(values.zip, () => 'zip is not a string') as string,\n }\n}\n","import { isPayloadOfSchemaTypeWithMeta, Payload } from '@xyo-network/payload-model'\n\nexport const CreditCardInputSchema = 'network.xyo.credit.card.input' as const\nexport type CreditCardInputSchema = typeof CreditCardInputSchema\n\nexport type CreditCardInputFields = {\n cardNumber: string\n cvc: string\n emailAddress: string\n expiration: string\n firstName: string\n lastName: string\n timestamp: number\n zip: string\n}\n\nexport type CreditCardInput = Payload<CreditCardInputFields, CreditCardInputSchema>\n\nexport const isCreditCardInput = isPayloadOfSchemaTypeWithMeta<CreditCardInput>(CreditCardInputSchema)\n","import { Stack, StackProps } from '@mui/material'\nimport { PropsWithChildren } from 'react'\n\nimport {\n CreditCardCvvWithFormControl,\n CreditCardEmailWithFormControl,\n CreditCardExpirationWithFormControl,\n CreditCardNumberWithFormControl,\n CreditCardZipWithFormControl,\n NameWithFormControl,\n} from '../controls/index.js'\n\nexport interface InputFieldsStackProps extends StackProps, PropsWithChildren {}\n\nexport const InputFieldsStack: React.FC<InputFieldsStackProps> = (props) => {\n const { sx } = props\n return (\n <>\n <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>\n <NameWithFormControl autoCompleteLabel=\"given-name\" fieldLabel={'First'} formControlName={'firstName'} placeholder=\"Jerry\" />\n <NameWithFormControl autoCompleteLabel=\"family-name\" fieldLabel={'Last'} formControlName={'lastName'} placeholder=\"Smith\" />\n </Stack>\n <Stack gap={2} sx={{ flexDirection: { lg: 'row', xs: 'column' }, ...sx }} {...props}>\n <Stack width={{ lg: '50%', xs: '100%' }}>\n <CreditCardNumberWithFormControl />\n </Stack>\n <Stack direction={{ lg: 'row', xs: 'column' }} gap={2} width={{ lg: '50%', xs: '100%' }}>\n <CreditCardCvvWithFormControl />\n <CreditCardExpirationWithFormControl />\n </Stack>\n </Stack>\n <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>\n <Stack width={{ md: '25%', xs: '100%' }}>\n <CreditCardZipWithFormControl />\n </Stack>\n <Stack width={{ md: '75%', xs: '100%' }}>\n <CreditCardEmailWithFormControl />\n </Stack>\n </Stack>\n </>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StorageArchivist, StorageArchivistConfigSchema } from '@xyo-network/archivist-storage'\nimport { ArchivistFormGroupStorage, FormGroupParams } from '@xyo-network/react-form-group'\n\nimport { CreditCardInput } from '../../models/index.js'\n\nconst StorageNameSpace = 'credit-card-fields'\n\nconst calculateTTL = (months = 6) => {\n const MS_PER_DAY = 24 * 60 * 60 * 1000\n const DAYS_PER_MONTH = 30.44\n return months * DAYS_PER_MONTH * MS_PER_DAY\n}\n\nexport const useFormStorage = () => {\n return usePromise(async () => {\n const localStorageArchivist = await StorageArchivist.create({\n account: 'random',\n config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'local' },\n })\n const sessionStorageArchivist = await StorageArchivist.create({\n account: 'random',\n config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'session' },\n })\n\n const storage = {\n sensitive: new ArchivistFormGroupStorage(sessionStorageArchivist),\n storage: new ArchivistFormGroupStorage(localStorageArchivist),\n }\n\n return { serialize: true, storage, ttlStorage: calculateTTL() } as FormGroupParams<CreditCardInput>\n }, [])\n}\n"],"mappings":"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","names":["valid","import_assert","import_react_form_group","import_card_validator","CONTROL_NAME","valid","import_react_form_group","import_card_validator","CONTROL_NAME","valid","import_react_form_group","CONTROL_NAME","import_react_form_group","import_react_form_group","import_card_validator","CONTROL_NAME","valid","MuiFormControl","import_react","import_react_shared","import_react_form_group","import_react","import_jsx_runtime","formGroup","import_react_shared","import_react","value","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_material","import_react","type","import_jsx_runtime","import_jsx_runtime","import_material","import_react","import_assert","import_material","import_jsx_runtime","import_react_form_group","import_jsx_runtime","error"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/controls/card/cvv/Cvv.tsx","../../src/controls/CreditCardCvv.ts","../../src/utils/umask.ts","../../src/controls/CreditCardExpiry.ts","../../src/controls/CreditCardNumber.ts","../../src/controls/Email.ts","../../src/controls/Name.ts","../../src/controls/Zip.ts","../../src/components/controls/card/FormControlTextField.tsx","../../src/components/controls/card/cvv/use.ts","../../src/context/FormGroupCreditCardContext.ts","../../src/context/FormGroupCreditCardProvider.tsx","../../src/context/useFormGroupWithCreditCard.tsx","../../src/components/controls/card/useCreditCardFormControl.tsx","../../src/components/controls/card/Email.tsx","../../src/components/controls/card/Expiration.tsx","../../src/components/controls/card/Name.tsx","../../src/components/controls/card/number/Number.tsx","../../src/components/img/index.ts","../../src/components/controls/card/Options.ts","../../src/components/controls/card/number/use.ts","../../src/components/controls/card/Zip.tsx","../../src/components/form/Form.tsx","../../src/components/support/Fields.ts","../../src/components/support/validateCreditCardInputs.ts","../../src/models/CreditCardInput.ts","../../src/components/form/InputFieldsStack.tsx","../../src/components/form/useFormStorage.tsx"],"sourcesContent":["export * from './components/index.ts'\nexport * from './context/index.ts'\nexport * from './controls/index.ts'\nexport * from './models/index.ts'\nexport * from './utils/index.ts'\n","import React from 'react'\n\nimport { CreditCardCvvFormControl } from '../../../../controls/index.ts'\nimport { WithFormControlProps } from '../../WithFormControlProps.ts'\nimport { FormControlTextField } from '../FormControlTextField.tsx'\nimport { useCreditCardCvvFormControl } from './use.ts'\n\nexport const CreditCardCvvWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'cvc', fieldLabel = 'CVC', ...props }) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardCvvFormControl(formControlName, undefined, CreditCardCvvFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} number on the back of your card`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport { EmptyObject } from '@xylabs/object'\nimport { AbstractControl, FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.ts'\n\nconst CONTROL_NAME = 'cvv'\n\nexport class CreditCardCvvFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your card cvc is invalid.'\n\n override pattern = /^\\d{0,4}$/\n override patternStrict = /^\\d{1,4}$/\n\n override props = {\n autoComplete: 'cc-csc',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: 'CVC',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n private _cardNumberFormControl: AbstractControl | undefined = undefined\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n get cardNumberFormControl() {\n return assertEx(this._cardNumberFormControl, () => 'Card number form control is not set')\n }\n\n override blurError(value: string) {\n const num = this.cardNumberFormControl.value\n const max = this.getCardNumberCvcMax(num)\n const cvvValidation = valid.cvv(value, max)\n if (cvvValidation.isValid) {\n this.setError('')\n this.setStatus('VALID')\n } else {\n this.setError(this.invalidMessage)\n this.setStatus('INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const num = this.cardNumberFormControl.value\n const max = this.getCardNumberCvcMax(num)\n const cvvValidation = valid.cvv(value, max)\n if (cvvValidation.isPotentiallyValid) {\n this.setError('')\n this.setStatus('VALID')\n } else {\n this.setError('Your card cvc is invalid.')\n this.setStatus('INVALID')\n }\n } else {\n this.setError(this.invalidMessage)\n this.setStatus('INVALID')\n }\n }\n\n setCardNumberFormControl(cardNumberFormControl: AbstractControl) {\n this._cardNumberFormControl = cardNumberFormControl\n }\n\n private getCardNumberCvcMax(num?: string) {\n if (!num) return 3\n const numberValidation = valid.number(num)\n return numberValidation.card ? numberValidation.card.code.size : 3\n }\n}\n","export function unmask(value: string) {\n return value.replaceAll(/\\D/g, '')\n}\n","import { assertEx } from '@xylabs/assert'\nimport { EmptyObject } from '@xylabs/object'\nimport { AbstractControl, FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.ts'\n\nconst CONTROL_NAME = 'expiration'\n\nexport class CreditCardExpirationFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase {\n override invalidMessage = 'Card Expiration is invalid'\n\n override pattern = /^\\d{0,4}$/\n override patternStrict = /^\\d{1,4}$/\n\n override props = {\n autoComplete: 'cc-exp',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: 'MM / YY',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n private _cardNumberFormControl: AbstractControl | undefined = undefined\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n get cardNumberFormControl() {\n return assertEx(this._cardNumberFormControl, () => 'Card number form control is not set')\n }\n\n // make it so the raw value is the same to preserve the / separator in the value\n override get rawValue() {\n return this.value\n }\n\n override blurError(value: string) {\n const unmasked = unmask(value)\n const expirationValid = valid.expirationDate(unmasked)\n if (!unmasked || (unmasked && unmasked.length !== 4)) {\n this.setErrorAndValidity('Your card expiration is incomplete.', 'INVALID')\n } else if (expirationValid.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(\"Your card's expiration year is in the past.\", 'INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const expirationValid = valid.expirationDate(unmasked)\n if (expirationValid.isPotentiallyValid) {\n this.setErrorAndValidity('', 'VALID')\n } else if (expirationValid.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(\"Your card's expiration year is in the past.\", 'INVALID')\n }\n }\n\n override mask(value: string) {\n if (/^[2-9]/.test(unmask(value))) {\n return this.makeMask(' / ', 2)(`0${value}`)\n }\n return this.makeMask(' / ', 2)(value)\n }\n\n private makeMask(separator: string, limit: number) {\n return (value: string) => {\n const output: string[] = []\n // eslint-disable-next-line unicorn/no-for-loop\n for (let i = 0; i < value.length; i++) {\n if (i !== 0 && i % limit === 0) {\n output.push(separator)\n }\n\n output.push(value[i])\n }\n\n return output.join('')\n }\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase, SetOptions, ValidControlValue } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.ts'\n\nconst CONTROL_NAME = 'cardNumber2'\n\nexport class CreditCardNumberFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n creditCardType: string = ''\n\n override invalidMessage = 'Card Number is invalid'\n\n override pattern = /^(\\d+)?$/\n override patternStrict = /^\\d+$/\n\n override props = {\n autoComplete: 'cc-number',\n autoCorrect: 'off',\n id: CONTROL_NAME,\n inputMode: 'numeric',\n name: CONTROL_NAME,\n placeholder: '1234 1234 1234 1234',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n override blurError(value: string) {\n const unmasked = unmask(value)\n const numberValidation = valid.number(unmasked)\n if (!numberValidation.isValid) {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n return\n }\n this.setErrorAndValidity('', 'VALID')\n }\n\n override changeError(value: string) {\n const unmasked = unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const numberValidation = valid.number(unmasked)\n if (!numberValidation.isPotentiallyValid) {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n return\n }\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n earlyNumberCheck(number: string) {\n switch (number) {\n case '4': {\n this.setCreditCardType('visa')\n break\n }\n case '5': {\n this.setCreditCardType('mastercard')\n break\n }\n case '3': {\n this.setCreditCardType('amex')\n break\n }\n case '6': {\n this.setCreditCardType('discover')\n break\n }\n default: {\n this.setCreditCardType('')\n }\n }\n }\n\n override getCursorPosition() {\n if (this.value) {\n const previousValue = this.previousValue ?? ''\n const unmasked = unmask(this.value)\n const numberValidation = valid.number(unmasked)\n const card = numberValidation.card\n const lengthChange = this.value.length - (previousValue?.length ?? 0)\n const unmaskedChange = unmask(this.value).length - unmask(previousValue).length\n\n if (card) {\n const gaps = card.gaps\n const oldCursor = this.cursorPosition.previous ?? 0\n const oldSeparation = gaps.filter((gap, i) => gap + i < oldCursor).length\n const newSeparation = gaps.filter((gap, i) => gap + i < oldCursor + lengthChange).length\n const newCursor = oldCursor - oldSeparation + newSeparation + unmaskedChange\n return newCursor\n }\n }\n\n return\n }\n\n override mask(value: ValidControlValue = '') {\n const unmasked = unmask(value)\n const numberValidation = valid.number(unmasked)\n const card = numberValidation.card\n\n if (card) {\n const max = card.lengths.includes(16) ? 16 : card.lengths[0]\n const gaps = [...card.gaps, max]\n const newVal = gaps\n .map((gap, i) => unmasked.slice(gaps[i - 1] || 0, gap))\n .filter(Boolean)\n .join(' ')\n\n return newVal\n }\n\n return value\n }\n\n onCreditCardTypeChange: (type: string) => void = () => {}\n\n setCreditCardType(type: string) {\n this.creditCardType = type\n this.onCreditCardTypeChange(type)\n }\n\n override setValue(value = '', options: SetOptions) {\n const umMasked = this.unmask(value)\n super.setValue(umMasked, options)\n this.earlyNumberCheck(umMasked.charAt(0))\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\n\nconst CONTROL_NAME = 'Email'\n\nexport class CreditCardEmailFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your email is invalid.'\n\n override pattern = /^.*$/\n override patternStrict = /^([\\w+.\\-])+@(([\\dA-Za-z-])+\\.)+([\\dA-Za-z]{2,4})+$/\n\n override props = {\n autoComplete: 'email',\n autoCorrect: 'off',\n id: CONTROL_NAME.toLocaleLowerCase(),\n name: CONTROL_NAME.toLocaleLowerCase(),\n placeholder: 'jerry.smith@email.com',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: false, serializable: true })\n }\n\n override blurError(value: string) {\n const match = value.match(this.patternStrict)\n this.updateValidation(match)\n }\n\n override changeError(value: string) {\n if (this.error) {\n this.blurError(value)\n }\n }\n\n private updateValidation(match: RegExpMatchArray | null) {\n if (match) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\n\nexport class NameFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override required = true\n\n constructor(\n private nameLabel: string,\n autoCompleteLabel: string,\n placeHolder: string,\n ) {\n super()\n super.setName(nameLabel)\n this.setSerializeSettings({ sensitive: false, serializable: true })\n this.invalidMessage = `${nameLabel} name is missing.`\n this.props = {\n autoComplete: autoCompleteLabel,\n autoCorrect: 'off',\n id: this.nameLabel,\n name: this.nameLabel,\n placeholder: placeHolder,\n spellCheck: false,\n } as TProps\n }\n\n override blurError(value: string) {\n if (value) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n override changeError(value: string): void {\n this.blurError(value)\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport valid from 'card-validator'\n\nimport { unmask } from '../utils/index.ts'\n\nconst CONTROL_NAME = 'Zip'\n\nexport class CreditCardZipFormControl<TProps extends EmptyObject = EmptyObject> extends FormControlBase<TProps> {\n override invalidMessage = 'Your zip code is invalid.'\n\n override props = {\n autoComplete: 'postal-code',\n autoCorrect: 'off',\n id: CONTROL_NAME.toLocaleLowerCase(),\n name: CONTROL_NAME.toLocaleLowerCase(),\n placeholder: '12345',\n spellCheck: false,\n } as TProps\n\n override required = true\n\n override unmask = unmask\n\n constructor() {\n super()\n super.setName(CONTROL_NAME)\n this.setSerializeSettings({ sensitive: true, serializable: true })\n }\n\n override blurError(value: string) {\n const postalCodeValidation = valid.postalCode(value)\n if (postalCodeValidation.isValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n\n override changeError(value: string) {\n const unmasked = this.unmask(value)\n const match = unmasked.match(this.patternStrict)\n if (match) {\n const postalCodeValidation = valid.postalCode(value)\n if (postalCodeValidation.isPotentiallyValid) {\n this.setErrorAndValidity('', 'VALID')\n } else {\n this.setErrorAndValidity('Your zip code is invalid.', 'INVALID')\n }\n } else {\n this.setErrorAndValidity(this.invalidMessage, 'INVALID')\n }\n }\n}\n","import { FormControl as MuiFormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { FormControl } from '@xyo-network/react-form-group'\nimport { LabeledTextFieldWrapper } from '@xyo-network/react-shared'\nimport React, { ChangeEventHandler, FocusEventHandler, forwardRef, KeyboardEvent } from 'react'\n\nexport interface FormControlTextFieldProps extends StandardTextFieldProps {\n fieldLabel: string\n formControl?: FormControl<StandardTextFieldProps>\n formControlError?: string\n}\n\nexport const FormControlTextField = forwardRef<HTMLDivElement, FormControlTextFieldProps>(\n ({ formControl, formControlError, fieldLabel = '', ...props }, ref) => {\n const { name } = formControl?.props ?? {}\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n formControl?.setValue(event.target.value)\n }\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n formControl?.blurError?.(event.target.value)\n formControl?.setTouched(true)\n }\n\n return (\n <MuiFormControl fullWidth>\n <LabeledTextFieldWrapper label={fieldLabel}>\n <label htmlFor={name}>\n <TextField\n error={!!formControlError}\n helperText={formControlError || ' '}\n fullWidth\n hiddenLabel\n name={name}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n // See - https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682\n // .currentTarget is the div in mui that emits the event, .target is the input element\n // Unfortunately, the type definitions do not let you pass a generic specifically for target, only currentTarget\n const selectionEnd = (event.target as HTMLInputElement).selectionEnd\n if (selectionEnd && formControl) {\n formControl.cursorPosition.previous = selectionEnd\n }\n }}\n ref={ref}\n required={formControl?.required}\n size=\"small\"\n variant=\"filled\"\n {...props}\n />\n </label>\n </LabeledTextFieldWrapper>\n </MuiFormControl>\n )\n },\n)\n\nFormControlTextField.displayName = 'FormControlTextField'\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport { useEffect } from 'react'\n\nimport { useFormGroupWithCreditCardInput } from '../../../../context/index.ts'\nimport { CreditCardCvvFormControl } from '../../../../controls/index.ts'\nimport { useCreditCardFormControl } from '../useCreditCardFormControl.tsx'\n\nexport const useCreditCardCvvFormControl = (\n formControlName?: string,\n cardNumberControlName = 'cardNumber',\n control?: new () => FormControlBase<StandardTextFieldProps>,\n) => {\n const { creditCardFormControl, error, value, inputRef } = useCreditCardFormControl(formControlName, control)\n\n // only use FormGroupContext when name is passed\n const { formGroup } = useFormGroupWithCreditCardInput(!!formControlName)\n\n const creditCardNumberFormControl = formGroup?.getControl?.(cardNumberControlName)\n\n useEffect(() => {\n if (creditCardNumberFormControl) {\n const castControl = creditCardFormControl as CreditCardCvvFormControl\n if (!castControl.setCardNumberFormControl) {\n console.error('cannot setCardNumberFormControl on control because it is not a CreditCardCvvFormControl')\n return\n }\n castControl.setCardNumberFormControl(creditCardNumberFormControl)\n }\n }, [creditCardFormControl, creditCardNumberFormControl])\n\n return { creditCardFormControl, error, inputRef, value }\n}\n","import { FormGroupContextWithPayloadState } from '@xyo-network/react-form-group'\nimport { createContextEx } from '@xyo-network/react-shared'\n\nimport { CreditCardInput } from '../models/index.ts'\n\nexport const FormGroupCreditCardContext = createContextEx<FormGroupContextWithPayloadState<CreditCardInput, CreditCardInput>>()\n","import { Payload } from '@xyo-network/payload-model'\nimport { FormGroup, FormGroupParams } from '@xyo-network/react-form-group'\nimport React, { PropsWithChildren, useMemo } from 'react'\n\nimport { CreditCardInput } from '../models/index.ts'\nimport { FormGroupCreditCardContext } from './FormGroupCreditCardContext.ts'\n\nexport interface FormGroupCreditCardProviderProps<TStorage extends Payload = Payload> extends PropsWithChildren {\n params?: FormGroupParams<TStorage>\n}\n\nexport const FormGroupCreditCardProvider: React.FC<FormGroupCreditCardProviderProps<CreditCardInput>> = ({ children, params, ...props }) => {\n const formGroup = useMemo(() => {\n const formGroup = new FormGroup<CreditCardInput, CreditCardInput>(params)\n return formGroup\n }, [params])\n\n return (\n // eslint-disable-next-line @eslint-react/no-unstable-context-value\n <FormGroupCreditCardContext.Provider value={{ formGroup, provided: true }} {...props}>\n {children}\n </FormGroupCreditCardContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { FormGroupCreditCardContext } from './FormGroupCreditCardContext.ts'\n\nexport const useFormGroupWithCreditCardInput = (required = false) => {\n return useContextEx(FormGroupCreditCardContext, 'FormGroupCreditCard', required)\n}\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase, ValidControlValue } from '@xyo-network/react-form-group'\nimport { useMemo, useRef, useState } from 'react'\n\nimport { useFormGroupWithCreditCardInput } from '../../../context/index.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst StableDefaultArgs: any[] = []\n\nexport const useCreditCardFormControl = (\n formControlName?: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Control?: new (...args: any[]) => FormControlBase<StandardTextFieldProps>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[] = StableDefaultArgs,\n) => {\n const [error, setError] = useState('')\n const [value, setValue] = useState<ValidControlValue>('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n // only use FormGroupContext when name is passed\n const { formGroup } = useFormGroupWithCreditCardInput(!!formControlName)\n\n const creditCardFormControl = useMemo(() => {\n if (Control) {\n const control = new Control(...args)\n control.registerOnErrorChange((newError: string) => setError(newError))\n control.registerOnChange((value: ValidControlValue) => setValue(value))\n\n if (formControlName) formGroup?.registerControl(formControlName, control)\n return control\n }\n }, [Control, args, formControlName, formGroup])\n\n return { creditCardFormControl, error, inputRef, value }\n}\n","import React from 'react'\n\nimport { CreditCardEmailFormControl } from '../../../controls/index.ts'\nimport { WithFormControlProps } from '../WithFormControlProps.ts'\nimport { FormControlTextField } from './FormControlTextField.tsx'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.tsx'\n\nexport const CreditCardEmailWithFormControl: React.FC<WithFormControlProps> = ({\n formControlName = 'emailAddress',\n fieldLabel = 'Email',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardEmailFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} for your purchase`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import React from 'react'\n\nimport { CreditCardExpirationFormControl } from '../../../controls/index.ts'\nimport { WithFormControlProps } from '../WithFormControlProps.ts'\nimport { FormControlTextField } from './FormControlTextField.tsx'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.tsx'\n\nexport const CreditCardExpirationWithFormControl: React.FC<WithFormControlProps> = ({\n formControlName = 'expiration',\n fieldLabel = 'Expiration',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardExpirationFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...expirationProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n inputRef={inputRef}\n formControl={creditCardFormControl}\n fieldLabel={fieldLabel}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} of the card`, autoComplete, autoCorrect, id, name, spellCheck }}\n value={value}\n {...expirationProps}\n {...props}\n />\n )\n}\n","import React, { useMemo } from 'react'\n\nimport { NameFormControl } from '../../../controls/index.ts'\nimport { WithFormControlProps } from '../WithFormControlProps.ts'\nimport { FormControlTextField } from './FormControlTextField.tsx'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.tsx'\n\nexport interface NameWithFormControlProps extends WithFormControlProps {\n autoCompleteLabel: string\n}\n\nexport const NameWithFormControl: React.FC<NameWithFormControlProps> = ({\n autoCompleteLabel,\n fieldLabel = 'Name',\n formControlName,\n placeholder,\n tabIndex,\n ...props\n}) => {\n const args = useMemo(() => [fieldLabel, autoCompleteLabel, placeholder ?? ''], [autoCompleteLabel, fieldLabel, placeholder])\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, NameFormControl, args)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} name on your card`, autoComplete, autoCorrect, id, name, spellCheck, tabIndex }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { InputAdornment } from '@mui/material'\nimport React from 'react'\n\nimport { CreditCardNumberFormControl } from '../../../../controls/index.ts'\nimport { WithFormControlProps } from '../../WithFormControlProps.ts'\nimport { FormControlTextField } from '../FormControlTextField.tsx'\nimport { CreditCardData } from '../Options.ts'\nimport { useCreditCardNumberFormControl } from './use.ts'\n\nexport const CreditCardNumberWithFormControl: React.FC<WithFormControlProps> = ({\n fieldLabel = 'Card Number',\n formControlName = 'cardNumber',\n ...props\n}) => {\n const { creditCardFormControl, error, inputRef, type, value } = useCreditCardNumberFormControl(formControlName, CreditCardNumberFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cardProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputRef={inputRef}\n inputMode={inputMode}\n inputProps={{ 'aria-label': fieldLabel, autoComplete, autoCorrect, id, inputMode, name, spellCheck }}\n InputProps={{\n startAdornment:\n type.length > 0\n ? (\n <InputAdornment position=\"start\">\n <img height=\"30px\" width=\"40px\" src={CreditCardData[type].icon} />\n </InputAdornment>\n )\n : null,\n }}\n value={value}\n {...cardProps}\n {...props}\n />\n )\n}\n","export { default as AmexIcon } from './american-express.svg'\nexport { default as DiscoverIcon } from './discover.svg'\nexport { default as MastercardIcon } from './mastercard.svg'\nexport { default as VisaIcon } from './visa.svg'\n","import { AmexIcon, DiscoverIcon, MastercardIcon, VisaIcon } from '../../img/index.ts'\n\nexport interface CreditCardInfo {\n icon: string\n name: string\n}\n\nexport interface CreditCardOptions {\n amex: CreditCardInfo\n discover: CreditCardInfo\n mastercard: CreditCardInfo\n visa: CreditCardInfo\n}\n\nexport const CreditCardData: CreditCardOptions = {\n amex: { icon: AmexIcon, name: 'American Express' },\n discover: { icon: DiscoverIcon, name: 'Discover' },\n mastercard: { icon: MastercardIcon, name: 'Mastercard' },\n visa: { icon: VisaIcon, name: 'Visa' },\n}\n","import { StandardTextFieldProps } from '@mui/material'\nimport { FormControlBase } from '@xyo-network/react-form-group'\nimport { useEffect, useState } from 'react'\n\nimport { CreditCardNumberFormControl } from '../../../../controls/index.ts'\nimport { CreditCardOptions } from '../Options.ts'\nimport { useCreditCardFormControl } from '../useCreditCardFormControl.tsx'\n\nexport const useCreditCardNumberFormControl = (formControlName?: string, control?: new () => FormControlBase<StandardTextFieldProps>) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, control)\n const [type, setType] = useState('' as keyof CreditCardOptions)\n\n useEffect(() => {\n if (creditCardFormControl) {\n const castControl = creditCardFormControl as CreditCardNumberFormControl<StandardTextFieldProps>\n if (!castControl.onCreditCardTypeChange) {\n console.error('cannot set onCreditCardTypeChange on control because it is not a CreditCardNumberFormControl')\n return\n }\n castControl.onCreditCardTypeChange = (type: string) => setType(type as keyof CreditCardOptions)\n castControl.onCursorChange = (cursor: number | undefined) => {\n if (inputRef.current && cursor) {\n inputRef.current.setSelectionRange(cursor, cursor)\n }\n }\n }\n }, [creditCardFormControl, inputRef])\n\n return { creditCardFormControl, error, inputRef, type, value }\n}\n","import React from 'react'\n\nimport { CreditCardZipFormControl } from '../../../controls/index.ts'\nimport { WithFormControlProps } from '../WithFormControlProps.ts'\nimport { FormControlTextField } from './FormControlTextField.tsx'\nimport { useCreditCardFormControl } from './useCreditCardFormControl.tsx'\n\nexport const CreditCardZipWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'zip', fieldLabel = 'Zip', ...props }) => {\n const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardZipFormControl)\n const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}\n\n return (\n <FormControlTextField\n fieldLabel={fieldLabel}\n formControl={creditCardFormControl}\n formControlError={error}\n inputMode={inputMode}\n inputProps={{ 'aria-label': `${fieldLabel} code for your card`, autoComplete, autoCorrect, id, name, spellCheck }}\n inputRef={inputRef}\n value={value}\n {...cvcProps}\n {...props}\n />\n )\n}\n","import { Stack } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport React, { useState } from 'react'\n\nimport { FormGroupCreditCardProvider, useFormGroupWithCreditCardInput } from '../../context/index.ts'\nimport { validateCreditCardInputs } from '../support/index.ts'\nimport { InputFieldsStack } from './InputFieldsStack.tsx'\nimport { CreditCardFormProps } from './Props.ts'\nimport { useFormStorage } from './useFormStorage.tsx'\n\nexport const CreditCardFormFlexbox: React.FC<CreditCardFormProps> = ({\n ConfirmationButton,\n displayErrors,\n onErrorDuringSubmit,\n onInvalidSubmit,\n onSuccessfulSubmit,\n onValidSubmit,\n ...props\n}) => {\n const { formGroup } = useFormGroupWithCreditCardInput(true)\n const [error, setError] = useState<Error>()\n\n const handleConfirmPayment = async () => {\n try {\n if (!formGroup) {\n throw new Error('formGroup is not defined')\n }\n\n formGroup.validateFields()\n\n const errorSummary = formGroup.errorSummary\n\n if (errorSummary.invalidFields.length > 0) {\n onInvalidSubmit?.(errorSummary)\n }\n\n if (errorSummary.invalidFields.length > 0) return\n\n const formOutput = validateCreditCardInputs(formGroup.values)\n\n await onValidSubmit?.(formOutput)\n\n onSuccessfulSubmit?.()\n } catch (error) {\n onErrorDuringSubmit?.(error as Error)\n if (displayErrors) setError(error as Error)\n }\n }\n\n return (\n <>\n <ErrorRender error={error} />\n <FlexCol sx={{ flexDirection: { md: 'row', xs: 'column' } }} width=\"100%\" gap={2} {...props}>\n <Stack flexDirection=\"column\" sx={{ width: '100%' }} gap={2}>\n <InputFieldsStack />\n {ConfirmationButton\n ? (\n <ConfirmationButton onClick={handleConfirmPayment} variant=\"contained\" sx={{ alignSelf: 'end' }}>\n Confirm Payment\n </ConfirmationButton>\n )\n : null}\n </Stack>\n </FlexCol>\n </>\n )\n}\n\nexport const CreditCardFormFlexboxWithFormGroupProvider: React.FC<CreditCardFormProps> = (props) => {\n const [params, error] = useFormStorage()\n return (\n <FormGroupCreditCardProvider params={params}>\n <ErrorRender error={error} />\n <CreditCardFormFlexbox {...props} />\n </FormGroupCreditCardProvider>\n )\n}\n","export const NameFields = ['firstName', 'lastName'] as const\nexport const NameLabels = ['First', 'Last'] as const\nexport type NameLabel = (typeof NameLabels)[number]\n","import { assertEx } from '@xylabs/assert'\n\nimport { CreditCardInput, CreditCardInputSchema } from '../../models/index.ts'\n\nexport const validateCreditCardInputs = (values: CreditCardInput): CreditCardInput => {\n return {\n cardNumber: assertEx(values.cardNumber, () => 'card number is not a string') as string,\n cvc: assertEx(values.cvc, () => 'card cvc is not a string') as string,\n emailAddress: assertEx(values.emailAddress, () => 'emailAddress is not a string') as string,\n expiration: assertEx(values.expiration, () => 'card expiration is not a string') as string,\n firstName: assertEx(values.firstName, () => 'first name is not a string') as string,\n lastName: assertEx(values.lastName, () => 'last name is not a string') as string,\n schema: CreditCardInputSchema,\n timestamp: values.timestamp,\n zip: assertEx(values.zip, () => 'zip is not a string') as string,\n }\n}\n","import { isPayloadOfSchemaTypeWithMeta, Payload } from '@xyo-network/payload-model'\n\nexport const CreditCardInputSchema = 'network.xyo.credit.card.input' as const\nexport type CreditCardInputSchema = typeof CreditCardInputSchema\n\nexport type CreditCardInputFields = {\n cardNumber: string\n cvc: string\n emailAddress: string\n expiration: string\n firstName: string\n lastName: string\n timestamp: number\n zip: string\n}\n\nexport type CreditCardInput = Payload<CreditCardInputFields, CreditCardInputSchema>\n\nexport const isCreditCardInput = isPayloadOfSchemaTypeWithMeta<CreditCardInput>(CreditCardInputSchema)\n","import { Stack, StackProps } from '@mui/material'\nimport React, { PropsWithChildren } from 'react'\n\nimport {\n CreditCardCvvWithFormControl,\n CreditCardEmailWithFormControl,\n CreditCardExpirationWithFormControl,\n CreditCardNumberWithFormControl,\n CreditCardZipWithFormControl,\n NameWithFormControl,\n} from '../controls/index.ts'\n\nexport interface InputFieldsStackProps extends StackProps, PropsWithChildren {}\n\nexport const InputFieldsStack: React.FC<InputFieldsStackProps> = (props) => {\n const { sx } = props\n return (\n <>\n <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>\n <NameWithFormControl autoCompleteLabel=\"given-name\" fieldLabel=\"First\" formControlName=\"firstName\" placeholder=\"Jerry\" />\n <NameWithFormControl autoCompleteLabel=\"family-name\" fieldLabel=\"Last\" formControlName=\"lastName\" placeholder=\"Smith\" />\n </Stack>\n <Stack gap={2} sx={{ flexDirection: { lg: 'row', xs: 'column' }, ...sx }} {...props}>\n <Stack width={{ lg: '50%', xs: '100%' }}>\n <CreditCardNumberWithFormControl />\n </Stack>\n <Stack direction={{ lg: 'row', xs: 'column' }} gap={2} width={{ lg: '50%', xs: '100%' }}>\n <CreditCardCvvWithFormControl />\n <CreditCardExpirationWithFormControl />\n </Stack>\n </Stack>\n <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>\n <Stack width={{ md: '25%', xs: '100%' }}>\n <CreditCardZipWithFormControl />\n </Stack>\n <Stack width={{ md: '75%', xs: '100%' }}>\n <CreditCardEmailWithFormControl />\n </Stack>\n </Stack>\n </>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StorageArchivist, StorageArchivistConfigSchema } from '@xyo-network/archivist-storage'\nimport { ArchivistFormGroupStorage, FormGroupParams } from '@xyo-network/react-form-group'\n\nimport { CreditCardInput } from '../../models/index.ts'\n\nconst StorageNameSpace = 'credit-card-fields'\n\nconst calculateTTL = (months = 6) => {\n const MS_PER_DAY = 24 * 60 * 60 * 1000\n const DAYS_PER_MONTH = 30.44\n return months * DAYS_PER_MONTH * MS_PER_DAY\n}\n\nexport const useFormStorage = () => {\n return usePromise(async () => {\n const localStorageArchivist = await StorageArchivist.create({\n account: 'random',\n config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'local' },\n })\n const sessionStorageArchivist = await StorageArchivist.create({\n account: 'random',\n config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'session' },\n })\n\n const storage = {\n sensitive: new ArchivistFormGroupStorage(sessionStorageArchivist),\n storage: new ArchivistFormGroupStorage(localStorageArchivist),\n }\n\n return { serialize: true, storage, ttlStorage: calculateTTL() } as FormGroupParams<CreditCardInput>\n }, [])\n}\n"],"mappings":"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","names":["import_react","unmask","value","replaceAll","CONTROL_NAME","CreditCardCvvFormControl","FormControlBase","invalidMessage","pattern","patternStrict","props","autoComplete","autoCorrect","id","inputMode","name","placeholder","spellCheck","required","unmask","_cardNumberFormControl","undefined","constructor","setName","setSerializeSettings","sensitive","serializable","cardNumberFormControl","assertEx","blurError","value","num","max","getCardNumberCvcMax","cvvValidation","valid","cvv","isValid","setError","setStatus","changeError","unmasked","match","isPotentiallyValid","setCardNumberFormControl","numberValidation","number","card","code","size","import_assert","import_react_form_group","import_card_validator","CONTROL_NAME","CreditCardExpirationFormControl","FormControlBase","invalidMessage","pattern","patternStrict","props","autoComplete","autoCorrect","id","inputMode","name","placeholder","spellCheck","required","unmask","_cardNumberFormControl","undefined","constructor","setName","setSerializeSettings","sensitive","serializable","cardNumberFormControl","assertEx","rawValue","value","blurError","unmasked","expirationValid","valid","expirationDate","length","setErrorAndValidity","isValid","changeError","isPotentiallyValid","mask","test","makeMask","separator","limit","output","i","push","join","import_react_form_group","import_card_validator","CONTROL_NAME","CreditCardNumberFormControl","FormControlBase","creditCardType","invalidMessage","pattern","patternStrict","props","autoComplete","autoCorrect","id","inputMode","name","placeholder","spellCheck","required","unmask","constructor","setName","setSerializeSettings","sensitive","serializable","blurError","value","unmasked","numberValidation","valid","number","isValid","setErrorAndValidity","changeError","match","isPotentiallyValid","earlyNumberCheck","setCreditCardType","getCursorPosition","previousValue","card","lengthChange","length","unmaskedChange","gaps","oldCursor","cursorPosition","previous","oldSeparation","filter","gap","i","newSeparation","newCursor","mask","max","lengths","includes","newVal","map","slice","Boolean","join","onCreditCardTypeChange","type","setValue","options","umMasked","charAt","import_react_form_group","CONTROL_NAME","CreditCardEmailFormControl","FormControlBase","invalidMessage","pattern","patternStrict","props","autoComplete","autoCorrect","id","toLocaleLowerCase","name","placeholder","spellCheck","required","constructor","setName","setSerializeSettings","sensitive","serializable","blurError","value","match","updateValidation","changeError","error","setErrorAndValidity","import_react_form_group","NameFormControl","FormControlBase","required","constructor","nameLabel","autoCompleteLabel","placeHolder","setName","setSerializeSettings","sensitive","serializable","invalidMessage","props","autoComplete","autoCorrect","id","name","placeholder","spellCheck","blurError","value","setErrorAndValidity","changeError","import_react_form_group","import_card_validator","CONTROL_NAME","CreditCardZipFormControl","FormControlBase","invalidMessage","props","autoComplete","autoCorrect","id","toLocaleLowerCase","name","placeholder","spellCheck","required","unmask","constructor","setName","setSerializeSettings","sensitive","serializable","blurError","value","postalCodeValidation","valid","postalCode","isValid","setErrorAndValidity","changeError","unmasked","match","patternStrict","isPotentiallyValid","FormControlTextField","forwardRef","formControl","formControlError","fieldLabel","props","ref","name","handleChange","event","setValue","target","value","handleBlur","blurError","setTouched","React","MuiFormControl","fullWidth","LabeledTextFieldWrapper","label","htmlFor","TextField","error","helperText","hiddenLabel","onBlur","onChange","onKeyDown","selectionEnd","cursorPosition","previous","required","size","variant","displayName","import_react","import_react_shared","FormGroupCreditCardContext","createContextEx","import_react_form_group","import_react","FormGroupCreditCardProvider","children","params","props","formGroup","useMemo","FormGroup","React","FormGroupCreditCardContext","Provider","value","provided","import_react_shared","useFormGroupWithCreditCardInput","required","useContextEx","FormGroupCreditCardContext","import_react","StableDefaultArgs","useCreditCardFormControl","formControlName","Control","args","error","setError","useState","value","setValue","inputRef","useRef","formGroup","useFormGroupWithCreditCardInput","creditCardFormControl","useMemo","control","registerOnErrorChange","newError","registerOnChange","registerControl","useCreditCardCvvFormControl","formControlName","cardNumberControlName","control","creditCardFormControl","error","value","inputRef","useCreditCardFormControl","formGroup","useFormGroupWithCreditCardInput","creditCardNumberFormControl","getControl","useEffect","castControl","setCardNumberFormControl","console","CreditCardCvvWithFormControl","formControlName","fieldLabel","props","creditCardFormControl","error","inputRef","value","useCreditCardCvvFormControl","undefined","CreditCardCvvFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","cvcProps","React","FormControlTextField","formControl","formControlError","inputProps","import_react","CreditCardEmailWithFormControl","formControlName","fieldLabel","props","creditCardFormControl","error","inputRef","value","useCreditCardFormControl","CreditCardEmailFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","cvcProps","React","FormControlTextField","formControl","formControlError","inputProps","import_react","CreditCardExpirationWithFormControl","formControlName","fieldLabel","props","creditCardFormControl","error","inputRef","value","useCreditCardFormControl","CreditCardExpirationFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","expirationProps","React","FormControlTextField","formControl","formControlError","inputProps","import_react","NameWithFormControl","autoCompleteLabel","fieldLabel","formControlName","placeholder","tabIndex","props","args","useMemo","creditCardFormControl","error","inputRef","value","useCreditCardFormControl","NameFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","cvcProps","React","FormControlTextField","formControl","formControlError","inputProps","import_material","import_react","CreditCardData","amex","icon","AmexIcon","name","discover","DiscoverIcon","mastercard","MastercardIcon","visa","VisaIcon","import_react","useCreditCardNumberFormControl","formControlName","control","creditCardFormControl","error","inputRef","value","useCreditCardFormControl","type","setType","useState","useEffect","castControl","onCreditCardTypeChange","console","onCursorChange","cursor","current","setSelectionRange","CreditCardNumberWithFormControl","fieldLabel","formControlName","props","creditCardFormControl","error","inputRef","type","value","useCreditCardNumberFormControl","CreditCardNumberFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","cardProps","React","FormControlTextField","formControl","formControlError","inputProps","InputProps","startAdornment","length","InputAdornment","position","img","height","width","src","CreditCardData","icon","import_react","CreditCardZipWithFormControl","formControlName","fieldLabel","props","creditCardFormControl","error","inputRef","value","useCreditCardFormControl","CreditCardZipFormControl","autoComplete","autoCorrect","id","inputMode","name","spellCheck","cvcProps","React","FormControlTextField","formControl","formControlError","inputProps","import_material","import_react","NameFields","NameLabels","import_assert","CreditCardInputSchema","isCreditCardInput","isPayloadOfSchemaTypeWithMeta","validateCreditCardInputs","values","cardNumber","assertEx","cvc","emailAddress","expiration","firstName","lastName","schema","CreditCardInputSchema","timestamp","zip","import_material","import_react","InputFieldsStack","props","sx","React","Stack","gap","flexDirection","md","xs","NameWithFormControl","autoCompleteLabel","fieldLabel","formControlName","placeholder","lg","width","CreditCardNumberWithFormControl","direction","CreditCardCvvWithFormControl","CreditCardExpirationWithFormControl","CreditCardZipWithFormControl","CreditCardEmailWithFormControl","import_react_form_group","StorageNameSpace","calculateTTL","months","MS_PER_DAY","DAYS_PER_MONTH","useFormStorage","usePromise","localStorageArchivist","StorageArchivist","create","account","config","namespace","schema","StorageArchivistConfigSchema","type","sessionStorageArchivist","storage","sensitive","ArchivistFormGroupStorage","serialize","ttlStorage","CreditCardFormFlexbox","ConfirmationButton","displayErrors","onErrorDuringSubmit","onInvalidSubmit","onSuccessfulSubmit","onValidSubmit","props","formGroup","useFormGroupWithCreditCardInput","error","setError","useState","handleConfirmPayment","Error","validateFields","errorSummary","invalidFields","length","formOutput","validateCreditCardInputs","values","React","ErrorRender","FlexCol","sx","flexDirection","md","xs","width","gap","Stack","InputFieldsStack","onClick","variant","alignSelf","CreditCardFormFlexboxWithFormGroupProvider","params","useFormStorage","FormGroupCreditCardProvider"]}
@@ -1,6 +1,6 @@
1
- export * from './components/index.js';
2
- export * from './context/index.js';
3
- export * from './controls/index.js';
4
- export * from './models/index.js';
5
- export * from './utils/index.js';
1
+ export * from './components/index.ts';
2
+ export * from './context/index.ts';
3
+ export * from './controls/index.ts';
4
+ export * from './models/index.ts';
5
+ export * from './utils/index.ts';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export * from './components/index.js';
2
- export * from './context/index.js';
3
- export * from './controls/index.js';
4
- export * from './models/index.js';
5
- export * from './utils/index.js';
1
+ export * from './components/index.ts';
2
+ export * from './context/index.ts';
3
+ export * from './controls/index.ts';
4
+ export * from './models/index.ts';
5
+ export * from './utils/index.ts';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export * from './components/index.js';
2
- export * from './context/index.js';
3
- export * from './controls/index.js';
4
- export * from './models/index.js';
5
- export * from './utils/index.js';
1
+ export * from './components/index.ts';
2
+ export * from './context/index.ts';
3
+ export * from './controls/index.ts';
4
+ export * from './models/index.ts';
5
+ export * from './utils/index.ts';
6
6
  //# sourceMappingURL=index.d.ts.map