@evervault/evervault-react-native 0.3.0 → 0.4.3

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 (134) hide show
  1. package/README.md +39 -50
  2. package/{lib → dist}/commonjs/components/Card/Card.js +2 -2
  3. package/dist/commonjs/components/Card/Card.js.map +1 -0
  4. package/{lib → dist}/commonjs/components/Card/CardCVC.js +7 -1
  5. package/dist/commonjs/components/Card/CardCVC.js.map +1 -0
  6. package/{lib → dist}/commonjs/components/Card/CardExpiry.js +13 -3
  7. package/dist/commonjs/components/Card/CardExpiry.js.map +1 -0
  8. package/{lib → dist}/commonjs/components/Card/CardHolder.js +8 -1
  9. package/dist/commonjs/components/Card/CardHolder.js.map +1 -0
  10. package/{lib → dist}/commonjs/components/Card/CardNumber.js +5 -0
  11. package/dist/commonjs/components/Card/CardNumber.js.map +1 -0
  12. package/{lib → dist}/commonjs/components/Card/context.js.map +1 -1
  13. package/{lib → dist}/commonjs/components/Card/index.js +0 -7
  14. package/dist/commonjs/components/Card/index.js.map +1 -0
  15. package/dist/commonjs/components/Card/types.js +2 -0
  16. package/{lib → dist}/commonjs/components/Card/types.js.map +1 -1
  17. package/{lib → dist}/commonjs/components/Card/utilities.js +2 -2
  18. package/dist/commonjs/components/Card/utilities.js.map +1 -0
  19. package/dist/commonjs/components/useForm.js +116 -0
  20. package/dist/commonjs/components/useForm.js.map +1 -0
  21. package/{lib → dist}/commonjs/index.js +1 -1
  22. package/{lib → dist}/commonjs/index.js.map +1 -1
  23. package/{lib → dist}/commonjs/native.js.map +1 -1
  24. package/{lib → dist}/commonjs/sdk.js +8 -2
  25. package/dist/commonjs/sdk.js.map +1 -0
  26. package/{lib → dist}/module/components/Card/Card.js +1 -1
  27. package/{lib → dist}/module/components/Card/Card.js.map +1 -1
  28. package/{lib → dist}/module/components/Card/CardCVC.js +6 -0
  29. package/dist/module/components/Card/CardCVC.js.map +1 -0
  30. package/{lib → dist}/module/components/Card/CardExpiry.js +13 -3
  31. package/dist/module/components/Card/CardExpiry.js.map +1 -0
  32. package/{lib → dist}/module/components/Card/CardHolder.js +8 -1
  33. package/dist/module/components/Card/CardHolder.js.map +1 -0
  34. package/{lib → dist}/module/components/Card/CardNumber.js +5 -0
  35. package/dist/module/components/Card/CardNumber.js.map +1 -0
  36. package/{lib → dist}/module/components/Card/context.js.map +1 -1
  37. package/dist/module/components/Card/index.js +2 -0
  38. package/dist/module/components/Card/index.js.map +1 -0
  39. package/dist/module/components/Card/types.js +2 -0
  40. package/{lib → dist}/module/components/Card/types.js.map +1 -1
  41. package/{lib → dist}/module/components/Card/utilities.js +2 -2
  42. package/dist/module/components/Card/utilities.js.map +1 -0
  43. package/dist/module/components/useForm.js +110 -0
  44. package/dist/module/components/useForm.js.map +1 -0
  45. package/dist/module/index.js +3 -0
  46. package/{lib → dist}/module/index.js.map +1 -1
  47. package/{lib → dist}/module/native.js.map +1 -1
  48. package/{lib → dist}/module/sdk.js +10 -4
  49. package/dist/module/sdk.js.map +1 -0
  50. package/{lib → dist}/typescript/src/components/Card/Card.d.ts +1 -2
  51. package/dist/typescript/src/components/Card/Card.d.ts.map +1 -0
  52. package/{lib → dist}/typescript/src/components/Card/CardCVC.d.ts.map +1 -1
  53. package/{lib → dist}/typescript/src/components/Card/CardExpiry.d.ts +1 -1
  54. package/{lib → dist}/typescript/src/components/Card/CardExpiry.d.ts.map +1 -1
  55. package/{lib → dist}/typescript/src/components/Card/CardHolder.d.ts +1 -1
  56. package/{lib → dist}/typescript/src/components/Card/CardHolder.d.ts.map +1 -1
  57. package/{lib → dist}/typescript/src/components/Card/CardNumber.d.ts.map +1 -1
  58. package/{lib → dist}/typescript/src/components/Card/context.d.ts +2 -3
  59. package/dist/typescript/src/components/Card/context.d.ts.map +1 -0
  60. package/dist/typescript/src/components/Card/index.d.ts +2 -0
  61. package/{lib → dist}/typescript/src/components/Card/index.d.ts.map +1 -1
  62. package/dist/typescript/src/components/Card/types.d.ts +35 -0
  63. package/dist/typescript/src/components/Card/types.d.ts.map +1 -0
  64. package/{lib → dist}/typescript/src/components/Card/utilities.d.ts +2 -3
  65. package/dist/typescript/src/components/Card/utilities.d.ts.map +1 -0
  66. package/dist/typescript/src/components/useForm.d.ts +22 -0
  67. package/dist/typescript/src/components/useForm.d.ts.map +1 -0
  68. package/dist/typescript/src/index.d.ts +4 -0
  69. package/dist/typescript/src/index.d.ts.map +1 -0
  70. package/{lib → dist}/typescript/src/native.d.ts.map +1 -1
  71. package/{lib → dist}/typescript/src/sdk.d.ts.map +1 -1
  72. package/package.json +16 -22
  73. package/src/components/Card/Card.tsx +2 -3
  74. package/src/components/Card/CardCVC.tsx +7 -1
  75. package/src/components/Card/CardExpiry.tsx +11 -2
  76. package/src/components/Card/CardHolder.tsx +7 -0
  77. package/src/components/Card/CardNumber.tsx +5 -0
  78. package/src/components/Card/context.tsx +7 -8
  79. package/src/components/Card/index.ts +0 -1
  80. package/src/components/Card/types.ts +40 -3
  81. package/src/components/Card/utilities.ts +4 -6
  82. package/src/components/useForm.tsx +172 -0
  83. package/src/index.tsx +9 -2
  84. package/src/native.ts +7 -7
  85. package/src/sdk.ts +12 -4
  86. package/lib/commonjs/components/Card/Card.js.map +0 -1
  87. package/lib/commonjs/components/Card/CardCVC.js.map +0 -1
  88. package/lib/commonjs/components/Card/CardExpiry.js.map +0 -1
  89. package/lib/commonjs/components/Card/CardHolder.js.map +0 -1
  90. package/lib/commonjs/components/Card/CardNumber.js.map +0 -1
  91. package/lib/commonjs/components/Card/index.js.map +0 -1
  92. package/lib/commonjs/components/Card/types.js +0 -6
  93. package/lib/commonjs/components/Card/utilities.js.map +0 -1
  94. package/lib/commonjs/components/Common/Error.js +0 -2
  95. package/lib/commonjs/components/Common/Error.js.map +0 -1
  96. package/lib/commonjs/components/index.js +0 -3
  97. package/lib/commonjs/components/index.js.map +0 -1
  98. package/lib/commonjs/sdk.js.map +0 -1
  99. package/lib/module/components/Card/CardCVC.js.map +0 -1
  100. package/lib/module/components/Card/CardExpiry.js.map +0 -1
  101. package/lib/module/components/Card/CardHolder.js.map +0 -1
  102. package/lib/module/components/Card/CardNumber.js.map +0 -1
  103. package/lib/module/components/Card/index.js +0 -3
  104. package/lib/module/components/Card/index.js.map +0 -1
  105. package/lib/module/components/Card/types.js +0 -2
  106. package/lib/module/components/Card/utilities.js.map +0 -1
  107. package/lib/module/components/Common/Error.js +0 -2
  108. package/lib/module/components/Common/Error.js.map +0 -1
  109. package/lib/module/components/index.js +0 -2
  110. package/lib/module/components/index.js.map +0 -1
  111. package/lib/module/index.js +0 -3
  112. package/lib/module/sdk.js.map +0 -1
  113. package/lib/typescript/src/components/Card/Card.d.ts.map +0 -1
  114. package/lib/typescript/src/components/Card/context.d.ts.map +0 -1
  115. package/lib/typescript/src/components/Card/index.d.ts +0 -3
  116. package/lib/typescript/src/components/Card/types.d.ts +0 -13
  117. package/lib/typescript/src/components/Card/types.d.ts.map +0 -1
  118. package/lib/typescript/src/components/Card/utilities.d.ts.map +0 -1
  119. package/lib/typescript/src/components/Common/Error.d.ts +0 -1
  120. package/lib/typescript/src/components/Common/Error.d.ts.map +0 -1
  121. package/lib/typescript/src/components/index.d.ts +0 -1
  122. package/lib/typescript/src/components/index.d.ts.map +0 -1
  123. package/lib/typescript/src/index.d.ts +0 -4
  124. package/lib/typescript/src/index.d.ts.map +0 -1
  125. package/src/components/Common/Error.tsx +0 -0
  126. package/src/components/index.ts +0 -1
  127. /package/{lib → dist}/commonjs/components/Card/context.js +0 -0
  128. /package/{lib → dist}/commonjs/native.js +0 -0
  129. /package/{lib → dist}/module/components/Card/context.js +0 -0
  130. /package/{lib → dist}/module/native.js +0 -0
  131. /package/{lib → dist}/typescript/src/components/Card/CardCVC.d.ts +0 -0
  132. /package/{lib → dist}/typescript/src/components/Card/CardNumber.d.ts +0 -0
  133. /package/{lib → dist}/typescript/src/native.d.ts +0 -0
  134. /package/{lib → dist}/typescript/src/sdk.d.ts +0 -0
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # react-native-evervault-sdk
2
2
 
3
+ ## [Documentation](https://docs.evervault.com/sdks/react-native)
4
+ Please see our documentation site for a full guide and reference.
3
5
 
4
6
  ## Installation
5
7
 
@@ -12,65 +14,52 @@ yarn add @evervault/evervault-react-native
12
14
  ```
13
15
 
14
16
  ## Usage
15
- ```typescript
16
- // .tsx
17
- import { init } from '@evervault/evervault-react-native';
17
+ ```tsx
18
+ import { init, Card, type CardPayload } from "@evervault/evervault-react-native"
18
19
 
19
-
20
- export default function Component() {
21
- const [cardData, setCardData] = useState<CardPayload | null>(null);
20
+ export default function App() {
21
+ const [cardData, setCardData] = useState<CardPayload | undefined>(undefined);
22
22
 
23
23
  useEffect(() => {
24
- async function initEvervault() {
24
+ async function setupEvervault() {
25
25
  try {
26
- await init(
27
- process.env.EV_TEAM_UUID as string,
28
- process.env.EV_APP_UUID as string
29
- );
30
- } catch (error) {
31
- console.error(error);
26
+ await init(process.env.EXPO_PUBLIC_EV_TEAM_UUID, process.env.EXPO_PUBLIC_EV_APP_UUID);
27
+ } catch (err) {
28
+ throw new Error("Failed to initialize Evervault", err);
32
29
  }
33
30
  }
34
- initEvervault();
31
+ setupEvervault();
35
32
  }, []);
36
33
 
37
34
  return (
38
- <Card onChange={setCardData} onComplete={() => console.log("Form Complete!")} style={{ gap: 24 }}>
39
- <Card.Number placeholder="4242 4242 4242 4242" style={{ padding: 24 }}/>
40
- <Card.CVC placeholder="123" />
41
- <Card.Holder placeholder="Mark Doyle" />
42
- </Card>
35
+ <ScrollView contentContainerStyle={styles.container}>
36
+ <Text style={styles.title}>evervault react native</Text>
37
+ <Card
38
+ onChange={setCardData}
39
+ onComplete={(payload) => console.log("Card Complete!", payload)}
40
+ style={styles.card}
41
+ >
42
+ <Text>Card Number</Text>
43
+ <Card.Number
44
+ placeholder="4242 4242 4242 4242"
45
+ style={styles.input}
46
+ />
47
+ <Card.Expiry
48
+ placeholder="MM / YY"
49
+ style={styles.input}
50
+ />
51
+ <Card.Holder
52
+ placeholder="John Doe"
53
+ style={styles.input}
54
+ />
55
+ <Card.CVC
56
+ placeholder="523"
57
+ style={styles.input}
58
+ />
59
+ </Card>
60
+ <Text style={styles.details}>{JSON.stringify(cardData, null, 2)}</Text>
61
+ <StatusBar style="auto" />
62
+ </ScrollView>
43
63
  );
44
64
  }
45
65
  ```
46
-
47
- ## Reference
48
- ### `init(teamUuid, appUuid)`
49
-
50
- Initialize the Evervault SDK, this must be called before `encrypt` to set your Apps keys on the device.
51
-
52
- ### Options
53
-
54
- | Type | Type | Required |
55
- | -------- | ------ | -------- |
56
- | teamUuid | string | yes |
57
- | appUuid | string | yes |
58
-
59
- ### Returns
60
-
61
- `Promise<void>`
62
-
63
- ### `encrypt(data)`
64
- Encrypts data using [Evervault Encryption](https://docs.evervault.com/security/evervault-encryption).
65
-
66
- To encrypt strings using the React Native SDK, simply pass a String or an Object into the `encrypt()` function.
67
-
68
- ### Options
69
-
70
- | Type | Type | Required |
71
- | ---- | ----------------------------- | -------- |
72
- | data | String, Number, Object, Array | yes |
73
-
74
- ### Returns
75
-
76
- `Promise<string>`
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Card = void 0;
7
7
  var _cardValidator = require("@evervault/card-validator");
8
8
  var _react = require("react");
9
- var _shared = require("shared");
9
+ var _useForm = require("../useForm");
10
10
  var _utilities = require("./utilities");
11
11
  var _CardNumber = require("./CardNumber");
12
12
  var _context = require("./context");
@@ -24,7 +24,7 @@ function Card({
24
24
  style
25
25
  }) {
26
26
  const [registeredFields, setRegisteredFields] = (0, _react.useState)(new Set());
27
- const form = (0, _shared.useForm)({
27
+ const form = (0, _useForm.useForm)({
28
28
  initialValues: initialValue ?? {
29
29
  cvc: '',
30
30
  expiry: '',
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_cardValidator","require","_react","_useForm","_utilities","_CardNumber","_context","_sdk","_CardCVC","_CardHolder","_CardExpiry","_reactNative","Card","initialValue","config","children","onChange","onComplete","style","registeredFields","setRegisteredFields","useState","Set","form","useForm","initialValues","cvc","expiry","number","name","validate","values","has","undefined","length","cardValidation","validateNumber","isValid","isAcceptedBrand","acceptedBrands","expiryValidation","validateExpiry","cvcValidation","validateCVC","formState","triggerChange","cardData","changePayload","encrypt","Array","from","useEffect","getCardData","isComplete","React","createElement","CardContext","Provider","value","register","View","CardNamespace","exports","Object","assign","Number","CardNumber","CVC","CardCVC","Holder","CardHolder","Expiry","CardExpiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactNativeMaskedText = require("react-native-masked-text");
10
10
  var _context = require("./context");
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  const CardCVC = ({
14
14
  style,
15
15
  disabled,
@@ -30,6 +30,11 @@ const CardCVC = ({
30
30
  } = context.register('cvc');
31
31
  (0, _react.useEffect)(() => {
32
32
  context.setRegisteredFields(prev => new Set(prev).add('cvc'));
33
+ return () => context.setRegisteredFields(prev => {
34
+ const next = new Set(prev);
35
+ next.delete('cvc');
36
+ return next;
37
+ });
33
38
  // eslint-disable-next-line react-hooks/exhaustive-deps
34
39
  }, []);
35
40
  return /*#__PURE__*/_react.default.createElement(_reactNativeMaskedText.TextInputMask, {
@@ -45,6 +50,7 @@ const CardCVC = ({
45
50
  selectTextOnFocus: disabled,
46
51
  onBlur: onBlur,
47
52
  placeholder: placeholder,
53
+ inputMode: "numeric",
48
54
  autoComplete: "cc-csc",
49
55
  readOnly: readOnly
50
56
  });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_cardValidator","require","_react","_interopRequireWildcard","_reactNativeMaskedText","_context","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CardCVC","style","disabled","placeholder","readOnly","context","useCardContext","mask","useMemo","type","validateNumber","values","number","brand","onChange","onBlur","register","useEffect","setRegisteredFields","prev","Set","add","next","delete","createElement","TextInputMask","options","value","cvc","onChangeText","id","editable","selectTextOnFocus","inputMode","autoComplete","exports"],"sourceRoot":"../../../../src","sources":["components/Card/CardCVC.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,8 @@ var _react = require("react");
10
10
  function CardExpiry({
11
11
  disabled,
12
12
  placeholder,
13
- readOnly
13
+ readOnly,
14
+ style
14
15
  }) {
15
16
  const context = (0, _context.useCardContext)();
16
17
  const {
@@ -19,20 +20,29 @@ function CardExpiry({
19
20
  } = context.register('expiry');
20
21
  (0, _react.useEffect)(() => {
21
22
  context.setRegisteredFields(prev => new Set(prev).add('expiry'));
23
+ return () => context.setRegisteredFields(prev => {
24
+ const next = new Set(prev);
25
+ next.delete('expiry');
26
+ return next;
27
+ });
22
28
  // eslint-disable-next-line react-hooks/exhaustive-deps
23
29
  }, []);
24
30
  return /*#__PURE__*/React.createElement(_reactNativeMaskedText.TextInputMask, {
31
+ style: style,
25
32
  type: "datetime",
26
33
  value: context.values.expiry,
27
34
  editable: disabled,
28
- selectTextOnFocus: disabled,
29
- onChangeText: onChange,
35
+ selectTextOnFocus: disabled
36
+ // store the expiry as MMYY not MM / YY
37
+ ,
38
+ onChangeText: rawExpiry => onChange(rawExpiry.replace(' / ', '')),
30
39
  options: {
31
40
  format: '99 / 99'
32
41
  },
33
42
  id: "expiry",
34
43
  onBlur: onBlur,
35
44
  placeholder: placeholder ?? 'MM / YY',
45
+ inputMode: "numeric",
36
46
  autoComplete: "cc-exp",
37
47
  readOnly: readOnly
38
48
  });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeMaskedText","require","_context","_react","CardExpiry","disabled","placeholder","readOnly","style","context","useCardContext","onBlur","onChange","register","useEffect","setRegisteredFields","prev","Set","add","next","delete","React","createElement","TextInputMask","type","value","values","expiry","editable","selectTextOnFocus","onChangeText","rawExpiry","replace","options","format","id","inputMode","autoComplete"],"sourceRoot":"../../../../src","sources":["components/Card/CardExpiry.tsx"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAKO,SAASG,UAAUA,CAAC;EACzBC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC;AACe,CAAC,EAAE;EAClB,MAAMC,OAAO,GAAG,IAAAC,uBAAc,EAAC,CAAC;EAEhC,MAAM;IAAEC,MAAM;IAAEC;EAAS,CAAC,GAAGH,OAAO,CAACI,QAAQ,CAAC,QAAQ,CAAC;EAEvD,IAAAC,gBAAS,EAAC,MAAM;IACdL,OAAO,CAACM,mBAAmB,CAAEC,IAAI,IAAK,IAAIC,GAAG,CAACD,IAAI,CAAC,CAACE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,MAAMT,OAAO,CAACM,mBAAmB,CAAEC,IAAI,IAAK;MACjD,MAAMG,IAAI,GAAG,IAAIF,GAAG,CAACD,IAAI,CAAC;MAC1BG,IAAI,CAACC,MAAM,CAAC,QAAQ,CAAC;MACrB,OAAOD,IAAI;IACb,CAAC,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEE,KAAA,CAAAC,aAAA,CAACtB,sBAAA,CAAAuB,aAAa;IACZf,KAAK,EAAEA,KAAM;IACbgB,IAAI,EAAC,UAAU;IACfC,KAAK,EAAEhB,OAAO,CAACiB,MAAM,CAACC,MAAO;IAC7BC,QAAQ,EAAEvB,QAAS;IACnBwB,iBAAiB,EAAExB;IACnB;IAAA;IACAyB,YAAY,EAAGC,SAAS,IAAKnB,QAAQ,CAACmB,SAAS,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAE;IACpEC,OAAO,EAAE;MACPC,MAAM,EAAE;IACV,CAAE;IACFC,EAAE,EAAC,QAAQ;IACXxB,MAAM,EAAEA,MAAO;IACfL,WAAW,EAAEA,WAAW,IAAI,SAAU;IACtC8B,SAAS,EAAC,SAAS;IACnBC,YAAY,EAAC,QAAQ;IACrB9B,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAEN","ignoreList":[]}
@@ -11,7 +11,8 @@ function CardHolder({
11
11
  autoFocus,
12
12
  disabled,
13
13
  placeholder,
14
- readOnly
14
+ readOnly,
15
+ style
15
16
  }) {
16
17
  const context = (0, _context.useCardContext)();
17
18
  const {
@@ -20,10 +21,16 @@ function CardHolder({
20
21
  } = context.register('name');
21
22
  (0, _react.useEffect)(() => {
22
23
  context.setRegisteredFields(prev => new Set(prev).add('name'));
24
+ return () => context.setRegisteredFields(prev => {
25
+ const next = new Set(prev);
26
+ next.delete('name');
27
+ return next;
28
+ });
23
29
  // eslint-disable-next-line react-hooks/exhaustive-deps
24
30
  }, []);
25
31
  return /*#__PURE__*/React.createElement(_reactNative.TextInput, {
26
32
  id: "name",
33
+ style: style,
27
34
  value: context.values.name,
28
35
  readOnly: readOnly,
29
36
  onBlur: onBlur,
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_context","CardHolder","autoFocus","disabled","placeholder","readOnly","style","context","useCardContext","onBlur","onChange","register","useEffect","setRegisteredFields","prev","Set","add","next","delete","React","createElement","TextInput","id","value","values","name","editable","selectTextOnFocus","autoComplete","onChangeText","v"],"sourceRoot":"../../../../src","sources":["components/Card/CardHolder.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAOO,SAASG,UAAUA,CAAC;EACzBC,SAAS;EACTC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC;AACe,CAAC,EAAE;EAClB,MAAMC,OAAO,GAAG,IAAAC,uBAAc,EAAC,CAAC;EAEhC,MAAM;IAAEC,MAAM;IAAEC;EAAS,CAAC,GAAGH,OAAO,CAACI,QAAQ,CAAC,MAAM,CAAC;EAErD,IAAAC,gBAAS,EAAC,MAAM;IACdL,OAAO,CAACM,mBAAmB,CAAEC,IAAI,IAAK,IAAIC,GAAG,CAACD,IAAI,CAAC,CAACE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,MAAMT,OAAO,CAACM,mBAAmB,CAAEC,IAAI,IAAK;MACjD,MAAMG,IAAI,GAAG,IAAIF,GAAG,CAACD,IAAI,CAAC;MAC1BG,IAAI,CAACC,MAAM,CAAC,MAAM,CAAC;MACnB,OAAOD,IAAI;IACb,CAAC,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEE,KAAA,CAAAC,aAAA,CAACrB,YAAA,CAAAsB,SAAS;IACRC,EAAE,EAAC,MAAM;IACThB,KAAK,EAAEA,KAAM;IACbiB,KAAK,EAAEhB,OAAO,CAACiB,MAAM,CAACC,IAAK;IAC3BpB,QAAQ,EAAEA,QAAS;IACnBI,MAAM,EAAEA,MAAO;IACfP,SAAS,EAAEA,SAAU;IACrBwB,QAAQ,EAAEvB,QAAS;IACnBwB,iBAAiB,EAAExB,QAAS;IAC5BC,WAAW,EAAEA,WAAY;IACzBwB,YAAY,EAAC,SAAS;IACtBC,YAAY,EAAGC,CAAC,IAAKpB,QAAQ,CAACoB,CAAC;EAAE,CAClC,CAAC;AAEN","ignoreList":[]}
@@ -38,6 +38,11 @@ function CardNumber({
38
38
  } = context.register('number');
39
39
  (0, _react.useEffect)(() => {
40
40
  context.setRegisteredFields(prev => new Set(prev).add('number'));
41
+ return () => context.setRegisteredFields(prev => {
42
+ const next = new Set(prev);
43
+ next.delete('name');
44
+ return next;
45
+ });
41
46
  // eslint-disable-next-line react-hooks/exhaustive-deps
42
47
  }, []);
43
48
  return /*#__PURE__*/React.createElement(_reactNativeMaskedText.TextInputMask, {
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_cardValidator","require","_react","_reactNativeMaskedText","_context","CardNumber","autoFocus","disabled","placeholder","readOnly","style","context","useCardContext","ref","useRef","innerValue","mask","useMemo","value","values","number","brand","validateNumber","masks","default","onBlur","onChange","register","useEffect","setRegisteredFields","prev","Set","add","next","delete","React","createElement","TextInputMask","type","options","id","onChangeText","inputMode","editable","selectTextOnFocus","autoComplete"],"sourceRoot":"../../../../src","sources":["components/Card/CardNumber.tsx"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAOO,SAASI,UAAUA,CAAC;EACzBC,SAAS;EACTC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC;AACe,CAAC,EAAE;EAClB,MAAMC,OAAO,GAAG,IAAAC,uBAAc,EAAC,CAAC;EAChC,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAgB,IAAI,CAAC;EAEvC,MAAM,CAACC,UAAU,EAAEC,IAAI,CAAC,GAAG,IAAAC,cAAO,EAAC,MAAM;IACvC,MAAMC,KAAK,GAAGP,OAAO,CAACQ,MAAM,CAACC,MAAM;IAEnC,MAAM;MAAEC;IAAM,CAAC,GAAG,IAAAC,6BAAc,EAACJ,KAAK,CAAC;IAEvC,MAAMK,KAAK,GAAG;MACZ,SAAS,EAAE,qBAAqB;MAChC,UAAU,EAAE,yBAAyB;MACrC,kBAAkB,EAAE;IACtB,CAA2B;IAE3B,IAAIF,KAAK,IAAI,CAAC,CAACE,KAAK,CAACF,KAAK,CAAC,EAAE;MAC3B,OAAO,CAACH,KAAK,EAAEK,KAAK,CAACF,KAAK,CAAC,CAAC;IAC9B;IACA,OAAO,CAACH,KAAK,EAAEK,KAAK,CAACC,OAAO,CAAC;EAC/B,CAAC,EAAE,CAACb,OAAO,CAACQ,MAAM,CAACC,MAAM,CAAC,CAAC;EAE3B,MAAM;IAAEK,MAAM;IAAEC;EAAS,CAAC,GAAGf,OAAO,CAACgB,QAAQ,CAAC,QAAQ,CAAC;EAEvD,IAAAC,gBAAS,EAAC,MAAM;IACdjB,OAAO,CAACkB,mBAAmB,CAAEC,IAAI,IAAK,IAAIC,GAAG,CAACD,IAAI,CAAC,CAACE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,MAAMrB,OAAO,CAACkB,mBAAmB,CAAEC,IAAI,IAAK;MACjD,MAAMG,IAAI,GAAG,IAAIF,GAAG,CAACD,IAAI,CAAC;MAC1BG,IAAI,CAACC,MAAM,CAAC,MAAM,CAAC;MACnB,OAAOD,IAAI;IACb,CAAC,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEE,KAAA,CAAAC,aAAA,CAACjC,sBAAA,CAAAkC,aAAa;IACZ3B,KAAK,EAAEA,KAAM;IACbG,GAAG,EAAEA,GAAI;IACTyB,IAAI,EAAC,QAAQ;IACbC,OAAO,EAAE;MAAEvB;IAAK,CAAE;IAClBwB,EAAE,EAAC,QAAQ;IACXtB,KAAK,EAAEH,UAAW;IAClB0B,YAAY,EAAEf,QAAS;IACvBD,MAAM,EAAEA,MAAO;IACfhB,QAAQ,EAAEA,QAAS;IACnBiC,SAAS,EAAC,SAAS;IACnBpC,SAAS,EAAEA,SAAU;IACrBE,WAAW,EAAEA,WAAY;IACzBmC,QAAQ,EAAEpC,QAAS;IACnBqC,iBAAiB,EAAErC,QAAS;IAC5BsC,YAAY,EAAC;EAAW,CACzB,CAAC;AAEN","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","CardContext","exports","createContext","values","name","number","cvc","expiry","register","onChange","onBlur","setRegisteredFields","useCardContext","useContext"],"sourceRoot":"../../../../src","sources":["components/Card/context.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAUO,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAG,IAAAE,oBAAa,EAAoB;EAC1DC,MAAM,EAAE;IACNC,IAAI,EAAE,EAAE;IACRC,MAAM,EAAE,EAAE;IACVC,GAAG,EAAE,EAAE;IACPC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAEA,CAAA,MAAO;IACfC,QAAQ,EAAEA,CAAA,KAAM,CAAE,CAAC;IACnBC,MAAM,EAAEA,CAAA,KAAM,CAAE;EAClB,CAAC,CAAC;EACFC,mBAAmB,EAAEA,CAAA,KAAM,CAAE;AAC/B,CAAC,CAAC;AAEK,MAAMC,cAAc,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACb,WAAW,CAAC;AAACC,OAAA,CAAAW,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"names":["_react","require","CardContext","exports","createContext","values","name","number","cvc","expiry","register","onChange","onBlur","setRegisteredFields","useCardContext","useContext"],"sourceRoot":"../../../../src","sources":["components/Card/context.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AASO,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAG,IAAAE,oBAAa,EAAoB;EAC1DC,MAAM,EAAE;IACNC,IAAI,EAAE,EAAE;IACRC,MAAM,EAAE,EAAE;IACVC,GAAG,EAAE,EAAE;IACPC,MAAM,EAAE;EACV,CAAC;EACDC,QAAQ,EAAEA,CAAA,MAAO;IACfC,QAAQ,EAAEA,CAAA,KAAM,CAAC,CAAC;IAChBC,MAAM,EAAEA,CAAA,KAAM,CAAC;EACf,CAAC,CAAC;EACNC,mBAAmB,EAAEA,CAAA,KAAM,CAAC;AAC5B,CAAC,CAAC;AAEG,MAAMC,cAAc,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACb,WAAW,CAAC;AAACC,OAAA,CAAAW,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -9,12 +9,5 @@ Object.defineProperty(exports, "Card", {
9
9
  return _Card.Card;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "CardPayload", {
13
- enumerable: true,
14
- get: function () {
15
- return _types.CardPayload;
16
- }
17
- });
18
12
  var _Card = require("./Card");
19
- var _types = require("types");
20
13
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Card","require"],"sourceRoot":"../../../../src","sources":["components/Card/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/Card/types.ts"],"mappings":""}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/Card/types.ts"],"mappings":"","ignoreList":[]}
@@ -46,7 +46,7 @@ function isComplete(form, fields) {
46
46
  if (!cardValidation.isValid) return false;
47
47
  }
48
48
  if (fields.includes('expiry')) {
49
- const expiryValidation = (0, _cardValidator.validateExpiry)(form.values.expiry.replace(" / ", ""));
49
+ const expiryValidation = (0, _cardValidator.validateExpiry)(form.values.expiry);
50
50
  if (!expiryValidation.isValid) return false;
51
51
  }
52
52
  if (fields.includes('cvc')) {
@@ -66,7 +66,7 @@ function isAcceptedBrand(acceptedBrands, cardNumberValidationResult) {
66
66
  return isBrandAccepted || isLocalBrandAccepted;
67
67
  }
68
68
  function formatExpiry(expiry) {
69
- const parsedExpiry = (0, _cardValidator.validateExpiry)(expiry.replace(" / ", ""));
69
+ const parsedExpiry = (0, _cardValidator.validateExpiry)(expiry);
70
70
  return {
71
71
  month: parsedExpiry.month,
72
72
  year: parsedExpiry.year
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","expiry","cvc","values","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","includes","cardValidation","expiryValidation","validateExpiry","cvcValidation","validateCVC","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useForm = useForm;
7
+ var _react = require("react");
8
+ function useForm({
9
+ initialValues,
10
+ validate,
11
+ onChange
12
+ }) {
13
+ const validators = (0, _react.useRef)(validate);
14
+ const triggerChange = (0, _react.useRef)(false);
15
+ const [values, setValues] = (0, _react.useState)(initialValues);
16
+ const [errors, setErrors] = (0, _react.useState)({});
17
+
18
+ // keep track of latest validation functions in a ref to prevent
19
+ // re-renders when the function changes.
20
+ (0, _react.useEffect)(() => {
21
+ validators.current = validate;
22
+ }, [validate]);
23
+ const setError = (0, _react.useCallback)((field, error) => {
24
+ if (!error) {
25
+ setErrors(prev => {
26
+ if (!prev) return prev;
27
+ return Object.keys(prev).reduce((acc, key) => {
28
+ if (key === field) return acc;
29
+ return {
30
+ ...acc,
31
+ [key]: prev?.[key]
32
+ };
33
+ }, {});
34
+ });
35
+ return;
36
+ }
37
+ setErrors(prev => ({
38
+ ...prev,
39
+ [field]: error
40
+ }));
41
+ triggerChange.current = true;
42
+ }, []);
43
+ const setValue = (0, _react.useCallback)((field, value) => {
44
+ if (errors?.[field]) {
45
+ setError(field, undefined);
46
+ }
47
+ setValues(previous => ({
48
+ ...previous,
49
+ [field]: value
50
+ }));
51
+ triggerChange.current = true;
52
+ }, [errors, setError]);
53
+ const isValid = (0, _react.useMemo)(() => Object.keys(errors ?? {}).length === 0, [errors]);
54
+ const validateForm = (0, _react.useCallback)(() => {
55
+ const nextErrors = Object.keys(values).reduce((acc, key) => {
56
+ const validator = validators.current?.[key];
57
+ if (validator) {
58
+ const error = validator(values);
59
+ if (error) {
60
+ return {
61
+ ...acc,
62
+ [key]: error
63
+ };
64
+ }
65
+ }
66
+ return acc;
67
+ }, {});
68
+ const hasErrors = Object.keys(nextErrors).length > 0;
69
+ setErrors(hasErrors ? nextErrors : null);
70
+
71
+ // iterate over the errors and if any of them are different then we should
72
+ // trigger a change event.
73
+ const shouldTriggerChange = Object.keys(nextErrors).some(key => {
74
+ const prevError = errors?.[key];
75
+ const nextError = nextErrors[key];
76
+ return prevError !== nextError;
77
+ });
78
+ triggerChange.current = shouldTriggerChange;
79
+ }, [errors, values]);
80
+ const validateField = (0, _react.useCallback)(field => {
81
+ const validator = validators.current?.[field];
82
+ if (validator) {
83
+ const error = validator(values);
84
+ setError(field, error);
85
+ }
86
+ }, [values, setError]);
87
+ const register = (0, _react.useCallback)(name => {
88
+ const handleBlur = () => {
89
+ validateField(name);
90
+ };
91
+ const handleChange = value => {
92
+ setValue(name, value);
93
+ };
94
+ return {
95
+ onBlur: handleBlur,
96
+ onChange: handleChange
97
+ };
98
+ }, [setValue, validateField]);
99
+ const form = (0, _react.useMemo)(() => ({
100
+ values,
101
+ setValue,
102
+ errors,
103
+ setError,
104
+ isValid,
105
+ register,
106
+ setValues,
107
+ validate: validateForm
108
+ }), [values, setValue, errors, setError, isValid, register, validateForm]);
109
+ (0, _react.useEffect)(() => {
110
+ if (!triggerChange.current) return;
111
+ triggerChange.current = false;
112
+ onChange?.(form);
113
+ }, [form, onChange]);
114
+ return form;
115
+ }
116
+ //# sourceMappingURL=useForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","useForm","initialValues","validate","onChange","validators","useRef","triggerChange","values","setValues","useState","errors","setErrors","useEffect","current","setError","useCallback","field","error","prev","Object","keys","reduce","acc","key","setValue","value","undefined","previous","isValid","useMemo","length","validateForm","nextErrors","validator","hasErrors","shouldTriggerChange","some","prevError","nextError","validateField","register","name","handleBlur","handleChange","onBlur","form"],"sourceRoot":"../../../src","sources":["components/useForm.tsx"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,6 @@ Object.defineProperty(exports, "init", {
21
21
  return _sdk.init;
22
22
  }
23
23
  });
24
- var _Card = require("./components/Card/Card");
24
+ var _Card = require("./components/Card");
25
25
  var _sdk = require("./sdk");
26
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Card","require","_sdk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA"}
1
+ {"version":3,"names":["_Card","require","_sdk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","EvervaultSdk","exports","NativeModules","Proxy","get","Error"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAChB,4FAA2F,GAC5FC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAE1B,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,0BAAa,CAACF,YAAY,GAClDE,0BAAa,CAACF,YAAY,GAC1B,IAAIG,KAAK,CACT,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACV,aAAa,CAAC;EAChC;AACF,CACF,CAAC"}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","EvervaultSdk","exports","NativeModules","Proxy","get","Error"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAChB,4FAA2F,GAC5FC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAE1B,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,0BAAa,CAACF,YAAY,GAClDE,0BAAa,CAACF,YAAY,GAC1B,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACV,aAAa,CAAC;EAChC;AACF,CACF,CAAC","ignoreList":[]}
@@ -8,15 +8,21 @@ exports.init = init;
8
8
  var _reactNative = require("react-native");
9
9
  var _native = require("./native");
10
10
  async function init(teamUuid, appUuid) {
11
+ if (!teamUuid.startsWith('team_')) {
12
+ throw new Error("Invalid Evervault Team UUID");
13
+ }
14
+ if (!appUuid.startsWith('app_')) {
15
+ throw new Error("Invalid Evervault App UUID");
16
+ }
11
17
  return _native.EvervaultSdk.initialize(teamUuid, appUuid);
12
18
  }
13
19
  async function encrypt(data) {
14
- if (_reactNative.Platform.OS === "android" && typeof data !== "string") {
20
+ if (_reactNative.Platform.OS === 'android' && typeof data !== 'string') {
15
21
  throw new Error(`The Evervault SDK does not currently support encrypting non-string data on Android.
16
22
  If this is required for your use case, please get in touch with us at support@evervault.com. Please do not
17
23
  serialize other data types to strings and pass them to this method as this will result in the data
18
24
  type being returned in it's stringified form when decryption occurs.`);
19
25
  }
20
- return _native.EvervaultSdk.encrypt(data.toString());
26
+ return _native.EvervaultSdk.encrypt(data);
21
27
  }
22
28
  //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_native","init","teamUuid","appUuid","startsWith","Error","EvervaultSdk","initialize","encrypt","data","Platform","OS"],"sourceRoot":"../../src","sources":["sdk.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEO,eAAeE,IAAIA,CAACC,QAAgB,EAAEC,OAAe,EAAiB;EAC3E,IAAI,CAACD,QAAQ,CAACE,UAAU,CAAC,OAAO,CAAC,EAAE;IACjC,MAAM,IAAIC,KAAK,CAAC,6BAA6B,CAAC;EAChD;EAEA,IAAI,CAACF,OAAO,CAACC,UAAU,CAAC,MAAM,CAAC,EAAE;IAC/B,MAAM,IAAIC,KAAK,CAAC,4BAA4B,CAAC;EAC/C;EAEA,OAAOC,oBAAY,CAACC,UAAU,CAACL,QAAQ,EAAEC,OAAO,CAAC;AACnD;AAEO,eAAeK,OAAOA,CAACC,IAAS,EAAmB;EACxD,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAI,OAAOF,IAAI,KAAK,QAAQ,EAAE;IACzD,MAAM,IAAIJ,KAAK,CAAE;AACrB;AACA;AACA,2EAA2E,CAAC;EAC1E;EAEA,OAAOC,oBAAY,CAACE,OAAO,CAACC,IAAI,CAAC;AACnC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { validateNumber, validateCVC, validateExpiry } from '@evervault/card-validator';
2
2
  import { useEffect, useState } from 'react';
3
- import { useForm } from 'shared';
3
+ import { useForm } from '../useForm';
4
4
  import { changePayload, isAcceptedBrand, isComplete } from './utilities';
5
5
  import { CardNumber } from './CardNumber';
6
6
  import { CardContext } from './context';
@@ -1 +1 @@
1
- {"version":3,"names":["validateNumber","validateCVC","validateExpiry","useEffect","useState","useForm","changePayload","isAcceptedBrand","isComplete","CardNumber","CardContext","encrypt","CardCVC","CardHolder","CardExpiry","View","Card","initialValue","config","children","onChange","onComplete","style","registeredFields","setRegisteredFields","Set","form","initialValues","cvc","expiry","number","name","validate","values","has","undefined","length","cardValidation","isValid","acceptedBrands","expiryValidation","cvcValidation","formState","triggerChange","cardData","Array","from","getCardData","React","createElement","Provider","value","register","CardNamespace","Object","assign","Number","CVC","Holder","Expiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["validateNumber","validateCVC","validateExpiry","useEffect","useState","useForm","changePayload","isAcceptedBrand","isComplete","CardNumber","CardContext","encrypt","CardCVC","CardHolder","CardExpiry","View","Card","initialValue","config","children","onChange","onComplete","style","registeredFields","setRegisteredFields","Set","form","initialValues","cvc","expiry","number","name","validate","values","has","undefined","length","cardValidation","isValid","acceptedBrands","expiryValidation","cvcValidation","formState","triggerChange","cardData","Array","from","getCardData","React","createElement","Provider","value","register","CardNamespace","Object","assign","Number","CVC","Holder","Expiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,11 @@ export const CardCVC = ({
22
22
  } = context.register('cvc');
23
23
  useEffect(() => {
24
24
  context.setRegisteredFields(prev => new Set(prev).add('cvc'));
25
+ return () => context.setRegisteredFields(prev => {
26
+ const next = new Set(prev);
27
+ next.delete('cvc');
28
+ return next;
29
+ });
25
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
26
31
  }, []);
27
32
  return /*#__PURE__*/React.createElement(TextInputMask, {
@@ -37,6 +42,7 @@ export const CardCVC = ({
37
42
  selectTextOnFocus: disabled,
38
43
  onBlur: onBlur,
39
44
  placeholder: placeholder,
45
+ inputMode: "numeric",
40
46
  autoComplete: "cc-csc",
41
47
  readOnly: readOnly
42
48
  });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["validateNumber","React","useEffect","useMemo","TextInputMask","useCardContext","CardCVC","style","disabled","placeholder","readOnly","context","mask","type","values","number","brand","onChange","onBlur","register","setRegisteredFields","prev","Set","add","next","delete","createElement","options","value","cvc","onChangeText","t","id","editable","selectTextOnFocus","inputMode","autoComplete"],"sourceRoot":"../../../../src","sources":["components/Card/CardCVC.tsx"],"mappings":"AAAA,SAASA,cAAc,QAAQ,2BAA2B;AAC1D,OAAOC,KAAK,IAAIC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AACjD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,cAAc,QAAQ,WAAW;AAK1C,OAAO,MAAMC,OAAO,GAAGA,CAAC;EACtBC,KAAK;EACLC,QAAQ;EACRC,WAAW;EACXC;AACQ,CAAC,KAAK;EACd,MAAMC,OAAO,GAAGN,cAAc,CAAC,CAAC;EAChC,MAAMO,IAAI,GAAGT,OAAO,CAAC,MAAM;IACzB,MAAMU,IAAI,GAAGb,cAAc,CAACW,OAAO,CAACG,MAAM,CAACC,MAAM,CAAC,CAACC,KAAK;IACxD,IAAIH,IAAI,KAAK,kBAAkB,EAAE;MAC/B,OAAO,MAAM;IACf;IACA,OAAO,KAAK;EACd,CAAC,EAAE,CAACF,OAAO,CAACG,MAAM,CAACC,MAAM,CAAC,CAAC;EAE3B,MAAM;IAAEE,QAAQ;IAAEC;EAAO,CAAC,GAAGP,OAAO,CAACQ,QAAQ,CAAC,KAAK,CAAC;EAEpDjB,SAAS,CAAC,MAAM;IACdS,OAAO,CAACS,mBAAmB,CAAEC,IAAI,IAAK,IAAIC,GAAG,CAACD,IAAI,CAAC,CAACE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,MAAMZ,OAAO,CAACS,mBAAmB,CAAEC,IAAI,IAAK;MACjD,MAAMG,IAAI,GAAG,IAAIF,GAAG,CAACD,IAAI,CAAC;MAC1BG,IAAI,CAACC,MAAM,CAAC,KAAK,CAAC;MAClB,OAAOD,IAAI;IACb,CAAC,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEvB,KAAA,CAAAyB,aAAA,CAACtB,aAAa;IACZS,IAAI,EAAC,QAAQ;IACbc,OAAO,EAAE;MAAEf;IAAK,CAAE;IAClBL,KAAK,EAAEA,KAAM;IACbqB,KAAK,EAAEjB,OAAO,CAACG,MAAM,CAACe,GAAI;IAC1BC,YAAY,EAAGC,CAAC,IAAKd,QAAQ,CAACc,CAAC,CAAE;IACjCC,EAAE,EAAC,KAAK;IACRC,QAAQ,EAAEzB,QAAS;IACnB0B,iBAAiB,EAAE1B,QAAS;IAC5BU,MAAM,EAAEA,MAAO;IACfT,WAAW,EAAEA,WAAY;IACzB0B,SAAS,EAAC,SAAS;IACnBC,YAAY,EAAC,QAAQ;IACrB1B,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -4,7 +4,8 @@ import { useEffect } from 'react';
4
4
  export function CardExpiry({
5
5
  disabled,
6
6
  placeholder,
7
- readOnly
7
+ readOnly,
8
+ style
8
9
  }) {
9
10
  const context = useCardContext();
10
11
  const {
@@ -13,20 +14,29 @@ export function CardExpiry({
13
14
  } = context.register('expiry');
14
15
  useEffect(() => {
15
16
  context.setRegisteredFields(prev => new Set(prev).add('expiry'));
17
+ return () => context.setRegisteredFields(prev => {
18
+ const next = new Set(prev);
19
+ next.delete('expiry');
20
+ return next;
21
+ });
16
22
  // eslint-disable-next-line react-hooks/exhaustive-deps
17
23
  }, []);
18
24
  return /*#__PURE__*/React.createElement(TextInputMask, {
25
+ style: style,
19
26
  type: "datetime",
20
27
  value: context.values.expiry,
21
28
  editable: disabled,
22
- selectTextOnFocus: disabled,
23
- onChangeText: onChange,
29
+ selectTextOnFocus: disabled
30
+ // store the expiry as MMYY not MM / YY
31
+ ,
32
+ onChangeText: rawExpiry => onChange(rawExpiry.replace(' / ', '')),
24
33
  options: {
25
34
  format: '99 / 99'
26
35
  },
27
36
  id: "expiry",
28
37
  onBlur: onBlur,
29
38
  placeholder: placeholder ?? 'MM / YY',
39
+ inputMode: "numeric",
30
40
  autoComplete: "cc-exp",
31
41
  readOnly: readOnly
32
42
  });