@procivis/one-react-native-components 0.3.71 → 0.3.91

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 (262) hide show
  1. package/lib/commonjs/components/entity/entity-attributes.js +3 -1
  2. package/lib/commonjs/components/entity/entity-attributes.js.map +1 -1
  3. package/lib/commonjs/components/entity/entity-details-with-buttons.js +2 -1
  4. package/lib/commonjs/components/entity/entity-details-with-buttons.js.map +1 -1
  5. package/lib/commonjs/components/proof-request/index.js +23 -12
  6. package/lib/commonjs/components/proof-request/index.js.map +1 -1
  7. package/lib/commonjs/components/proof-request/select-share-credential-card-notice.js +37 -0
  8. package/lib/commonjs/components/proof-request/select-share-credential-card-notice.js.map +1 -0
  9. package/lib/commonjs/components/proof-request/share-credential-card-notice.js +36 -0
  10. package/lib/commonjs/components/proof-request/share-credential-card-notice.js.map +1 -0
  11. package/lib/commonjs/components/proof-request/{group.js → v1/group.js} +1 -1
  12. package/lib/commonjs/components/proof-request/v1/group.js.map +1 -0
  13. package/lib/commonjs/components/proof-request/v1/index.js +39 -0
  14. package/lib/commonjs/components/proof-request/v1/index.js.map +1 -0
  15. package/lib/commonjs/components/proof-request/{select-credential.js → v1/select-credential.js} +4 -4
  16. package/lib/commonjs/components/proof-request/v1/select-credential.js.map +1 -0
  17. package/lib/commonjs/components/proof-request/{share-credential.js → v1/share-credential.js} +25 -60
  18. package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -0
  19. package/lib/commonjs/components/proof-request/v2/index.js +39 -0
  20. package/lib/commonjs/components/proof-request/v2/index.js.map +1 -0
  21. package/lib/commonjs/components/proof-request/v2/select-credential-v2.js +51 -0
  22. package/lib/commonjs/components/proof-request/v2/select-credential-v2.js.map +1 -0
  23. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +164 -0
  24. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -0
  25. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +131 -0
  26. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -0
  27. package/lib/commonjs/ui-components/buttons/share-button.js +1 -1
  28. package/lib/commonjs/ui-components/buttons/share-button.js.map +1 -1
  29. package/lib/commonjs/ui-components/camera/qr-code-scanner.js +5 -1
  30. package/lib/commonjs/ui-components/camera/qr-code-scanner.js.map +1 -1
  31. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +16 -42
  32. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  33. package/lib/commonjs/ui-components/credential/credential-attribute-item.js +3 -1
  34. package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
  35. package/lib/commonjs/ui-components/credential/group/credential-group-header.js +72 -0
  36. package/lib/commonjs/ui-components/credential/group/credential-group-header.js.map +1 -0
  37. package/lib/commonjs/ui-components/credential/group/index.js +14 -0
  38. package/lib/commonjs/ui-components/credential/group/index.js.map +1 -0
  39. package/lib/commonjs/ui-components/credential/index.js +12 -0
  40. package/lib/commonjs/ui-components/credential/index.js.map +1 -1
  41. package/lib/commonjs/ui-components/header/foldable-header.js +29 -17
  42. package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
  43. package/lib/commonjs/ui-components/index.js +11 -0
  44. package/lib/commonjs/ui-components/index.js.map +1 -1
  45. package/lib/commonjs/ui-components/loader/loading-result.js +1 -1
  46. package/lib/commonjs/ui-components/loader/loading-result.js.map +1 -1
  47. package/lib/commonjs/ui-components/pin/pin-lock-animation.js +477 -475
  48. package/lib/commonjs/ui-components/pin/pin-lock-animation.js.map +1 -1
  49. package/lib/commonjs/ui-components/proof-request/index.js +13 -0
  50. package/lib/commonjs/ui-components/proof-request/index.js.map +1 -0
  51. package/lib/commonjs/ui-components/proof-request/proof-request-set.js +47 -0
  52. package/lib/commonjs/ui-components/proof-request/proof-request-set.js.map +1 -0
  53. package/lib/commonjs/ui-components/screens/section-list-screen.js +17 -3
  54. package/lib/commonjs/ui-components/screens/section-list-screen.js.map +1 -1
  55. package/lib/commonjs/utils/array.js.map +1 -1
  56. package/lib/commonjs/utils/hooks/app-state.js +33 -0
  57. package/lib/commonjs/utils/hooks/app-state.js.map +1 -0
  58. package/lib/commonjs/utils/hooks/core/backup.js +1 -1
  59. package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
  60. package/lib/commonjs/utils/hooks/core/cache.js +4 -1
  61. package/lib/commonjs/utils/hooks/core/cache.js.map +1 -1
  62. package/lib/commonjs/utils/hooks/core/credentials.js +11 -10
  63. package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
  64. package/lib/commonjs/utils/hooks/core/identifiers.js +1 -1
  65. package/lib/commonjs/utils/hooks/core/identifiers.js.map +1 -1
  66. package/lib/commonjs/utils/hooks/core/index.js +11 -0
  67. package/lib/commonjs/utils/hooks/core/index.js.map +1 -1
  68. package/lib/commonjs/utils/hooks/core/proofs.js +41 -15
  69. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  70. package/lib/commonjs/utils/hooks/core/wallet-unit.js +76 -0
  71. package/lib/commonjs/utils/hooks/core/wallet-unit.js.map +1 -0
  72. package/lib/commonjs/utils/hooks/index.js +11 -0
  73. package/lib/commonjs/utils/hooks/index.js.map +1 -1
  74. package/lib/commonjs/utils/hooks/revocation/credential-status.js +1 -1
  75. package/lib/commonjs/utils/hooks/revocation/credential-status.js.map +1 -1
  76. package/lib/commonjs/utils/index.js +12 -12
  77. package/lib/commonjs/utils/index.js.map +1 -1
  78. package/lib/commonjs/utils/parsers/credential-sharing-v2.js +190 -0
  79. package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -0
  80. package/lib/commonjs/utils/parsers/credential-sharing.js +25 -12
  81. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  82. package/lib/commonjs/utils/parsers/credential.js +89 -57
  83. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  84. package/lib/commonjs/utils/parsers/index.js +11 -0
  85. package/lib/commonjs/utils/parsers/index.js.map +1 -1
  86. package/lib/commonjs/utils/parsers/query.js +4 -4
  87. package/lib/commonjs/utils/parsers/query.js.map +1 -1
  88. package/lib/module/components/entity/entity-attributes.js +3 -1
  89. package/lib/module/components/entity/entity-attributes.js.map +1 -1
  90. package/lib/module/components/entity/entity-details-with-buttons.js +2 -1
  91. package/lib/module/components/entity/entity-details-with-buttons.js.map +1 -1
  92. package/lib/module/components/proof-request/index.js +4 -3
  93. package/lib/module/components/proof-request/index.js.map +1 -1
  94. package/lib/module/components/proof-request/select-share-credential-card-notice.js +29 -0
  95. package/lib/module/components/proof-request/select-share-credential-card-notice.js.map +1 -0
  96. package/lib/module/components/proof-request/share-credential-card-notice.js +28 -0
  97. package/lib/module/components/proof-request/share-credential-card-notice.js.map +1 -0
  98. package/lib/module/components/proof-request/{group.js → v1/group.js} +1 -1
  99. package/lib/module/components/proof-request/v1/group.js.map +1 -0
  100. package/lib/module/components/proof-request/v1/index.js +4 -0
  101. package/lib/module/components/proof-request/v1/index.js.map +1 -0
  102. package/lib/module/components/proof-request/{select-credential.js → v1/select-credential.js} +4 -4
  103. package/lib/module/components/proof-request/v1/select-credential.js.map +1 -0
  104. package/lib/module/components/proof-request/{share-credential.js → v1/share-credential.js} +26 -61
  105. package/lib/module/components/proof-request/v1/share-credential.js.map +1 -0
  106. package/lib/module/components/proof-request/v2/index.js +4 -0
  107. package/lib/module/components/proof-request/v2/index.js.map +1 -0
  108. package/lib/module/components/proof-request/v2/select-credential-v2.js +42 -0
  109. package/lib/module/components/proof-request/v2/select-credential-v2.js.map +1 -0
  110. package/lib/module/components/proof-request/v2/share-credential-v2-group.js +154 -0
  111. package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -0
  112. package/lib/module/components/proof-request/v2/share-credential-v2.js +122 -0
  113. package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -0
  114. package/lib/module/ui-components/buttons/share-button.js +1 -1
  115. package/lib/module/ui-components/buttons/share-button.js.map +1 -1
  116. package/lib/module/ui-components/camera/qr-code-scanner.js +5 -1
  117. package/lib/module/ui-components/camera/qr-code-scanner.js.map +1 -1
  118. package/lib/module/ui-components/credential/card/credential-details-list-item.js +19 -45
  119. package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  120. package/lib/module/ui-components/credential/credential-attribute-item.js +3 -1
  121. package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
  122. package/lib/module/ui-components/credential/group/credential-group-header.js +64 -0
  123. package/lib/module/ui-components/credential/group/credential-group-header.js.map +1 -0
  124. package/lib/module/ui-components/credential/group/index.js +3 -0
  125. package/lib/module/ui-components/credential/group/index.js.map +1 -0
  126. package/lib/module/ui-components/credential/index.js +1 -0
  127. package/lib/module/ui-components/credential/index.js.map +1 -1
  128. package/lib/module/ui-components/header/foldable-header.js +29 -17
  129. package/lib/module/ui-components/header/foldable-header.js.map +1 -1
  130. package/lib/module/ui-components/index.js +1 -0
  131. package/lib/module/ui-components/index.js.map +1 -1
  132. package/lib/module/ui-components/loader/loading-result.js +1 -1
  133. package/lib/module/ui-components/loader/loading-result.js.map +1 -1
  134. package/lib/module/ui-components/pin/pin-lock-animation.js +477 -475
  135. package/lib/module/ui-components/pin/pin-lock-animation.js.map +1 -1
  136. package/lib/module/ui-components/proof-request/index.js +3 -0
  137. package/lib/module/ui-components/proof-request/index.js.map +1 -0
  138. package/lib/module/ui-components/proof-request/proof-request-set.js +39 -0
  139. package/lib/module/ui-components/proof-request/proof-request-set.js.map +1 -0
  140. package/lib/module/ui-components/screens/section-list-screen.js +15 -3
  141. package/lib/module/ui-components/screens/section-list-screen.js.map +1 -1
  142. package/lib/module/utils/array.js.map +1 -1
  143. package/lib/module/utils/hooks/app-state.js +27 -0
  144. package/lib/module/utils/hooks/app-state.js.map +1 -0
  145. package/lib/module/utils/hooks/core/backup.js +1 -1
  146. package/lib/module/utils/hooks/core/backup.js.map +1 -1
  147. package/lib/module/utils/hooks/core/cache.js +4 -1
  148. package/lib/module/utils/hooks/core/cache.js.map +1 -1
  149. package/lib/module/utils/hooks/core/credentials.js +12 -11
  150. package/lib/module/utils/hooks/core/credentials.js.map +1 -1
  151. package/lib/module/utils/hooks/core/identifiers.js +5 -5
  152. package/lib/module/utils/hooks/core/identifiers.js.map +1 -1
  153. package/lib/module/utils/hooks/core/index.js +1 -0
  154. package/lib/module/utils/hooks/core/index.js.map +1 -1
  155. package/lib/module/utils/hooks/core/proofs.js +42 -16
  156. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  157. package/lib/module/utils/hooks/core/wallet-unit.js +66 -0
  158. package/lib/module/utils/hooks/core/wallet-unit.js.map +1 -0
  159. package/lib/module/utils/hooks/index.js +1 -0
  160. package/lib/module/utils/hooks/index.js.map +1 -1
  161. package/lib/module/utils/hooks/revocation/credential-status.js +1 -1
  162. package/lib/module/utils/hooks/revocation/credential-status.js.map +1 -1
  163. package/lib/module/utils/index.js +1 -1
  164. package/lib/module/utils/index.js.map +1 -1
  165. package/lib/module/utils/parsers/credential-sharing-v2.js +177 -0
  166. package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -0
  167. package/lib/module/utils/parsers/credential-sharing.js +25 -12
  168. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  169. package/lib/module/utils/parsers/credential.js +89 -57
  170. package/lib/module/utils/parsers/credential.js.map +1 -1
  171. package/lib/module/utils/parsers/index.js +1 -0
  172. package/lib/module/utils/parsers/index.js.map +1 -1
  173. package/lib/module/utils/parsers/query.js +4 -4
  174. package/lib/module/utils/parsers/query.js.map +1 -1
  175. package/lib/typescript/components/entity/entity-attributes.d.ts +1 -0
  176. package/lib/typescript/components/proof-request/index.d.ts +4 -3
  177. package/lib/typescript/components/proof-request/select-share-credential-card-notice.d.ts +7 -0
  178. package/lib/typescript/components/proof-request/share-credential-card-notice.d.ts +6 -0
  179. package/lib/typescript/components/proof-request/v1/index.d.ts +3 -0
  180. package/lib/typescript/components/proof-request/{select-credential.d.ts → v1/select-credential.d.ts} +1 -1
  181. package/lib/typescript/components/proof-request/{share-credential.d.ts → v1/share-credential.d.ts} +1 -1
  182. package/lib/typescript/components/proof-request/v2/index.d.ts +3 -0
  183. package/lib/typescript/components/proof-request/v2/select-credential-v2.d.ts +14 -0
  184. package/lib/typescript/components/proof-request/v2/share-credential-v2-group.d.ts +24 -0
  185. package/lib/typescript/components/proof-request/v2/share-credential-v2.d.ts +23 -0
  186. package/lib/typescript/ui-components/credential/group/credential-group-header.d.ts +10 -0
  187. package/lib/typescript/ui-components/credential/group/index.d.ts +3 -0
  188. package/lib/typescript/ui-components/credential/index.d.ts +1 -0
  189. package/lib/typescript/ui-components/header/foldable-header.d.ts +1 -0
  190. package/lib/typescript/ui-components/index.d.ts +1 -0
  191. package/lib/typescript/ui-components/loader/loading-result.d.ts +1 -1
  192. package/lib/typescript/ui-components/pin/pin-lock-animation.d.ts +311 -311
  193. package/lib/typescript/ui-components/proof-request/index.d.ts +3 -0
  194. package/lib/typescript/ui-components/proof-request/proof-request-set.d.ts +7 -0
  195. package/lib/typescript/ui-components/screens/section-list-screen.d.ts +4 -2
  196. package/lib/typescript/utils/array.d.ts +1 -0
  197. package/lib/typescript/utils/hooks/app-state.d.ts +5 -0
  198. package/lib/typescript/utils/hooks/core/backup.d.ts +1 -1
  199. package/lib/typescript/utils/hooks/core/credentials.d.ts +2 -1
  200. package/lib/typescript/utils/hooks/core/identifiers.d.ts +1 -1
  201. package/lib/typescript/utils/hooks/core/index.d.ts +1 -0
  202. package/lib/typescript/utils/hooks/core/proofs.d.ts +6 -10
  203. package/lib/typescript/utils/hooks/core/wallet-unit.d.ts +9 -0
  204. package/lib/typescript/utils/hooks/index.d.ts +1 -0
  205. package/lib/typescript/utils/index.d.ts +1 -1
  206. package/lib/typescript/utils/parsers/credential-sharing-v2.d.ts +10 -0
  207. package/lib/typescript/utils/parsers/credential-sharing.d.ts +7 -2
  208. package/lib/typescript/utils/parsers/credential.d.ts +1 -2
  209. package/lib/typescript/utils/parsers/index.d.ts +1 -0
  210. package/lib/typescript/utils/parsers/query.d.ts +2 -2
  211. package/package.json +13 -7
  212. package/src/components/entity/entity-attributes.tsx +3 -0
  213. package/src/components/entity/entity-details-with-buttons.tsx +1 -0
  214. package/src/components/proof-request/index.ts +4 -3
  215. package/src/components/proof-request/select-share-credential-card-notice.tsx +37 -0
  216. package/src/components/proof-request/share-credential-card-notice.tsx +33 -0
  217. package/src/components/proof-request/{group.tsx → v1/group.tsx} +1 -1
  218. package/src/components/proof-request/v1/index.ts +3 -0
  219. package/src/components/proof-request/{select-credential.tsx → v1/select-credential.tsx} +7 -4
  220. package/src/components/proof-request/{share-credential.tsx → v1/share-credential.tsx} +30 -51
  221. package/src/components/proof-request/v2/index.ts +3 -0
  222. package/src/components/proof-request/v2/select-credential-v2.tsx +52 -0
  223. package/src/components/proof-request/v2/share-credential-v2-group.tsx +258 -0
  224. package/src/components/proof-request/v2/share-credential-v2.tsx +202 -0
  225. package/src/ui-components/buttons/share-button.tsx +1 -1
  226. package/src/ui-components/camera/qr-code-scanner.tsx +11 -2
  227. package/src/ui-components/credential/card/credential-details-list-item.tsx +27 -49
  228. package/src/ui-components/credential/credential-attribute-item.tsx +2 -0
  229. package/src/ui-components/credential/group/credential-group-header.tsx +70 -0
  230. package/src/ui-components/credential/group/index.ts +4 -0
  231. package/src/ui-components/credential/index.ts +1 -0
  232. package/src/ui-components/header/foldable-header.tsx +31 -16
  233. package/src/ui-components/index.ts +1 -0
  234. package/src/ui-components/loader/loading-result.tsx +1 -1
  235. package/src/ui-components/pin/pin-lock-animation.tsx +240 -278
  236. package/src/ui-components/proof-request/index.ts +4 -0
  237. package/src/ui-components/proof-request/proof-request-set.tsx +46 -0
  238. package/src/ui-components/screens/section-list-screen.tsx +18 -4
  239. package/src/utils/array.ts +4 -0
  240. package/src/utils/hooks/app-state.ts +29 -0
  241. package/src/utils/hooks/core/backup.ts +2 -5
  242. package/src/utils/hooks/core/cache.ts +3 -0
  243. package/src/utils/hooks/core/credentials.ts +14 -6
  244. package/src/utils/hooks/core/identifiers.ts +15 -14
  245. package/src/utils/hooks/core/index.ts +2 -1
  246. package/src/utils/hooks/core/proofs.ts +40 -22
  247. package/src/utils/hooks/core/wallet-unit.ts +71 -0
  248. package/src/utils/hooks/index.ts +1 -0
  249. package/src/utils/hooks/revocation/credential-status.ts +1 -1
  250. package/src/utils/index.ts +1 -1
  251. package/src/utils/parsers/credential-sharing-v2.tsx +278 -0
  252. package/src/utils/parsers/credential-sharing.tsx +63 -40
  253. package/src/utils/parsers/credential.ts +100 -57
  254. package/src/utils/parsers/index.ts +1 -0
  255. package/src/utils/parsers/query.ts +6 -5
  256. package/lib/commonjs/components/proof-request/group.js.map +0 -1
  257. package/lib/commonjs/components/proof-request/select-credential.js.map +0 -1
  258. package/lib/commonjs/components/proof-request/share-credential.js.map +0 -1
  259. package/lib/module/components/proof-request/group.js.map +0 -1
  260. package/lib/module/components/proof-request/select-credential.js.map +0 -1
  261. package/lib/module/components/proof-request/share-credential.js.map +0 -1
  262. /package/lib/typescript/components/proof-request/{group.d.ts → v1/group.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CredentialStateEnum","React","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","useCoreConfig","getValidityState","ValidityState","shareCredentialCardFromCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","ShareCredential","allCredentials","expanded","labels","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","request","selectedCredentialId","selectedFields","style","testID","_credential$issuer","colorScheme","credential","find","c","id","data","config","cardWidth","get","width","selectionOptions","applicableCredentials","filter","applicableCredentialId","some","state","ACCEPTED","multipleCredentialsAvailable","length","validityState","issuer","undefined","invalid","lvvcIssuanceDate","validityCredentialNbf","Date","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","card","attributes","Boolean","credentialId","onAttributeSelected","styles","borderColor","background","create","borderRadius","borderWidth","marginBottom"],"sources":["share-credential.tsx"],"sourcesContent":["import {\n CredentialDetail,\n CredentialListItem,\n CredentialStateEnum,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID } from '../../../utils';\nimport { useCoreConfig } from '../../../utils/hooks/core/core-config';\nimport { getValidityState, ValidityState } from '../../../utils/parsers/credential';\nimport {\n shareCredentialCardFromCredential,\n ShareCredentialCardLabels,\n} from '../../../utils/parsers/credential-sharing';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\n\nexport type ShareCredentialLabels = ShareCredentialCardLabels & {\n invalidCredentialNotice: string;\n multipleCredentialsNotice: string;\n multipleCredentialsSelect: string;\n revokedCredentialNotice: string;\n suspendedCredentialNotice: string;\n};\n\nexport const ShareCredential: FunctionComponent<{\n allCredentials: CredentialDetail[];\n expanded?: boolean;\n labels: ShareCredentialLabels;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (_id: PresentationDefinitionField['id'], _selected: boolean) => void;\n request: PresentationDefinitionRequestedCredential;\n selectedCredentialId?: CredentialListItem['id'];\n selectedFields?: Array<PresentationDefinitionField['id']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n}> = ({\n allCredentials,\n expanded,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n request,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const credential = allCredentials.find((c) => c.id === selectedCredentialId);\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);\n\n const selectionOptions = useMemo(\n () =>\n request.applicableCredentials.filter((applicableCredentialId) =>\n allCredentials.some(({ id, state }) => id === applicableCredentialId && state === CredentialStateEnum.ACCEPTED),\n ),\n [allCredentials, request],\n );\n const multipleCredentialsAvailable = selectionOptions.length > 1;\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n }\n : undefined,\n );\n\n const invalid = useMemo(() => {\n if (!credential?.lvvcIssuanceDate || !request.validityCredentialNbf) {\n return false;\n }\n return new Date(credential.lvvcIssuanceDate) < new Date(request.validityCredentialNbf);\n }, [credential, request]);\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (invalid) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [expanded, invalid, labels, multipleCredentialsAvailable, onSelectCredential, testID, validityState]);\n\n if (!config) {\n return null;\n }\n\n const { card, attributes } = shareCredentialCardFromCredential(\n credential,\n invalid,\n Boolean(expanded),\n multipleCredentialsAvailable,\n request,\n selectedFields,\n config,\n testID,\n labels,\n );\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: request.id,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onSelectField}\n onImagePreview={onImagePreview}\n style={[styles.credential, { borderColor: colorScheme.background }, style]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n credential: {\n borderRadius: 10,\n borderWidth: 1,\n marginBottom: 8,\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export * from './select-credential-v2';
2
+ export * from './share-credential-v2';
3
+ export * from './share-credential-v2-group';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from './select-credential-v2';\nexport * from './share-credential-v2';\nexport * from './share-credential-v2-group';\n"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,uBAAuB;AACrC,cAAc,6BAA6B","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { Dimensions } from 'react-native';
3
+ import { CredentialDetailsCardListItem } from '../../../ui-components';
4
+ import { useCoreConfig } from '../../../utils';
5
+ import { selectCredentialCardFromV2Credential } from '../../../utils/parsers/credential-sharing-v2';
6
+ export const SelectCredentialV2 = ({
7
+ credential,
8
+ labels,
9
+ lastItem,
10
+ multiple,
11
+ onImagePreview,
12
+ onSelected,
13
+ selected,
14
+ testID
15
+ }) => {
16
+ const {
17
+ data: config
18
+ } = useCoreConfig();
19
+ const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);
20
+ const onHeaderPress = useCallback(() => {
21
+ onSelected === null || onSelected === void 0 || onSelected(credential.id, !selected);
22
+ }, [credential.id, onSelected, selected]);
23
+ if (!credential || !config) {
24
+ return null;
25
+ }
26
+ const {
27
+ card,
28
+ attributes
29
+ } = selectCredentialCardFromV2Credential(credential, selected, multiple, config, testID, labels);
30
+ return /*#__PURE__*/React.createElement(CredentialDetailsCardListItem, {
31
+ attributes: attributes,
32
+ card: {
33
+ ...card,
34
+ onHeaderPress,
35
+ width: cardWidth
36
+ },
37
+ expanded: selected,
38
+ lastItem: lastItem,
39
+ onImagePreview: onImagePreview
40
+ });
41
+ };
42
+ //# sourceMappingURL=select-credential-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","Dimensions","CredentialDetailsCardListItem","useCoreConfig","selectCredentialCardFromV2Credential","SelectCredentialV2","credential","labels","lastItem","multiple","onImagePreview","onSelected","selected","testID","data","config","cardWidth","get","width","onHeaderPress","id","card","attributes","createElement","expanded"],"sources":["select-credential-v2.tsx"],"sourcesContent":["import { CredentialListItem, PresentationDefinitionV2CredentialDetail } from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType } from 'react-native';\n\nimport { CredentialDetailsCardListItem } from '../../../ui-components';\nimport { ShareCredentialCardLabels, useCoreConfig } from '../../../utils';\nimport { selectCredentialCardFromV2Credential } from '../../../utils/parsers/credential-sharing-v2';\n\nexport const SelectCredentialV2: FC<{\n credential: PresentationDefinitionV2CredentialDetail;\n labels: ShareCredentialCardLabels;\n lastItem: boolean;\n multiple: boolean;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelected?: (credentialId: CredentialListItem['id'], selected: boolean) => void;\n selected: boolean;\n testID: string;\n}> = ({ credential, labels, lastItem, multiple, onImagePreview, onSelected, selected, testID }) => {\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);\n\n const onHeaderPress = useCallback(() => {\n onSelected?.(credential.id, !selected);\n }, [credential.id, onSelected, selected]);\n\n if (!credential || !config) {\n return null;\n }\n\n const { card, attributes } = selectCredentialCardFromV2Credential(\n credential,\n selected,\n multiple,\n config,\n testID,\n labels,\n );\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={selected}\n lastItem={lastItem}\n onImagePreview={onImagePreview}\n />\n );\n};\n"],"mappings":"AACA,OAAOA,KAAK,IAAQC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACvD,SAASC,UAAU,QAA6B,cAAc;AAE9D,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAAoCC,aAAa,QAAQ,gBAAgB;AACzE,SAASC,oCAAoC,QAAQ,8CAA8C;AAEnG,OAAO,MAAMC,kBASX,GAAGA,CAAC;EAAEC,UAAU;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC,cAAc;EAAEC,UAAU;EAAEC,QAAQ;EAAEC;AAAO,CAAC,KAAK;EACjG,MAAM;IAAEC,IAAI,EAAEC;EAAO,CAAC,GAAGZ,aAAa,CAAC,CAAC;EACxC,MAAMa,SAAS,GAAGhB,OAAO,CAAC,MAAMC,UAAU,CAACgB,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;EAExE,MAAMC,aAAa,GAAGpB,WAAW,CAAC,MAAM;IACtCY,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGL,UAAU,CAACc,EAAE,EAAE,CAACR,QAAQ,CAAC;EACxC,CAAC,EAAE,CAACN,UAAU,CAACc,EAAE,EAAET,UAAU,EAAEC,QAAQ,CAAC,CAAC;EAEzC,IAAI,CAACN,UAAU,IAAI,CAACS,MAAM,EAAE;IAC1B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEM,IAAI;IAAEC;EAAW,CAAC,GAAGlB,oCAAoC,CAC/DE,UAAU,EACVM,QAAQ,EACRH,QAAQ,EACRM,MAAM,EACNF,MAAM,EACNN,MACF,CAAC;EAED,oBACET,KAAA,CAAAyB,aAAA,CAACrB,6BAA6B;IAC5BoB,UAAU,EAAEA,UAAW;IACvBD,IAAI,EAAE;MACJ,GAAGA,IAAI;MACPF,aAAa;MACbD,KAAK,EAAEF;IACT,CAAE;IACFQ,QAAQ,EAAEZ,QAAS;IACnBJ,QAAQ,EAAEA,QAAS;IACnBE,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import Animated, { LinearTransition } from 'react-native-reanimated';
4
+ import { BlurView, CredentialCardShadow, DownIcon, Selector, SelectorStatus, TouchableOpacity, UpIcon } from '../../../ui-components';
5
+ import CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';
6
+ import { concatTestID, useCredentialListExpandedCard } from '../../../utils';
7
+ import { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';
8
+ const multipleCredentialsSelected = (selectedCredentials, credentialRequestId) => {
9
+ return selectedCredentials && selectedCredentials[credentialRequestId] && Array.isArray(selectedCredentials[credentialRequestId]) && selectedCredentials[credentialRequestId].length > 1;
10
+ };
11
+ const numberOfCardsForRequest = (selectedCredentials, credentialRequestId) => {
12
+ if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {
13
+ return 1;
14
+ }
15
+ const selection = selectedCredentials[credentialRequestId];
16
+ if (Array.isArray(selection)) {
17
+ return selection.length;
18
+ }
19
+ return 1;
20
+ };
21
+ const heightForNumberOfCards = numberOfCards => 60 * (numberOfCards + 1) + 12 * numberOfCards;
22
+ export const ShareCredentialV2Group = ({
23
+ labels,
24
+ lastGroup,
25
+ onGroupSelect,
26
+ onImagePreview,
27
+ onSelectCredential,
28
+ onSelectField,
29
+ presentationDefinition,
30
+ requestGroup,
31
+ selected,
32
+ selectedCredentials = {},
33
+ style,
34
+ testID,
35
+ valid
36
+ }) => {
37
+ const {
38
+ expandedCredential,
39
+ onHeaderPress
40
+ } = useCredentialListExpandedCard();
41
+ const numberOfCards = requestGroup.reduce((acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId), 0);
42
+ const singleCredentialGroup = requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);
43
+ const headerPressHandler = useCallback(() => {
44
+ onGroupSelect === null || onGroupSelect === void 0 || onGroupSelect(!selected);
45
+ }, [selected, onGroupSelect]);
46
+ const onNestedCardHeaderPress = useCallback(credentialId => () => {
47
+ if (!selected) {
48
+ onGroupSelect === null || onGroupSelect === void 0 || onGroupSelect(true);
49
+ }
50
+ onHeaderPress(credentialId);
51
+ }, [selected, onGroupSelect, onHeaderPress]);
52
+ const credentialCards = useMemo(() => {
53
+ return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, {
54
+ length: credentialRequestsLength
55
+ }) => {
56
+ const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;
57
+ const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId];
58
+ let defaultSelection;
59
+ if ('applicableCredentials' in credentialQuery) {
60
+ var _credentialQuery$appl;
61
+ defaultSelection = (_credentialQuery$appl = credentialQuery.applicableCredentials) !== null && _credentialQuery$appl !== void 0 && _credentialQuery$appl[0] ? {
62
+ credentialId: credentialQuery.applicableCredentials[0].id,
63
+ userSelections: []
64
+ } : {
65
+ credentialId: '',
66
+ userSelections: []
67
+ };
68
+ } else {
69
+ defaultSelection = {
70
+ credentialId: '',
71
+ userSelections: []
72
+ };
73
+ }
74
+ const request = selectedCredentials[credentialRequestId];
75
+ const credentialSelections = request ? Array.isArray(request) ? request : [request] : [defaultSelection];
76
+ return credentialSelections === null || credentialSelections === void 0 ? void 0 : credentialSelections.flatMap((credentialRequest, credentialIndex, {
77
+ length: credentialsLength
78
+ }) => {
79
+ const selectedFields = credentialRequest.userSelections;
80
+ const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;
81
+ const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;
82
+ const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);
83
+ const headerAccessory = singleCredentialGroup && valid ? /*#__PURE__*/React.createElement(Selector, {
84
+ status: selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty
85
+ }) : cardExpanded ? UpIcon : DownIcon;
86
+ return /*#__PURE__*/React.createElement(ShareCredentialV2, {
87
+ credentialQuery: credentialQuery,
88
+ credentialRequestId: credentialRequestId,
89
+ expanded: cardExpanded,
90
+ grouped: !singleCredentialGroup,
91
+ headerAccessory: headerAccessory,
92
+ key: credentialRequestId,
93
+ labels: labels,
94
+ lastItem: lastItem,
95
+ onHeaderPress: singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId),
96
+ onImagePreview: onImagePreview,
97
+ onSelectCredential: onSelectCredential === null || onSelectCredential === void 0 ? void 0 : onSelectCredential(credentialRequestId),
98
+ onSelectField: onSelectField(credentialRequestId),
99
+ selectedCredentialId: credentialRequest.credentialId,
100
+ selectedFields: selectedFields,
101
+ style: [!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast],
102
+ testID: concatTestID(testID, credentialRequestId)
103
+ });
104
+ });
105
+ });
106
+ }, [expandedCredential, labels, lastGroup, headerPressHandler, onImagePreview, onNestedCardHeaderPress, onSelectCredential, onSelectField, presentationDefinition.credentialQueries, requestGroup, selected, selectedCredentials, singleCredentialGroup, testID, valid]);
107
+ if (singleCredentialGroup) {
108
+ return credentialCards[0];
109
+ }
110
+ const groupHeaderAccessory = valid ? /*#__PURE__*/React.createElement(Selector, {
111
+ status: selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty
112
+ }) : selected ? UpIcon : DownIcon;
113
+ return /*#__PURE__*/React.createElement(Animated.View, {
114
+ layout: LinearTransition,
115
+ style: [styles.animatedWrapper,
116
+ // eslint-disable-next-line react-native/no-inline-styles
117
+ {
118
+ height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards)
119
+ }, style]
120
+ }, /*#__PURE__*/React.createElement(Animated.View, {
121
+ layout: LinearTransition,
122
+ style: [singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper, !singleCredentialGroup && styles.requestedCredential, lastGroup && styles.requestedCredentialLast, style]
123
+ }, /*#__PURE__*/React.createElement(BlurView, {
124
+ blurStyle: "strong",
125
+ darkMode: true,
126
+ style: StyleSheet.absoluteFill
127
+ }), /*#__PURE__*/React.createElement(TouchableOpacity, {
128
+ onPress: headerPressHandler
129
+ }, /*#__PURE__*/React.createElement(CredentialGroupHeader, {
130
+ accessory: groupHeaderAccessory,
131
+ name: labels.groupHeader,
132
+ style: styles.header
133
+ })), credentialCards));
134
+ };
135
+ const styles = StyleSheet.create({
136
+ animatedWrapper: {
137
+ ...CredentialCardShadow
138
+ },
139
+ groupedCredentialsWrapper: {
140
+ borderRadius: 10 + GroupedShareCredentialV2Padding,
141
+ overflow: 'hidden',
142
+ paddingBottom: GroupedShareCredentialV2Padding
143
+ },
144
+ header: {
145
+ marginBottom: GroupedShareCredentialV2Padding
146
+ },
147
+ requestedCredential: {
148
+ marginBottom: 12
149
+ },
150
+ requestedCredentialLast: {
151
+ marginBottom: 0
152
+ }
153
+ });
154
+ //# sourceMappingURL=share-credential-v2-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","StyleSheet","Animated","LinearTransition","BlurView","CredentialCardShadow","DownIcon","Selector","SelectorStatus","TouchableOpacity","UpIcon","CredentialGroupHeader","concatTestID","useCredentialListExpandedCard","GroupedShareCredentialV2Padding","ShareCredentialV2","multipleCredentialsSelected","selectedCredentials","credentialRequestId","Array","isArray","length","numberOfCardsForRequest","selection","heightForNumberOfCards","numberOfCards","ShareCredentialV2Group","labels","lastGroup","onGroupSelect","onImagePreview","onSelectCredential","onSelectField","presentationDefinition","requestGroup","selected","style","testID","valid","expandedCredential","onHeaderPress","reduce","acc","groupId","singleCredentialGroup","headerPressHandler","onNestedCardHeaderPress","credentialId","credentialCards","flatMap","credentialRequestIndex","credentialRequestsLength","lastQuery","credentialQuery","credentialQueries","defaultSelection","_credentialQuery$appl","applicableCredentials","id","userSelections","request","credentialSelections","credentialRequest","credentialIndex","credentialsLength","selectedFields","cardId","lastItem","cardExpanded","headerAccessory","createElement","status","SelectedRadio","Empty","expanded","grouped","key","selectedCredentialId","styles","requestedCredential","requestedCredentialLast","groupHeaderAccessory","View","layout","animatedWrapper","height","undefined","groupedCredentialsWrapper","blurStyle","darkMode","absoluteFill","onPress","accessory","name","groupHeader","header","create","borderRadius","overflow","paddingBottom","marginBottom"],"sources":["share-credential-v2-group.tsx"],"sourcesContent":["import {\n CredentialListItem,\n PresentationDefinitionV2,\n PresentationDefinitionV2CredentialClaim,\n PresentationSubmitV2CredentialRequest,\n} from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport {\n BlurView,\n CredentialCardShadow,\n DownIcon,\n Selector,\n SelectorStatus,\n TouchableOpacity,\n UpIcon,\n} from '../../../ui-components';\nimport CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';\nimport { concatTestID, useCredentialListExpandedCard } from '../../../utils';\nimport { ShareCredentialLabels } from '../v1/share-credential';\nimport { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';\n\nexport type CredentialQuerySelection = Record<\n string,\n PresentationSubmitV2CredentialRequest | PresentationSubmitV2CredentialRequest[]\n>;\n\nexport type ShareCredentialGroupLabels = ShareCredentialLabels & {\n groupHeader: string;\n};\n\nexport type ShareCredentialV2GroupProps = {\n labels: ShareCredentialGroupLabels;\n lastGroup: boolean;\n onGroupSelect?: (selected: boolean) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential: (requestCredentialId: string) => () => void;\n onSelectField: (\n requestCredentialId: string,\n ) => (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2CredentialClaim['path'],\n selected: boolean,\n ) => void;\n presentationDefinition: PresentationDefinitionV2;\n requestGroup: string[];\n selected?: boolean;\n selectedCredentials?: CredentialQuerySelection;\n style?: StyleProp<ViewStyle>;\n testID: string;\n valid: boolean;\n};\n\nconst multipleCredentialsSelected = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n return (\n selectedCredentials &&\n selectedCredentials[credentialRequestId] &&\n Array.isArray(selectedCredentials[credentialRequestId]) &&\n (selectedCredentials[credentialRequestId] as PresentationSubmitV2CredentialRequest[]).length > 1\n );\n};\n\nconst numberOfCardsForRequest = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {\n return 1;\n }\n const selection = selectedCredentials[credentialRequestId];\n if (Array.isArray(selection)) {\n return selection.length;\n }\n return 1;\n};\n\nconst heightForNumberOfCards = (numberOfCards: number) => 60 * (numberOfCards + 1) + 12 * numberOfCards;\n\nexport const ShareCredentialV2Group: FC<ShareCredentialV2GroupProps> = ({\n labels,\n lastGroup,\n onGroupSelect,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n presentationDefinition,\n requestGroup,\n selected,\n selectedCredentials = {},\n style,\n testID,\n valid,\n}) => {\n const { expandedCredential, onHeaderPress } = useCredentialListExpandedCard();\n const numberOfCards = requestGroup.reduce(\n (acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId),\n 0,\n );\n const singleCredentialGroup =\n requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);\n\n const headerPressHandler = useCallback(() => {\n onGroupSelect?.(!selected);\n }, [selected, onGroupSelect]);\n\n const onNestedCardHeaderPress = useCallback(\n (credentialId: string) => () => {\n if (!selected) {\n onGroupSelect?.(true);\n }\n onHeaderPress(credentialId);\n },\n [selected, onGroupSelect, onHeaderPress],\n );\n\n const credentialCards = useMemo(() => {\n return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, { length: credentialRequestsLength }) => {\n const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;\n\n const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId];\n let defaultSelection: PresentationSubmitV2CredentialRequest;\n if ('applicableCredentials' in credentialQuery) {\n defaultSelection = credentialQuery.applicableCredentials?.[0]\n ? {\n credentialId: credentialQuery.applicableCredentials[0].id,\n userSelections: [],\n }\n : {\n credentialId: '',\n userSelections: [],\n };\n } else {\n defaultSelection = {\n credentialId: '',\n userSelections: [],\n };\n }\n const request = selectedCredentials[credentialRequestId];\n const credentialSelections = request ? (Array.isArray(request) ? request : [request]) : [defaultSelection];\n\n return credentialSelections?.flatMap((credentialRequest, credentialIndex, { length: credentialsLength }) => {\n const selectedFields = credentialRequest.userSelections;\n const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;\n const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;\n const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);\n const headerAccessory =\n singleCredentialGroup && valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : cardExpanded ? (\n UpIcon\n ) : (\n DownIcon\n );\n return (\n <ShareCredentialV2\n credentialQuery={credentialQuery}\n credentialRequestId={credentialRequestId}\n expanded={cardExpanded}\n grouped={!singleCredentialGroup}\n headerAccessory={headerAccessory}\n key={credentialRequestId}\n labels={labels}\n lastItem={lastItem}\n onHeaderPress={singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId)}\n onImagePreview={onImagePreview}\n onSelectCredential={onSelectCredential?.(credentialRequestId)}\n onSelectField={onSelectField(credentialRequestId)}\n selectedCredentialId={credentialRequest.credentialId}\n selectedFields={selectedFields}\n style={[!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast]}\n testID={concatTestID(testID, credentialRequestId)}\n />\n );\n });\n });\n }, [\n expandedCredential,\n labels,\n lastGroup,\n headerPressHandler,\n onImagePreview,\n onNestedCardHeaderPress,\n onSelectCredential,\n onSelectField,\n presentationDefinition.credentialQueries,\n requestGroup,\n selected,\n selectedCredentials,\n singleCredentialGroup,\n testID,\n valid,\n ]);\n\n if (singleCredentialGroup) {\n return credentialCards[0];\n }\n\n const groupHeaderAccessory = valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : selected ? (\n UpIcon\n ) : (\n DownIcon\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards),\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper,\n !singleCredentialGroup && styles.requestedCredential,\n lastGroup && styles.requestedCredentialLast,\n style,\n ]}>\n <BlurView blurStyle=\"strong\" darkMode={true} style={StyleSheet.absoluteFill} />\n <TouchableOpacity onPress={headerPressHandler}>\n <CredentialGroupHeader accessory={groupHeaderAccessory} name={labels.groupHeader} style={styles.header} />\n </TouchableOpacity>\n {credentialCards}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n groupedCredentialsWrapper: {\n borderRadius: 10 + GroupedShareCredentialV2Padding,\n overflow: 'hidden',\n paddingBottom: GroupedShareCredentialV2Padding,\n },\n header: {\n marginBottom: GroupedShareCredentialV2Padding,\n },\n requestedCredential: {\n marginBottom: 12,\n },\n requestedCredentialLast: {\n marginBottom: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { Dimensions, StyleSheet } from 'react-native';
3
+ import { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';
4
+ import { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';
5
+ import { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';
6
+ import { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';
7
+ import { ShareCredentialCardNotice } from '../share-credential-card-notice';
8
+ export const GroupedShareCredentialV2Padding = 4;
9
+ export const ShareCredentialV2 = ({
10
+ credentialQuery,
11
+ credentialRequestId,
12
+ expanded,
13
+ grouped,
14
+ headerAccessory,
15
+ labels,
16
+ lastItem,
17
+ onHeaderPress,
18
+ onImagePreview,
19
+ onSelectCredential,
20
+ onSelectField,
21
+ selectedCredentialId,
22
+ selectedFields,
23
+ style,
24
+ testID
25
+ }) => {
26
+ var _applicableCredential, _credential$issuer;
27
+ const colorScheme = useAppColorScheme();
28
+ const applicableCredentials = 'applicableCredentials' in credentialQuery ? credentialQuery.applicableCredentials : undefined;
29
+ const failureHint = 'failureHint' in credentialQuery ? credentialQuery.failureHint : undefined;
30
+ const credential = (_applicableCredential = applicableCredentials === null || applicableCredentials === void 0 ? void 0 : applicableCredentials.find(c => c.id === selectedCredentialId)) !== null && _applicableCredential !== void 0 ? _applicableCredential : applicableCredentials === null || applicableCredentials === void 0 ? void 0 : applicableCredentials[0];
31
+ const {
32
+ data: config
33
+ } = useCoreConfig();
34
+ const cardWidth = useMemo(() => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0), [grouped]);
35
+ const multipleCredentialsAvailable = Boolean((applicableCredentials === null || applicableCredentials === void 0 ? void 0 : applicableCredentials.length) && applicableCredentials.length > 1);
36
+ const validityState = getValidityState(credential ? {
37
+ ...credential,
38
+ issuer: credential === null || credential === void 0 || (_credential$issuer = credential.issuer) === null || _credential$issuer === void 0 ? void 0 : _credential$issuer.id
39
+ } : undefined);
40
+ const footer = useMemo(() => {
41
+ if (!expanded) {
42
+ return;
43
+ }
44
+ if (validityState === ValidityState.Revoked) {
45
+ return /*#__PURE__*/React.createElement(ShareCredentialCardNotice, {
46
+ testID: concatTestID(testID, 'notice.revoked'),
47
+ text: labels.revokedCredentialNotice
48
+ });
49
+ }
50
+ if (validityState === ValidityState.Suspended) {
51
+ return /*#__PURE__*/React.createElement(ShareCredentialCardNotice, {
52
+ testID: concatTestID(testID, 'notice.suspended'),
53
+ text: labels.suspendedCredentialNotice
54
+ });
55
+ }
56
+ if ((failureHint === null || failureHint === void 0 ? void 0 : failureHint.reason) === 'VALIDITY') {
57
+ return /*#__PURE__*/React.createElement(ShareCredentialCardNotice, {
58
+ testID: concatTestID(testID, 'notice.invalid'),
59
+ text: labels.invalidCredentialNotice
60
+ });
61
+ }
62
+ if (multipleCredentialsAvailable) {
63
+ return /*#__PURE__*/React.createElement(SelectShareCredentialCardNotice, {
64
+ buttonTitle: labels.multipleCredentialsSelect,
65
+ onPress: onSelectCredential,
66
+ testID: concatTestID(testID, 'notice.multiple'),
67
+ text: labels.multipleCredentialsNotice
68
+ });
69
+ }
70
+ }, [expanded, failureHint === null || failureHint === void 0 ? void 0 : failureHint.reason, labels.invalidCredentialNotice, labels.multipleCredentialsNotice, labels.multipleCredentialsSelect, labels.revokedCredentialNotice, labels.suspendedCredentialNotice, multipleCredentialsAvailable, onSelectCredential, testID, validityState]);
71
+ const onAttributeSelected = useCallback((fieldPath, selected) => {
72
+ if (!selectedCredentialId) {
73
+ return;
74
+ }
75
+ onSelectField(selectedCredentialId, fieldPath, selected);
76
+ }, [onSelectField, selectedCredentialId]);
77
+ if (!config) {
78
+ return null;
79
+ }
80
+ const {
81
+ card: {
82
+ header,
83
+ ...card
84
+ },
85
+ attributes
86
+ } = shareCredentialCardFromV2PresentationCredential(credential, failureHint, Boolean(expanded), multipleCredentialsAvailable, selectedFields, config, testID, labels);
87
+ if (headerAccessory) {
88
+ header.accessory = headerAccessory;
89
+ }
90
+ return /*#__PURE__*/React.createElement(CredentialDetailsCardListItem, {
91
+ attributes: attributes,
92
+ card: {
93
+ ...card,
94
+ credentialId: credentialRequestId,
95
+ header,
96
+ onHeaderPress,
97
+ width: cardWidth
98
+ },
99
+ expanded: expanded,
100
+ footer: footer,
101
+ lastItem: lastItem,
102
+ onAttributeSelected: onAttributeSelected,
103
+ onImagePreview: onImagePreview,
104
+ style: [styles.credential, grouped ? styles.groupedCredential : styles.bordered, {
105
+ borderColor: colorScheme.background
106
+ }, style],
107
+ testID: testID
108
+ });
109
+ };
110
+ const styles = StyleSheet.create({
111
+ bordered: {
112
+ borderWidth: 1
113
+ },
114
+ credential: {
115
+ borderRadius: 10,
116
+ marginBottom: 8
117
+ },
118
+ groupedCredential: {
119
+ marginHorizontal: GroupedShareCredentialV2Padding
120
+ }
121
+ });
122
+ //# sourceMappingURL=share-credential-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","getValidityState","useCoreConfig","ValidityState","shareCredentialCardFromV2PresentationCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","GroupedShareCredentialV2Padding","ShareCredentialV2","credentialQuery","credentialRequestId","expanded","grouped","headerAccessory","labels","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","selectedCredentialId","selectedFields","style","testID","_applicableCredential","_credential$issuer","colorScheme","applicableCredentials","undefined","failureHint","credential","find","c","id","data","config","cardWidth","get","width","multipleCredentialsAvailable","Boolean","length","validityState","issuer","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","reason","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","onAttributeSelected","fieldPath","selected","card","header","attributes","accessory","credentialId","styles","groupedCredential","bordered","borderColor","background","create","borderWidth","borderRadius","marginBottom","marginHorizontal"],"sources":["share-credential-v2.tsx"],"sourcesContent":["import {\n CredentialListItem,\n PresentationDefinitionV2CredentialClaim,\n PresentationDefinitionV2CredentialQuery,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';\nimport { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\nimport { ShareCredentialLabels } from '../v1';\n\nexport type ShareCredentialV2Props = {\n credentialQuery: PresentationDefinitionV2CredentialQuery;\n credentialRequestId: string;\n expanded?: boolean;\n grouped?: boolean;\n headerAccessory?: React.ComponentType<any> | React.ReactElement;\n labels: ShareCredentialLabels;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2CredentialClaim['path'],\n selected: boolean,\n ) => void;\n selectedCredentialId?: CredentialListItem['id'];\n selectedFields?: Array<PresentationDefinitionV2CredentialClaim['path']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n};\n\nexport const GroupedShareCredentialV2Padding = 4;\n\nexport const ShareCredentialV2: FunctionComponent<ShareCredentialV2Props> = ({\n credentialQuery,\n credentialRequestId,\n expanded,\n grouped,\n headerAccessory,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const applicableCredentials =\n 'applicableCredentials' in credentialQuery ? credentialQuery.applicableCredentials : undefined;\n const failureHint = 'failureHint' in credentialQuery ? credentialQuery.failureHint : undefined;\n const credential = applicableCredentials?.find((c) => c.id === selectedCredentialId) ?? applicableCredentials?.[0];\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(\n () => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0),\n [grouped],\n );\n\n const multipleCredentialsAvailable = Boolean(applicableCredentials?.length && applicableCredentials.length > 1);\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n }\n : undefined,\n );\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (failureHint?.reason === 'VALIDITY') {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [\n expanded,\n failureHint?.reason,\n labels.invalidCredentialNotice,\n labels.multipleCredentialsNotice,\n labels.multipleCredentialsSelect,\n labels.revokedCredentialNotice,\n labels.suspendedCredentialNotice,\n multipleCredentialsAvailable,\n onSelectCredential,\n testID,\n validityState,\n ]);\n\n const onAttributeSelected = useCallback(\n (fieldPath: PresentationDefinitionV2CredentialClaim['path'], selected: boolean) => {\n if (!selectedCredentialId) {\n return;\n }\n onSelectField(selectedCredentialId, fieldPath, selected);\n },\n [onSelectField, selectedCredentialId],\n );\n\n if (!config) {\n return null;\n }\n\n const {\n card: { header, ...card },\n attributes,\n } = shareCredentialCardFromV2PresentationCredential(\n credential,\n failureHint,\n Boolean(expanded),\n multipleCredentialsAvailable,\n selectedFields,\n config,\n testID,\n labels,\n );\n\n if (headerAccessory) {\n header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: credentialRequestId,\n header,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onAttributeSelected}\n onImagePreview={onImagePreview}\n style={[\n styles.credential,\n grouped ? styles.groupedCredential : styles.bordered,\n { borderColor: colorScheme.background },\n style,\n ]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n bordered: {\n borderWidth: 1,\n },\n credential: {\n borderRadius: 10,\n marginBottom: 8,\n },\n groupedCredential: {\n marginHorizontal: GroupedShareCredentialV2Padding,\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { concatTestID } from '../../utils';
4
4
  import { TouchableHighlight } from '../accessibility';
5
+ import { LinkIcon } from '../icons';
5
6
  import { Typography } from '../text';
6
7
  import { useAppColorScheme } from '../theme';
7
- import { LinkIcon } from '../icons';
8
8
  const ShareButton = ({
9
9
  onPress,
10
10
  style,
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","Typography","useAppColorScheme","LinkIcon","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\nimport { LinkIcon } from '../icons';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAC5C,SAASC,QAAQ,QAAQ,UAAU;AASnC,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGP,iBAAiB,CAAC,CAAC;EAEvC,oBACEN,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACP,QAAQ;IAACa,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACT,UAAU;IAACO,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,QAAQ,EAAE;EACZ,CAAC;EACDR,SAAS,EAAE;IACTS,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAexB,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","LinkIcon","Typography","useAppColorScheme","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { LinkIcon } from '../icons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGN,iBAAiB,CAAC,CAAC;EAEvC,oBACEP,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACT,QAAQ;IAACe,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACR,UAAU;IAACM,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,QAAQ,EAAE;EACZ,CAAC;EACDR,SAAS,EAAE;IACTS,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAexB,WAAW","ignoreList":[]}
@@ -1,6 +1,8 @@
1
+ import { useIsFocused } from '@react-navigation/native';
1
2
  import React, { useMemo } from 'react';
2
3
  import { StyleSheet, View } from 'react-native';
3
4
  import { Camera, useCameraDevice, useCodeScanner } from 'react-native-vision-camera';
5
+ import { useIsAppActive } from '../../utils';
4
6
  import CameraOverlay from './camera-overlay';
5
7
  const QRCodeScanner = ({
6
8
  cameraOverlay,
@@ -9,6 +11,8 @@ const QRCodeScanner = ({
9
11
  noCameraView = null,
10
12
  ...viewProps
11
13
  }) => {
14
+ const isFocused = useIsFocused();
15
+ const isAppActive = useIsAppActive();
12
16
  const qrCodeScanner = useCodeScanner({
13
17
  codeTypes,
14
18
  onCodeScanned: onQRCodeRead
@@ -31,7 +35,7 @@ const QRCodeScanner = ({
31
35
  return /*#__PURE__*/React.createElement(View, viewProps, /*#__PURE__*/React.createElement(Camera, {
32
36
  codeScanner: qrCodeScanner,
33
37
  device: device,
34
- isActive: true,
38
+ isActive: isFocused && isAppActive !== false,
35
39
  style: StyleSheet.absoluteFill
36
40
  }), cameraOverlayView);
37
41
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","StyleSheet","View","Camera","useCameraDevice","useCodeScanner","CameraOverlay","QRCodeScanner","cameraOverlay","codeTypes","onQRCodeRead","noCameraView","viewProps","qrCodeScanner","onCodeScanned","device","cameraOverlayView","createElement","isValidElement","CameraOverlayComponent","codeScanner","isActive","style","absoluteFill"],"sources":["qr-code-scanner.tsx"],"sourcesContent":["import React, { FunctionComponent, useMemo } from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\nimport { Camera, Code, CodeType, useCameraDevice, useCodeScanner } from 'react-native-vision-camera';\n\nimport CameraOverlay from './camera-overlay';\n\nexport type QRCodeScannerProps = ViewProps & {\n cameraOverlay?: React.ComponentType<any> | React.ReactElement;\n codeTypes?: CodeType[];\n noCameraView?: JSX.Element;\n onQRCodeRead: (code: Code[]) => void;\n};\n\nconst QRCodeScanner: FunctionComponent<QRCodeScannerProps> = ({\n cameraOverlay,\n codeTypes = ['qr'],\n onQRCodeRead,\n noCameraView = null,\n ...viewProps\n}) => {\n const qrCodeScanner = useCodeScanner({\n codeTypes,\n onCodeScanned: onQRCodeRead,\n });\n\n const device = useCameraDevice('back');\n\n const cameraOverlayView: React.ReactElement | undefined = useMemo(() => {\n if (!cameraOverlay) {\n return <CameraOverlay />;\n }\n if (React.isValidElement(cameraOverlay)) {\n return cameraOverlay;\n } else {\n const CameraOverlayComponent = cameraOverlay as React.ComponentType<any>;\n return <CameraOverlayComponent />;\n }\n }, [cameraOverlay]);\n\n if (!device) {\n return noCameraView;\n }\n\n return (\n <View {...viewProps}>\n <Camera codeScanner={qrCodeScanner} device={device} isActive={true} style={StyleSheet.absoluteFill} />\n {cameraOverlayView}\n </View>\n );\n};\n\nexport default QRCodeScanner;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAuBC,OAAO,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAC1D,SAASC,MAAM,EAAkBC,eAAe,EAAEC,cAAc,QAAQ,4BAA4B;AAEpG,OAAOC,aAAa,MAAM,kBAAkB;AAS5C,MAAMC,aAAoD,GAAGA,CAAC;EAC5DC,aAAa;EACbC,SAAS,GAAG,CAAC,IAAI,CAAC;EAClBC,YAAY;EACZC,YAAY,GAAG,IAAI;EACnB,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,aAAa,GAAGR,cAAc,CAAC;IACnCI,SAAS;IACTK,aAAa,EAAEJ;EACjB,CAAC,CAAC;EAEF,MAAMK,MAAM,GAAGX,eAAe,CAAC,MAAM,CAAC;EAEtC,MAAMY,iBAAiD,GAAGhB,OAAO,CAAC,MAAM;IACtE,IAAI,CAACQ,aAAa,EAAE;MAClB,oBAAOT,KAAA,CAAAkB,aAAA,CAACX,aAAa,MAAE,CAAC;IAC1B;IACA,iBAAIP,KAAK,CAACmB,cAAc,CAACV,aAAa,CAAC,EAAE;MACvC,OAAOA,aAAa;IACtB,CAAC,MAAM;MACL,MAAMW,sBAAsB,GAAGX,aAAyC;MACxE,oBAAOT,KAAA,CAAAkB,aAAA,CAACE,sBAAsB,MAAE,CAAC;IACnC;EACF,CAAC,EAAE,CAACX,aAAa,CAAC,CAAC;EAEnB,IAAI,CAACO,MAAM,EAAE;IACX,OAAOJ,YAAY;EACrB;EAEA,oBACEZ,KAAA,CAAAkB,aAAA,CAACf,IAAI,EAAKU,SAAS,eACjBb,KAAA,CAAAkB,aAAA,CAACd,MAAM;IAACiB,WAAW,EAAEP,aAAc;IAACE,MAAM,EAAEA,MAAO;IAACM,QAAQ,EAAE,IAAK;IAACC,KAAK,EAAErB,UAAU,CAACsB;EAAa,CAAE,CAAC,EACrGP,iBACG,CAAC;AAEX,CAAC;AAED,eAAeT,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["useIsFocused","React","useMemo","StyleSheet","View","Camera","useCameraDevice","useCodeScanner","useIsAppActive","CameraOverlay","QRCodeScanner","cameraOverlay","codeTypes","onQRCodeRead","noCameraView","viewProps","isFocused","isAppActive","qrCodeScanner","onCodeScanned","device","cameraOverlayView","createElement","isValidElement","CameraOverlayComponent","codeScanner","isActive","style","absoluteFill"],"sources":["qr-code-scanner.tsx"],"sourcesContent":["import { useIsFocused } from '@react-navigation/native';\nimport React, { FunctionComponent, useMemo } from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\nimport { Camera, Code, CodeType, useCameraDevice, useCodeScanner } from 'react-native-vision-camera';\n\nimport { useIsAppActive } from '../../utils';\nimport CameraOverlay from './camera-overlay';\n\nexport type QRCodeScannerProps = ViewProps & {\n cameraOverlay?: React.ComponentType<any> | React.ReactElement;\n codeTypes?: CodeType[];\n noCameraView?: JSX.Element;\n onQRCodeRead: (code: Code[]) => void;\n};\n\nconst QRCodeScanner: FunctionComponent<QRCodeScannerProps> = ({\n cameraOverlay,\n codeTypes = ['qr'],\n onQRCodeRead,\n noCameraView = null,\n ...viewProps\n}) => {\n const isFocused = useIsFocused();\n const isAppActive = useIsAppActive();\n const qrCodeScanner = useCodeScanner({\n codeTypes,\n onCodeScanned: onQRCodeRead,\n });\n\n const device = useCameraDevice('back');\n\n const cameraOverlayView = useMemo(() => {\n if (!cameraOverlay) {\n return <CameraOverlay />;\n }\n if (React.isValidElement(cameraOverlay)) {\n return cameraOverlay;\n } else {\n const CameraOverlayComponent = cameraOverlay as React.ComponentType<any>;\n return <CameraOverlayComponent />;\n }\n }, [cameraOverlay]);\n\n if (!device) {\n return noCameraView;\n }\n\n return (\n <View {...viewProps}>\n <Camera\n codeScanner={qrCodeScanner}\n device={device}\n isActive={isFocused && isAppActive !== false}\n style={StyleSheet.absoluteFill}\n />\n {cameraOverlayView}\n </View>\n );\n};\n\nexport default QRCodeScanner;\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,0BAA0B;AACvD,OAAOC,KAAK,IAAuBC,OAAO,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAC1D,SAASC,MAAM,EAAkBC,eAAe,EAAEC,cAAc,QAAQ,4BAA4B;AAEpG,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,aAAa,MAAM,kBAAkB;AAS5C,MAAMC,aAAoD,GAAGA,CAAC;EAC5DC,aAAa;EACbC,SAAS,GAAG,CAAC,IAAI,CAAC;EAClBC,YAAY;EACZC,YAAY,GAAG,IAAI;EACnB,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,SAAS,GAAGhB,YAAY,CAAC,CAAC;EAChC,MAAMiB,WAAW,GAAGT,cAAc,CAAC,CAAC;EACpC,MAAMU,aAAa,GAAGX,cAAc,CAAC;IACnCK,SAAS;IACTO,aAAa,EAAEN;EACjB,CAAC,CAAC;EAEF,MAAMO,MAAM,GAAGd,eAAe,CAAC,MAAM,CAAC;EAEtC,MAAMe,iBAAiB,GAAGnB,OAAO,CAAC,MAAM;IACtC,IAAI,CAACS,aAAa,EAAE;MAClB,oBAAOV,KAAA,CAAAqB,aAAA,CAACb,aAAa,MAAE,CAAC;IAC1B;IACA,iBAAIR,KAAK,CAACsB,cAAc,CAACZ,aAAa,CAAC,EAAE;MACvC,OAAOA,aAAa;IACtB,CAAC,MAAM;MACL,MAAMa,sBAAsB,GAAGb,aAAyC;MACxE,oBAAOV,KAAA,CAAAqB,aAAA,CAACE,sBAAsB,MAAE,CAAC;IACnC;EACF,CAAC,EAAE,CAACb,aAAa,CAAC,CAAC;EAEnB,IAAI,CAACS,MAAM,EAAE;IACX,OAAON,YAAY;EACrB;EAEA,oBACEb,KAAA,CAAAqB,aAAA,CAAClB,IAAI,EAAKW,SAAS,eACjBd,KAAA,CAAAqB,aAAA,CAACjB,MAAM;IACLoB,WAAW,EAAEP,aAAc;IAC3BE,MAAM,EAAEA,MAAO;IACfM,QAAQ,EAAEV,SAAS,IAAIC,WAAW,KAAK,KAAM;IAC7CU,KAAK,EAAExB,UAAU,CAACyB;EAAa,CAChC,CAAC,EACDP,iBACG,CAAC;AAEX,CAAC;AAED,eAAeX,aAAa","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useEffect, useState } from 'react';
3
- import { StyleSheet, View } from 'react-native';
4
- import Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
2
+ import React, { useCallback, useState } from 'react';
3
+ import { StyleSheet } from 'react-native';
4
+ import Animated, { LinearTransition } from 'react-native-reanimated';
5
5
  import { CredentialCardRatio, CredentialCardShadow } from './credential-card';
6
6
  import CredentialDetailsCard from './credential-details-card';
7
7
  const CredentialDetailsCardListItem = ({
@@ -11,43 +11,12 @@ const CredentialDetailsCardListItem = ({
11
11
  style,
12
12
  ...props
13
13
  }) => {
14
- const [cardWidth, setCardWidth] = useState();
15
- const [minHeight, setMinHeight] = useState();
16
14
  const [detailsCardHeight, setDetailsCardHeight] = useState();
17
- const cardListItemHeight = useSharedValue(undefined);
18
- useEffect(() => {
19
- if (!detailsCardHeight || !minHeight) {
20
- return;
21
- }
22
- const newValue = expanded ? detailsCardHeight : minHeight;
23
- if (cardListItemHeight.value === undefined) {
24
- cardListItemHeight.value = newValue;
25
- return;
26
- }
27
- cardListItemHeight.value = withTiming(newValue, {
28
- duration: 250
29
- });
30
- }, [cardListItemHeight, detailsCardHeight, minHeight, expanded]);
31
- const animatedCardWrapperStyle = useAnimatedStyle(() => {
32
- if (cardListItemHeight.value !== undefined) {
33
- return {
34
- height: cardListItemHeight.value
35
- };
36
- }
37
- if (lastItem || expanded) {
38
- return {};
39
- }
40
- return {
41
- height: 60
42
- };
43
- }, [cardListItemHeight, lastItem, expanded]);
44
- const cardWrapperStyle = {
45
- minHeight: cardWidth ? Math.ceil(cardWidth / CredentialCardRatio) : undefined
46
- };
15
+ const cardWidth = props.card.width;
16
+ const minHeight = lastItem ? Math.ceil(cardWidth / CredentialCardRatio) : 60;
47
17
  const onContentLayout = useCallback(event => {
48
18
  var _StyleSheet$flatten$b, _StyleSheet$flatten;
49
19
  const {
50
- width,
51
20
  height
52
21
  } = event.nativeEvent.layout;
53
22
  const borderWidth = (_StyleSheet$flatten$b = (_StyleSheet$flatten = StyleSheet.flatten(style)) === null || _StyleSheet$flatten === void 0 ? void 0 : _StyleSheet$flatten.borderWidth) !== null && _StyleSheet$flatten$b !== void 0 ? _StyleSheet$flatten$b : 0;
@@ -55,16 +24,22 @@ const CredentialDetailsCardListItem = ({
55
24
  if (cardHeight === detailsCardHeight) {
56
25
  return;
57
26
  }
58
- setCardWidth(width);
59
- if (!minHeight) {
60
- setMinHeight(lastItem ? Math.ceil(width / CredentialCardRatio) : 60);
61
- }
62
27
  setDetailsCardHeight(cardHeight);
63
- }, [lastItem, minHeight, style, detailsCardHeight]);
28
+ }, [style, detailsCardHeight]);
64
29
  return /*#__PURE__*/React.createElement(Animated.View, {
65
- style: [styles.animatedWrapper, animatedCardWrapperStyle, style]
66
- }, /*#__PURE__*/React.createElement(View, {
67
- style: [styles.cardWrapper, cardWrapperStyle]
30
+ layout: LinearTransition,
31
+ style: [styles.animatedWrapper,
32
+ // eslint-disable-next-line react-native/no-inline-styles
33
+ {
34
+ height: expanded ? 'auto' : minHeight
35
+ }, style]
36
+ }, /*#__PURE__*/React.createElement(Animated.View, {
37
+ layout: LinearTransition,
38
+ style: [styles.cardWrapper,
39
+ // eslint-disable-next-line react-native/no-inline-styles
40
+ {
41
+ height: expanded ? 'auto' : Math.ceil(cardWidth / CredentialCardRatio)
42
+ }]
68
43
  }, /*#__PURE__*/React.createElement(CredentialDetailsCard, _extends({
69
44
  animate: false,
70
45
  expanded: true,
@@ -78,7 +53,6 @@ const styles = StyleSheet.create({
78
53
  },
79
54
  cardWrapper: {
80
55
  borderRadius: 10,
81
- height: '100%',
82
56
  overflow: 'hidden'
83
57
  }
84
58
  });