@procivis/one-react-native-components 0.3.102 → 0.3.106

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 (56) hide show
  1. package/lib/commonjs/components/history/history-list-item-icon.js +6 -2
  2. package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
  3. package/lib/commonjs/components/proof-request/v1/share-credential.js +2 -14
  4. package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -1
  5. package/lib/commonjs/ui-components/header/foldable-header.js +26 -16
  6. package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
  7. package/lib/commonjs/ui-components/index.js +11 -0
  8. package/lib/commonjs/ui-components/index.js.map +1 -1
  9. package/lib/commonjs/ui-components/notice/index.js +14 -0
  10. package/lib/commonjs/ui-components/notice/index.js.map +1 -0
  11. package/lib/commonjs/ui-components/notice/wallet-notice.js +80 -0
  12. package/lib/commonjs/ui-components/notice/wallet-notice.js.map +1 -0
  13. package/lib/commonjs/utils/hooks/core/proofs.js +12 -2
  14. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  15. package/lib/commonjs/utils/parsers/credential-images.js +1 -1
  16. package/lib/commonjs/utils/parsers/credential-images.js.map +1 -1
  17. package/lib/commonjs/utils/parsers/credential-sharing-v2.js +1 -1
  18. package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
  19. package/lib/commonjs/utils/parsers/credential-sharing.js +4 -10
  20. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  21. package/lib/module/components/history/history-list-item-icon.js +6 -2
  22. package/lib/module/components/history/history-list-item-icon.js.map +1 -1
  23. package/lib/module/components/proof-request/v1/share-credential.js +2 -14
  24. package/lib/module/components/proof-request/v1/share-credential.js.map +1 -1
  25. package/lib/module/ui-components/header/foldable-header.js +26 -16
  26. package/lib/module/ui-components/header/foldable-header.js.map +1 -1
  27. package/lib/module/ui-components/index.js +1 -0
  28. package/lib/module/ui-components/index.js.map +1 -1
  29. package/lib/module/ui-components/notice/index.js +3 -0
  30. package/lib/module/ui-components/notice/index.js.map +1 -0
  31. package/lib/module/ui-components/notice/wallet-notice.js +72 -0
  32. package/lib/module/ui-components/notice/wallet-notice.js.map +1 -0
  33. package/lib/module/utils/hooks/core/proofs.js +12 -2
  34. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  35. package/lib/module/utils/parsers/credential-images.js +1 -1
  36. package/lib/module/utils/parsers/credential-images.js.map +1 -1
  37. package/lib/module/utils/parsers/credential-sharing-v2.js +1 -1
  38. package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
  39. package/lib/module/utils/parsers/credential-sharing.js +4 -10
  40. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  41. package/lib/typescript/ui-components/index.d.ts +1 -0
  42. package/lib/typescript/ui-components/notice/index.d.ts +2 -0
  43. package/lib/typescript/ui-components/notice/wallet-notice.d.ts +11 -0
  44. package/lib/typescript/utils/hooks/core/proofs.d.ts +5 -3
  45. package/lib/typescript/utils/parsers/credential-sharing.d.ts +2 -2
  46. package/package.json +3 -3
  47. package/src/components/history/history-list-item-icon.tsx +4 -0
  48. package/src/components/proof-request/v1/share-credential.tsx +1 -18
  49. package/src/ui-components/header/foldable-header.tsx +27 -20
  50. package/src/ui-components/index.ts +1 -0
  51. package/src/ui-components/notice/index.ts +3 -0
  52. package/src/ui-components/notice/wallet-notice.tsx +82 -0
  53. package/src/utils/hooks/core/proofs.ts +10 -2
  54. package/src/utils/parsers/credential-images.tsx +1 -1
  55. package/src/utils/parsers/credential-sharing-v2.tsx +0 -1
  56. package/src/utils/parsers/credential-sharing.tsx +1 -10
@@ -1 +1 @@
1
- {"version":3,"names":["React","CredentialNoticeWarningIcon","CredentialWarningIcon","Selector","SelectorStatus","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","supportsSelectiveDisclosure","validityCheckedCardFromCredential","v2ClaimValueToClaimValue","value","type_","map","c","v2PresentationClaimToClaim","claim","schema","path","getAttributeSelectorStatus","selected","force","required","Required","userSelection","SelectedCheckmark","Empty","shareCredentialCardAttributeFromV2Claim","selection","parentShared","parentUserSelected","config","testID","nested","listValue","attributeShared","Boolean","some","startsWith","userSelected","includes","status","undefined","attribute","disabledStatus","Disabled","Rejected","disabled","credentialAttribute","id","rightAccessory","createElement","array","attributes","image","values","v","datatype","valueErrorColor","missingCredentialCardFromFailureHint","failureHint","notice","labels","_failureHint$credenti","_failureHint$credenti2","cardImage","color","header","credentialDetailErrorColor","credentialDetailPrimary","missingCredential","credentialDetailTestID","credentialName","credentialSchema","name","statusIcon","shareCredentialCardFromV2PresentationCredential","credential","expanded","multipleCredentialsAvailable","selectedFields","_credential$issuer","_credential$claims$ma","selectiveDisclosureSupported","issuer","noticeIcon","text","selectiveDisclosureNotice","cardTestId","card","claims","selectCredentialCardFromV2Credential","multiple","_credential$issuer2","_credential$claims$ma2","selectedStatus","SelectedRadio","cardProps","accessory","getV2CredentialClaimAllSubpaths","flatMap","getV2CredentialAvailablePaths"],"sources":["credential-sharing-v2.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n ClaimValueBindingDto,\n Config,\n CredentialQueryFailureHintResponseBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n PresentationDefinitionV2ClaimValueBindingDto,\n PresentationDefinitionV2CredentialDetailBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardNotice,\n CredentialCardProps,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n Selector,\n SelectorStatus,\n} from '../../ui-components';\nimport { concatTestID } from '../testID';\nimport {\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n supportsSelectiveDisclosure,\n} from '.';\nimport { ShareCredentialCardLabels, validityCheckedCardFromCredential } from './credential-sharing';\n\nconst v2ClaimValueToClaimValue = (value: PresentationDefinitionV2ClaimValueBindingDto): ClaimValueBindingDto => {\n if (value.type_ !== 'NESTED') {\n return value;\n }\n return {\n type_: 'NESTED',\n value: value.value.map((c) => v2PresentationClaimToClaim(c)),\n };\n};\n\nconst v2PresentationClaimToClaim = (claim: PresentationDefinitionV2ClaimBindingDto): ClaimBindingDto => {\n return {\n schema: claim.schema,\n path: claim.path,\n value: v2ClaimValueToClaimValue(claim.value),\n };\n};\n\nconst getAttributeSelectorStatus = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selected: boolean,\n force: boolean,\n): SelectorStatus | undefined => {\n if (claim.required && selected) {\n return SelectorStatus.Required;\n }\n if (force) {\n return SelectorStatus.Required;\n }\n if (claim.userSelection) {\n if (selected) {\n return SelectorStatus.SelectedCheckmark;\n } else {\n return SelectorStatus.Empty;\n }\n }\n};\n\nexport const shareCredentialCardAttributeFromV2Claim = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selection: string[] | undefined,\n parentShared: boolean,\n parentUserSelected: boolean,\n config: Config,\n testID: string,\n nested?: boolean,\n listValue?: boolean,\n): CredentialAttribute => {\n const attributeShared =\n Boolean(selection?.some((path) => path.startsWith(claim.path))) || (parentShared && claim.required);\n const userSelected = parentUserSelected || Boolean(selection?.includes(claim.path));\n const selected = !claim.required && attributeShared;\n const status = selection\n ? getAttributeSelectorStatus(claim, attributeShared, parentUserSelected || (attributeShared && !userSelected))\n : undefined;\n const attribute = detailsCardAttributeFromClaim(v2PresentationClaimToClaim(claim), config, testID);\n const disabledStatus = [SelectorStatus.Disabled, SelectorStatus.Rejected, SelectorStatus.Required];\n const disabled = attribute.disabled || !status || disabledStatus.includes(status);\n const credentialAttribute: CredentialAttribute = {\n ...attribute,\n disabled,\n id: claim.path,\n listValue,\n nested,\n path: claim.path,\n rightAccessory: status && <Selector status={status} />,\n selected,\n testID,\n };\n if (claim.value.type_ === 'NESTED') {\n if (claim.schema.array) {\n return {\n ...credentialAttribute,\n attributes: undefined,\n image: undefined,\n value: undefined,\n values: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(\n v,\n selection,\n attributeShared,\n userSelected,\n config,\n testID,\n true,\n false,\n ),\n ),\n };\n } else if (claim.schema.datatype === 'OBJECT') {\n return {\n ...credentialAttribute,\n attributes: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true),\n ),\n image: undefined,\n value: undefined,\n valueErrorColor: undefined,\n values: undefined,\n };\n }\n }\n return credentialAttribute;\n};\n\nexport const missingCredentialCardFromFailureHint = (\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: failureHint?.credentialSchema?.name ?? '',\n statusIcon: CredentialWarningIcon,\n },\n testID,\n ...notice,\n };\n};\n\nexport const shareCredentialCardFromV2PresentationCredential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto | undefined,\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n {\n ...credential,\n claims: [],\n },\n false,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromFailureHint(failureHint, notice, cardTestId, labels);\n\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selectedFields ?? [], true, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const selectCredentialCardFromV2Credential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n selected: boolean,\n multiple: boolean,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const selectedStatus = multiple ? SelectorStatus.SelectedCheckmark : SelectorStatus.SelectedRadio;\n const rightAccessory = <Selector status={selected ? selectedStatus : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n {\n ...credential,\n claims: credential.claims.map(v2PresentationClaimToClaim),\n },\n credential.claims.map(v2PresentationClaimToClaim),\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, undefined, false, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const getV2CredentialClaimAllSubpaths = (claim: PresentationDefinitionV2ClaimBindingDto): string[] => {\n if (claim.value.type_ !== 'NESTED') {\n return [claim.path];\n }\n return [claim.path, ...claim.value.value.flatMap(getV2CredentialClaimAllSubpaths)];\n};\n\nexport const getV2CredentialAvailablePaths = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n): string[] => {\n return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","CredentialNoticeWarningIcon","CredentialWarningIcon","Selector","SelectorStatus","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","supportsSelectiveDisclosure","validityCheckedCardFromCredential","v2ClaimValueToClaimValue","value","type_","map","c","v2PresentationClaimToClaim","claim","schema","path","getAttributeSelectorStatus","selected","force","required","Required","userSelection","SelectedCheckmark","Empty","shareCredentialCardAttributeFromV2Claim","selection","parentShared","parentUserSelected","config","testID","nested","listValue","attributeShared","Boolean","some","startsWith","userSelected","includes","status","undefined","attribute","disabledStatus","Disabled","Rejected","disabled","credentialAttribute","id","rightAccessory","createElement","array","attributes","image","values","v","datatype","valueErrorColor","missingCredentialCardFromFailureHint","failureHint","notice","labels","_failureHint$credenti","_failureHint$credenti2","cardImage","color","header","credentialDetailErrorColor","credentialDetailPrimary","missingCredential","credentialDetailTestID","credentialName","credentialSchema","name","statusIcon","shareCredentialCardFromV2PresentationCredential","credential","expanded","multipleCredentialsAvailable","selectedFields","_credential$issuer","_credential$claims$ma","selectiveDisclosureSupported","issuer","noticeIcon","text","selectiveDisclosureNotice","cardTestId","card","claims","selectCredentialCardFromV2Credential","multiple","_credential$issuer2","_credential$claims$ma2","selectedStatus","SelectedRadio","cardProps","accessory","getV2CredentialClaimAllSubpaths","flatMap","getV2CredentialAvailablePaths"],"sources":["credential-sharing-v2.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n ClaimValueBindingDto,\n Config,\n CredentialQueryFailureHintResponseBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n PresentationDefinitionV2ClaimValueBindingDto,\n PresentationDefinitionV2CredentialDetailBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardNotice,\n CredentialCardProps,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n Selector,\n SelectorStatus,\n} from '../../ui-components';\nimport { concatTestID } from '../testID';\nimport {\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n supportsSelectiveDisclosure,\n} from '.';\nimport { ShareCredentialCardLabels, validityCheckedCardFromCredential } from './credential-sharing';\n\nconst v2ClaimValueToClaimValue = (value: PresentationDefinitionV2ClaimValueBindingDto): ClaimValueBindingDto => {\n if (value.type_ !== 'NESTED') {\n return value;\n }\n return {\n type_: 'NESTED',\n value: value.value.map((c) => v2PresentationClaimToClaim(c)),\n };\n};\n\nconst v2PresentationClaimToClaim = (claim: PresentationDefinitionV2ClaimBindingDto): ClaimBindingDto => {\n return {\n schema: claim.schema,\n path: claim.path,\n value: v2ClaimValueToClaimValue(claim.value),\n };\n};\n\nconst getAttributeSelectorStatus = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selected: boolean,\n force: boolean,\n): SelectorStatus | undefined => {\n if (claim.required && selected) {\n return SelectorStatus.Required;\n }\n if (force) {\n return SelectorStatus.Required;\n }\n if (claim.userSelection) {\n if (selected) {\n return SelectorStatus.SelectedCheckmark;\n } else {\n return SelectorStatus.Empty;\n }\n }\n};\n\nexport const shareCredentialCardAttributeFromV2Claim = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selection: string[] | undefined,\n parentShared: boolean,\n parentUserSelected: boolean,\n config: Config,\n testID: string,\n nested?: boolean,\n listValue?: boolean,\n): CredentialAttribute => {\n const attributeShared =\n Boolean(selection?.some((path) => path.startsWith(claim.path))) || (parentShared && claim.required);\n const userSelected = parentUserSelected || Boolean(selection?.includes(claim.path));\n const selected = !claim.required && attributeShared;\n const status = selection\n ? getAttributeSelectorStatus(claim, attributeShared, parentUserSelected || (attributeShared && !userSelected))\n : undefined;\n const attribute = detailsCardAttributeFromClaim(v2PresentationClaimToClaim(claim), config, testID);\n const disabledStatus = [SelectorStatus.Disabled, SelectorStatus.Rejected, SelectorStatus.Required];\n const disabled = attribute.disabled || !status || disabledStatus.includes(status);\n const credentialAttribute: CredentialAttribute = {\n ...attribute,\n disabled,\n id: claim.path,\n listValue,\n nested,\n path: claim.path,\n rightAccessory: status && <Selector status={status} />,\n selected,\n testID,\n };\n if (claim.value.type_ === 'NESTED') {\n if (claim.schema.array) {\n return {\n ...credentialAttribute,\n attributes: undefined,\n image: undefined,\n value: undefined,\n values: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(\n v,\n selection,\n attributeShared,\n userSelected,\n config,\n testID,\n true,\n false,\n ),\n ),\n };\n } else if (claim.schema.datatype === 'OBJECT') {\n return {\n ...credentialAttribute,\n attributes: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true),\n ),\n image: undefined,\n value: undefined,\n valueErrorColor: undefined,\n values: undefined,\n };\n }\n }\n return credentialAttribute;\n};\n\nexport const missingCredentialCardFromFailureHint = (\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: failureHint?.credentialSchema?.name ?? '',\n statusIcon: CredentialWarningIcon,\n },\n testID,\n ...notice,\n };\n};\n\nexport const shareCredentialCardFromV2PresentationCredential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto | undefined,\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n {\n ...credential,\n claims: [],\n },\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromFailureHint(failureHint, notice, cardTestId, labels);\n\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selectedFields ?? [], true, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const selectCredentialCardFromV2Credential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n selected: boolean,\n multiple: boolean,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const selectedStatus = multiple ? SelectorStatus.SelectedCheckmark : SelectorStatus.SelectedRadio;\n const rightAccessory = <Selector status={selected ? selectedStatus : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n {\n ...credential,\n claims: credential.claims.map(v2PresentationClaimToClaim),\n },\n credential.claims.map(v2PresentationClaimToClaim),\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, undefined, false, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const getV2CredentialClaimAllSubpaths = (claim: PresentationDefinitionV2ClaimBindingDto): string[] => {\n if (claim.value.type_ !== 'NESTED') {\n return [claim.path];\n }\n return [claim.path, ...claim.value.value.flatMap(getV2CredentialClaimAllSubpaths)];\n};\n\nexport const getV2CredentialAvailablePaths = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n): string[] => {\n return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,15 +3,9 @@ import { Selector, SelectorStatus } from '../../ui-components/credential';
3
3
  import { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';
4
4
  import { concatTestID } from '../testID';
5
5
  import { detailsCardAttributeFromClaim, getCredentialCardPropsFromCredential, getValidityState, nestAttributes, supportsSelectiveDisclosure, ValidityState } from './credential';
6
- export const validityCheckedCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, notice, testID, labels) => {
6
+ export const validityCheckedCardFromCredential = (credential, expanded, multipleCredentialsAvailable, config, notice, testID, labels) => {
7
7
  let credentialHeaderDetail;
8
- if (invalidLVVC) {
9
- credentialHeaderDetail = {
10
- credentialDetailErrorColor: true,
11
- credentialDetailPrimary: labels.revoked,
12
- credentialDetailTestID: concatTestID(testID, 'header.invalid')
13
- };
14
- } else if (!expanded && multipleCredentialsAvailable) {
8
+ if (!expanded && multipleCredentialsAvailable) {
15
9
  credentialHeaderDetail = {
16
10
  credentialDetailPrimary: labels.multipleCredentials,
17
11
  credentialDetailTestID: concatTestID(testID, 'header.multiple'),
@@ -161,7 +155,7 @@ const setStatusForNestedObjectOrArrayFields = (attribute, status, disabled) => {
161
155
  }
162
156
  }
163
157
  };
164
- export const shareCredentialCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, request, selectedFields, config, testID, labels) => {
158
+ export const shareCredentialCardFromCredential = (credential, expanded, multipleCredentialsAvailable, request, selectedFields, config, testID, labels) => {
165
159
  var _credential$issuer, _credential$issuer2;
166
160
  const selectiveDisclosureSupported = supportsSelectiveDisclosure(credential ? {
167
161
  ...credential,
@@ -172,7 +166,7 @@ export const shareCredentialCardFromCredential = (credential, invalidLVVC, expan
172
166
  noticeIcon: CredentialNoticeWarningIcon
173
167
  } : undefined;
174
168
  const cardTestId = concatTestID(testID, 'card');
175
- const card = credential ? validityCheckedCardFromCredential(credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, notice, cardTestId, labels) : missingCredentialCardFromRequest(request, notice, cardTestId, labels);
169
+ const card = credential ? validityCheckedCardFromCredential(credential, expanded, multipleCredentialsAvailable, config, notice, cardTestId, labels) : missingCredentialCardFromRequest(request, notice, cardTestId, labels);
176
170
  const validityState = getValidityState(credential ? {
177
171
  ...credential,
178
172
  issuer: (_credential$issuer2 = credential.issuer) === null || _credential$issuer2 === void 0 ? void 0 : _credential$issuer2.id
@@ -1 +1 @@
1
- {"version":3,"names":["React","Selector","SelectorStatus","CredentialNoticeWarningIcon","CredentialWarningIcon","RequiredAttributeIcon","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","getValidityState","nestAttributes","supportsSelectiveDisclosure","ValidityState","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","multipleCredentials","statusIcon","card","claims","header","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","Valid","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","reduce","acc","result","value","type_","nestedClaimsWithPath","map","c","isArrayElement","schema","array","path","split","pop","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","isApplicable","applicableCredentials","includes","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","listValue","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","isArray","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","issuer","text","selectiveDisclosureNotice","noticeIcon","cardTestId","displayedAttributes","index","selectCredentialCardAttributeFromClaim","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n Config,\n CredentialDetailBindingDto,\n PresentationDefinitionFieldBindingDto,\n PresentationDefinitionRequestedCredentialBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport {\n CardLabels,\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetailBindingDto,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'> => {\n let credentialHeaderDetail:\n | Pick<\n CredentialHeaderProps,\n | 'credentialDetailPrimary'\n | 'credentialDetailSecondary'\n | 'credentialDetailErrorColor'\n | 'credentialDetailTestID'\n | 'statusIcon'\n >\n | undefined;\n if (invalidLVVC) {\n credentialHeaderDetail = {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.revoked,\n credentialDetailTestID: concatTestID(testID, 'header.invalid'),\n };\n } else if (!expanded && multipleCredentialsAvailable) {\n credentialHeaderDetail = {\n credentialDetailPrimary: labels.multipleCredentials,\n credentialDetailTestID: concatTestID(testID, 'header.multiple'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n const card = getCredentialCardPropsFromCredential(credential, credential.claims, config, notice, testID, labels);\n return {\n ...card,\n header: {\n ...card.header,\n ...credentialHeaderDetail,\n },\n };\n};\n\nexport const missingCredentialCardFromRequest = (\n request: PresentationDefinitionRequestedCredentialBindingDto,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n testID,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: request.name ?? request.id,\n statusIcon: CredentialWarningIcon,\n },\n ...notice,\n };\n};\n\ninterface DisplayedAttribute {\n claim?: FlatClaim;\n field?: PresentationDefinitionFieldBindingDto;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionFieldBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n claim?: ClaimBindingDto,\n selected?: boolean,\n): SelectorStatus => {\n if (!credential || validityState !== ValidityState.Valid) {\n return SelectorStatus.Rejected;\n }\n if (field.required) {\n if (claim) {\n return SelectorStatus.Required;\n } else {\n return SelectorStatus.Rejected;\n }\n }\n if (!claim) {\n return SelectorStatus.Disabled;\n }\n return selected ? SelectorStatus.SelectedCheckmark : SelectorStatus.Empty;\n};\n\ntype FlatClaim = ClaimBindingDto & {\n isArrayElement?: boolean;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: ClaimBindingDto[]): FlatClaim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (claim.value.type_ === 'NESTED') {\n const nestedClaimsWithPath: FlatClaim[] = claim.value.value.map((c) => ({\n ...c,\n isArrayElement: claim.schema.array && claim.path.split('/').pop() !== claim.schema.key,\n }));\n result.push(...spreadClaims(nestedClaimsWithPath));\n }\n return [...acc, ...result];\n }, [] as FlatClaim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredentialBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n const isApplicable = credential ? request.applicableCredentials.includes(credential.id) : false;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields\n .filter((field) => !(credential.id in field.keyMap))\n .filter((field) => !isApplicable || !field.required);\n const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);\n\n fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];\n }\n\n return fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim = credential\n ? claims?.find(({ path }) => {\n return path === field.keyMap[credential.id];\n })\n : undefined;\n const status =\n selectiveDisclosureSupported === false\n ? SelectorStatus.Required\n : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nconst getFullyNestedFields = (\n fields: PresentationDefinitionRequestedCredentialBindingDto['fields'],\n credentialId: CredentialDetailBindingDto['id'],\n) => {\n const allKeys = fields.filter((field) => credentialId in field.keyMap).map((field) => field.keyMap[credentialId]);\n\n return fields\n .map((field) => ({ field, key: field.keyMap[credentialId] }))\n .filter(({ key }) => key && allKeys.every((k) => !k.startsWith(`${key}/`)))\n .map(({ field }) => field);\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\n): CredentialAttribute => {\n if (claim) {\n return {\n ...detailsCardAttributeFromClaim(claim, config, testID),\n id,\n path: claim.path,\n listValue: claim.isArrayElement,\n };\n }\n return {\n id,\n name: field?.name?.split('/').pop() ?? id,\n path: field?.name ?? id,\n value: labels.missingAttribute,\n valueErrorColor: true,\n };\n};\n\n// Will propagate the attribute status (right accessory + selected?) for all nested attributes\n// Note: This function MUTATES the input attribute\nconst setStatusForNestedObjectOrArrayFields = (\n attribute: CredentialAttribute,\n status?: SelectorStatus,\n disabled?: boolean,\n) => {\n const accessory = status && <Selector status={status} />;\n const isObject = attribute.attributes && attribute.attributes.length > 0;\n const isArray = attribute.values && attribute.values.length > 0;\n\n // If the attribute is not an object or array, we update the attribute and return\n if (!isObject && !isArray) {\n attribute.rightAccessory = accessory;\n attribute.disabled = disabled;\n return attribute;\n }\n\n // The object can be optional (tappable radio-checkmark), or required (checkmark)\n if (status === SelectorStatus.SelectedCheckmark || status === SelectorStatus.Empty) {\n // If it's a selectable object, the accessory is rendered next to the object title,\n // The nested attributes have no accessory, and can not be selected\n attribute.rightAccessory = accessory;\n setStatusForNestedObjectOrArrayFields(attribute, undefined, true);\n } else {\n const nested = attribute.attributes ?? attribute.values;\n // If the object is required / rejected, the accessory is rendered next to each nested attribute (except other object titles)\n // all fields are disabled\n for (const nestedAttribute of nested) {\n setStatusForNestedObjectOrArrayFields(nestedAttribute, status, true);\n }\n }\n};\n\nexport type ShareCredentialCardLabels = CardLabels & {\n selectiveDisclosureNotice: string;\n missingAttribute: string;\n missingCredential: string;\n multipleCredentials: string;\n};\n\nexport const shareCredentialCardFromCredential = (\n credential: CredentialDetailBindingDto | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n credential,\n invalidLVVC,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(credential ? { ...credential, issuer: credential.issuer?.id } : undefined);\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\n): CredentialAttribute => {\n const attribute = shareCredentialCardAttributeFromClaim(id, config, testID, labels, claim, field);\n if (!claim) {\n return attribute;\n }\n return {\n ...attribute,\n rightAccessory: RequiredAttributeIcon,\n };\n};\n\nexport const selectCredentialCardFromCredential = (\n credential: CredentialDetailBindingDto,\n selected: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const rightAccessory = <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n credential,\n credential.claims,\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n const attributes: CredentialAttribute[] = getFullyNestedFields(request.fields, credential.id).map((field) => {\n const claim = spreadClaims(credential.claims).find(({ path }) => {\n return path === field.keyMap[credential.id];\n });\n\n const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);\n return {\n ...attribute,\n rightAccessory: (\n <Selector status={field.required && !claim ? SelectorStatus.Rejected : SelectorStatus.Required} />\n ),\n };\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n"],"mappings":"AAOA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAIEC,QAAQ,EACRC,cAAc,QACT,gCAAgC;AAEvC,SAASC,2BAA2B,EAAEC,qBAAqB,EAAEC,qBAAqB,QAAQ,2BAA2B;AACrH,SAASC,YAAY,QAAQ,WAAW;AACxC,SAGEC,6BAA6B,EAC7BC,oCAAoC,EACpCC,gBAAgB,EAChBC,cAAc,EACdC,2BAA2B,EAC3BC,aAAa,QACR,cAAc;AAErB,OAAO,MAAMC,iCAAiC,GAAGA,CAC/CC,UAAsC,EACtCC,WAAoB,EACpBC,QAAiB,EACjBC,4BAAqC,EACrCC,MAAc,EACdC,MAAwC,EACxCC,MAAc,EACdC,MAAiC,KAC6C;EAC9E,IAAIC,sBASS;EACb,IAAIP,WAAW,EAAE;IACfO,sBAAsB,GAAG;MACvBC,0BAA0B,EAAE,IAAI;MAChCC,uBAAuB,EAAEH,MAAM,CAACI,OAAO;MACvCC,sBAAsB,EAAEpB,YAAY,CAACc,MAAM,EAAE,gBAAgB;IAC/D,CAAC;EACH,CAAC,MAAM,IAAI,CAACJ,QAAQ,IAAIC,4BAA4B,EAAE;IACpDK,sBAAsB,GAAG;MACvBE,uBAAuB,EAAEH,MAAM,CAACM,mBAAmB;MACnDD,sBAAsB,EAAEpB,YAAY,CAACc,MAAM,EAAE,iBAAiB,CAAC;MAC/DQ,UAAU,EAAExB;IACd,CAAC;EACH;EAEA,MAAMyB,IAAI,GAAGrB,oCAAoC,CAACM,UAAU,EAAEA,UAAU,CAACgB,MAAM,EAAEZ,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC;EAChH,OAAO;IACL,GAAGQ,IAAI;IACPE,MAAM,EAAE;MACN,GAAGF,IAAI,CAACE,MAAM;MACd,GAAGT;IACL;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMU,gCAAgC,GAAGA,CAC9CC,OAA4D,EAC5Dd,MAAwC,EACxCC,MAAc,EACdC,MAAiC,KACkC;EAAA,IAAAa,aAAA;EACnE,OAAO;IACLC,SAAS,EAAEC,SAAS;IACpBC,KAAK,EAAED,SAAS;IAChBhB,MAAM;IACNW,MAAM,EAAE;MACNR,0BAA0B,EAAE,IAAI;MAChCC,uBAAuB,EAAEH,MAAM,CAACiB,iBAAiB;MACjDZ,sBAAsB,EAAEpB,YAAY,CAACc,MAAM,EAAE,gBAAgB,CAAC;MAC9DmB,cAAc,GAAAL,aAAA,GAAED,OAAO,CAACO,IAAI,cAAAN,aAAA,cAAAA,aAAA,GAAID,OAAO,CAACQ,EAAE;MAC1Cb,UAAU,EAAExB;IACd,CAAC;IACD,GAAGe;EACL,CAAC;AACH,CAAC;AAUD,MAAMuB,0BAA0B,GAAGA,CACjCC,KAA4C,EAC5CC,aAA4B,EAC5B9B,UAAuC,EACvC+B,KAAuB,EACvBC,QAAkB,KACC;EACnB,IAAI,CAAChC,UAAU,IAAI8B,aAAa,KAAKhC,aAAa,CAACmC,KAAK,EAAE;IACxD,OAAO7C,cAAc,CAAC8C,QAAQ;EAChC;EACA,IAAIL,KAAK,CAACM,QAAQ,EAAE;IAClB,IAAIJ,KAAK,EAAE;MACT,OAAO3C,cAAc,CAACgD,QAAQ;IAChC,CAAC,MAAM;MACL,OAAOhD,cAAc,CAAC8C,QAAQ;IAChC;EACF;EACA,IAAI,CAACH,KAAK,EAAE;IACV,OAAO3C,cAAc,CAACiD,QAAQ;EAChC;EACA,OAAOL,QAAQ,GAAG5C,cAAc,CAACkD,iBAAiB,GAAGlD,cAAc,CAACmD,KAAK;AAC3E,CAAC;AAMD;AACA,MAAMC,YAAY,GAAIxB,MAAyB,IAAkB;EAC/D,OAAOA,MAAM,CAACyB,MAAM,CAAC,CAACC,GAAG,EAAEX,KAAK,KAAK;IACnC,MAAMY,MAAM,GAAG,CAACZ,KAAK,CAAC;IACtB,IAAIA,KAAK,CAACa,KAAK,CAACC,KAAK,KAAK,QAAQ,EAAE;MAClC,MAAMC,oBAAiC,GAAGf,KAAK,CAACa,KAAK,CAACA,KAAK,CAACG,GAAG,CAAEC,CAAC,KAAM;QACtE,GAAGA,CAAC;QACJC,cAAc,EAAElB,KAAK,CAACmB,MAAM,CAACC,KAAK,IAAIpB,KAAK,CAACqB,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,KAAKvB,KAAK,CAACmB,MAAM,CAACK;MACrF,CAAC,CAAC,CAAC;MACHZ,MAAM,CAACa,IAAI,CAAC,GAAGhB,YAAY,CAACM,oBAAoB,CAAC,CAAC;IACpD;IACA,OAAO,CAAC,GAAGJ,GAAG,EAAE,GAAGC,MAAM,CAAC;EAC5B,CAAC,EAAE,EAAiB,CAAC;AACvB,CAAC;AAED,MAAMc,sBAAsB,GAAGA,CAC7BtC,OAA4D,EAC5DW,aAA4B,EAC5B9B,UAAuC,EACvC0D,4BAAsC,EACtCC,cAAyB,KACA;EACzB,MAAM3C,MAAM,GAAGhB,UAAU,GAAGwC,YAAY,CAACxC,UAAU,CAACgB,MAAM,CAAC,GAAGM,SAAS;EACvE,MAAMsC,YAAY,GAAG5D,UAAU,GAAGmB,OAAO,CAAC0C,qBAAqB,CAACC,QAAQ,CAAC9D,UAAU,CAAC2B,EAAE,CAAC,GAAG,KAAK;EAE/F,IAAIoC,MAAM,GAAG5C,OAAO,CAAC4C,MAAM;EAC3B,IAAI/D,UAAU,EAAE;IACd,MAAMgE,sBAAsB,GAAG7C,OAAO,CAAC4C,MAAM,CAC1CE,MAAM,CAAEpC,KAAK,IAAK,EAAE7B,UAAU,CAAC2B,EAAE,IAAIE,KAAK,CAACqC,MAAM,CAAC,CAAC,CACnDD,MAAM,CAAEpC,KAAK,IAAK,CAAC+B,YAAY,IAAI,CAAC/B,KAAK,CAACM,QAAQ,CAAC;IACtD,MAAMgC,iBAAiB,GAAGC,oBAAoB,CAACjD,OAAO,CAAC4C,MAAM,EAAE/D,UAAU,CAAC2B,EAAE,CAAC;IAE7EoC,MAAM,GAAG,CAAC,GAAGC,sBAAsB,EAAE,GAAGG,iBAAiB,CAAC;EAC5D;EAEA,OAAOJ,MAAM,CAAChB,GAAG,CAAElB,KAAK,IAAK;IAC3B,MAAMG,QAAQ,GAAG,CAACH,KAAK,CAACM,QAAQ,KAAIwB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEG,QAAQ,CAACjC,KAAK,CAACF,EAAE,CAAC;IACtE,MAAMI,KAAK,GAAG/B,UAAU,GACpBgB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEqD,IAAI,CAAC,CAAC;MAAEjB;IAAK,CAAC,KAAK;MACzB,OAAOA,IAAI,KAAKvB,KAAK,CAACqC,MAAM,CAAClE,UAAU,CAAC2B,EAAE,CAAC;IAC7C,CAAC,CAAC,GACFL,SAAS;IACb,MAAMgD,MAAM,GACVZ,4BAA4B,KAAK,KAAK,GAClCtE,cAAc,CAACgD,QAAQ,GACvBR,0BAA0B,CAACC,KAAK,EAAEC,aAAa,EAAE9B,UAAU,EAAE+B,KAAK,EAAEC,QAAQ,CAAC;IACnF,OAAO;MAAED,KAAK;MAAEF,KAAK;MAAEF,EAAE,EAAEE,KAAK,CAACF,EAAE;MAAEK,QAAQ;MAAEsC;IAAO,CAAC;EACzD,CAAC,CAAC;AACJ,CAAC;AAED,MAAMF,oBAAoB,GAAGA,CAC3BL,MAAqE,EACrEQ,YAA8C,KAC3C;EACH,MAAMC,OAAO,GAAGT,MAAM,CAACE,MAAM,CAAEpC,KAAK,IAAK0C,YAAY,IAAI1C,KAAK,CAACqC,MAAM,CAAC,CAACnB,GAAG,CAAElB,KAAK,IAAKA,KAAK,CAACqC,MAAM,CAACK,YAAY,CAAC,CAAC;EAEjH,OAAOR,MAAM,CACVhB,GAAG,CAAElB,KAAK,KAAM;IAAEA,KAAK;IAAE0B,GAAG,EAAE1B,KAAK,CAACqC,MAAM,CAACK,YAAY;EAAE,CAAC,CAAC,CAAC,CAC5DN,MAAM,CAAC,CAAC;IAAEV;EAAI,CAAC,KAAKA,GAAG,IAAIiB,OAAO,CAACC,KAAK,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,UAAU,CAAC,GAAGpB,GAAG,GAAG,CAAC,CAAC,CAAC,CAC1ER,GAAG,CAAC,CAAC;IAAElB;EAAM,CAAC,KAAKA,KAAK,CAAC;AAC9B,CAAC;AAED,OAAO,MAAM+C,qCAAqC,GAAGA,CACnDjD,EAAU,EACVvB,MAAc,EACdE,MAAc,EACdC,MAAiC,EACjCwB,KAAiB,EACjBF,KAA6C,KACrB;EAAA,IAAAgD,qBAAA,EAAAC,WAAA,EAAAC,YAAA;EACxB,IAAIhD,KAAK,EAAE;IACT,OAAO;MACL,GAAGtC,6BAA6B,CAACsC,KAAK,EAAE3B,MAAM,EAAEE,MAAM,CAAC;MACvDqB,EAAE;MACFyB,IAAI,EAAErB,KAAK,CAACqB,IAAI;MAChB4B,SAAS,EAAEjD,KAAK,CAACkB;IACnB,CAAC;EACH;EACA,OAAO;IACLtB,EAAE;IACFD,IAAI,GAAAmD,qBAAA,GAAEhD,KAAK,aAALA,KAAK,gBAAAiD,WAAA,GAALjD,KAAK,CAAEH,IAAI,cAAAoD,WAAA,uBAAXA,WAAA,CAAazB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,cAAAuB,qBAAA,cAAAA,qBAAA,GAAIlD,EAAE;IACzCyB,IAAI,GAAA2B,YAAA,GAAElD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEH,IAAI,cAAAqD,YAAA,cAAAA,YAAA,GAAIpD,EAAE;IACvBiB,KAAK,EAAErC,MAAM,CAAC0E,gBAAgB;IAC9BC,eAAe,EAAE;EACnB,CAAC;AACH,CAAC;;AAED;AACA;AACA,MAAMC,qCAAqC,GAAGA,CAC5CC,SAA8B,EAC9Bd,MAAuB,EACvBe,QAAkB,KACf;EACH,MAAMC,SAAS,GAAGhB,MAAM,iBAAIpF,KAAA,CAAAqG,aAAA,CAACpG,QAAQ;IAACmF,MAAM,EAAEA;EAAO,CAAE,CAAC;EACxD,MAAMkB,QAAQ,GAAGJ,SAAS,CAACK,UAAU,IAAIL,SAAS,CAACK,UAAU,CAACC,MAAM,GAAG,CAAC;EACxE,MAAMC,OAAO,GAAGP,SAAS,CAACQ,MAAM,IAAIR,SAAS,CAACQ,MAAM,CAACF,MAAM,GAAG,CAAC;;EAE/D;EACA,IAAI,CAACF,QAAQ,IAAI,CAACG,OAAO,EAAE;IACzBP,SAAS,CAACS,cAAc,GAAGP,SAAS;IACpCF,SAAS,CAACC,QAAQ,GAAGA,QAAQ;IAC7B,OAAOD,SAAS;EAClB;;EAEA;EACA,IAAId,MAAM,KAAKlF,cAAc,CAACkD,iBAAiB,IAAIgC,MAAM,KAAKlF,cAAc,CAACmD,KAAK,EAAE;IAClF;IACA;IACA6C,SAAS,CAACS,cAAc,GAAGP,SAAS;IACpCH,qCAAqC,CAACC,SAAS,EAAE9D,SAAS,EAAE,IAAI,CAAC;EACnE,CAAC,MAAM;IAAA,IAAAwE,qBAAA;IACL,MAAMC,MAAM,IAAAD,qBAAA,GAAGV,SAAS,CAACK,UAAU,cAAAK,qBAAA,cAAAA,qBAAA,GAAIV,SAAS,CAACQ,MAAM;IACvD;IACA;IACA,KAAK,MAAMI,eAAe,IAAID,MAAM,EAAE;MACpCZ,qCAAqC,CAACa,eAAe,EAAE1B,MAAM,EAAE,IAAI,CAAC;IACtE;EACF;AACF,CAAC;AASD,OAAO,MAAM2B,iCAAiC,GAAGA,CAC/CjG,UAAkD,EAClDC,WAAoB,EACpBC,QAAiB,EACjBC,4BAAqC,EACrCgB,OAA4D,EAC5DwC,cAAoC,EACpCvD,MAAc,EACdE,MAAc,EACdC,MAAiC,KACU;EAAA,IAAA2F,kBAAA,EAAAC,mBAAA;EAC3C,MAAMzC,4BAA4B,GAAG7D,2BAA2B,CAC9DG,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAEoG,MAAM,GAAAF,kBAAA,GAAElG,UAAU,CAACoG,MAAM,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBvE;EAAG,CAAC,GAAGL,SAAS,EACzElB,MACF,CAAC;EACD,MAAMC,MAAwC,GAC5CqD,4BAA4B,KAAK,KAAK,GAClC;IACE2C,IAAI,EAAE9F,MAAM,CAAC+F,yBAAyB;IACtCC,UAAU,EAAElH;EACd,CAAC,GACDiC,SAAS;EACf,MAAMkF,UAAU,GAAGhH,YAAY,CAACc,MAAM,EAAE,MAAM,CAAC;EAC/C,MAAMS,IAAI,GAAGf,UAAU,GACnBD,iCAAiC,CAC/BC,UAAU,EACVC,WAAW,EACXC,QAAQ,EACRC,4BAA4B,EAC5BC,MAAM,EACNC,MAAM,EACNmG,UAAU,EACVjG,MACF,CAAC,GACDW,gCAAgC,CAACC,OAAO,EAAEd,MAAM,EAAEmG,UAAU,EAAEjG,MAAM,CAAC;EACzE,MAAMuB,aAAa,GAAGnC,gBAAgB,CAACK,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAEoG,MAAM,GAAAD,mBAAA,GAAEnG,UAAU,CAACoG,MAAM,cAAAD,mBAAA,uBAAjBA,mBAAA,CAAmBxE;EAAG,CAAC,GAAGL,SAAS,CAAC;EACjH,MAAMmF,mBAAmB,GAAGhD,sBAAsB,CAChDtC,OAAO,EACPW,aAAa,EACb9B,UAAU,EACV0D,4BAA4B,EAC5BC,cACF,CAAC;EAED,MAAM8B,UAAiC,GAAGgB,mBAAmB,CAAC1D,GAAG,CAAC,CAAC;IAAEhB,KAAK;IAAEF,KAAK;IAAEF,EAAE;IAAEK,QAAQ;IAAEsC;EAAO,CAAC,EAAEoC,KAAK,KAAK;IACnH,MAAMrB,QAAQ,GAAG,CAACrF,UAAU,IAAI,CAAC6B,KAAK,IAAIA,KAAK,CAACM,QAAQ,IAAI,CAACJ,KAAK;IAClE,MAAMqD,SAA8B,GAAG;MACrC,GAAGR,qCAAqC,CACtCjD,EAAE,EACFvB,MAAM,EACNZ,YAAY,CAACc,MAAM,EAAE,WAAW,EAAE,GAAGoG,KAAK,EAAE,CAAC,EAC7CnG,MAAM,EACNwB,KAAK,EACLF,KACF,CAAC;MACDG;IACF,CAAC;IAEDmD,qCAAqC,CAACC,SAAS,EAAEd,MAAM,EAAEe,QAAQ,CAAC;IAClE,OAAOD,SAAS;EAClB,CAAC,CAAC;EACF,OAAO;IACLK,UAAU,EAAE7F,cAAc,CAAC6F,UAAU,CAAC;IACtC1E;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAM4F,sCAAsC,GAAGA,CACpDhF,EAAU,EACVvB,MAAc,EACdE,MAAc,EACdC,MAAiC,EACjCwB,KAAiB,EACjBF,KAA6C,KACrB;EACxB,MAAMuD,SAAS,GAAGR,qCAAqC,CAACjD,EAAE,EAAEvB,MAAM,EAAEE,MAAM,EAAEC,MAAM,EAAEwB,KAAK,EAAEF,KAAK,CAAC;EACjG,IAAI,CAACE,KAAK,EAAE;IACV,OAAOqD,SAAS;EAClB;EACA,OAAO;IACL,GAAGA,SAAS;IACZS,cAAc,EAAEtG;EAClB,CAAC;AACH,CAAC;AAED,OAAO,MAAMqH,kCAAkC,GAAGA,CAChD5G,UAAsC,EACtCgC,QAAiB,EACjBb,OAA4D,EAC5Df,MAAc,EACdE,MAAc,EACdC,MAAiC,KACU;EAAA,IAAAsG,mBAAA;EAC3C,MAAMnD,4BAA4B,GAAG7D,2BAA2B,CAC9DG,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAEoG,MAAM,GAAAS,mBAAA,GAAE7G,UAAU,CAACoG,MAAM,cAAAS,mBAAA,uBAAjBA,mBAAA,CAAmBlF;EAAG,CAAC,GAAGL,SAAS,EACzElB,MACF,CAAC;EACD,MAAMyF,cAAc,gBAAG3G,KAAA,CAAAqG,aAAA,CAACpG,QAAQ;IAACmF,MAAM,EAAEtC,QAAQ,GAAG5C,cAAc,CAAC0H,aAAa,GAAG1H,cAAc,CAACmD;EAAM,CAAE,CAAC;EAC3G,MAAMlC,MAAwC,GAC5CqD,4BAA4B,KAAK,KAAK,GAClC;IACE2C,IAAI,EAAE9F,MAAM,CAAC+F,yBAAyB;IACtCC,UAAU,EAAElH;EACd,CAAC,GACDiC,SAAS;EACf,MAAM;IAAEL,MAAM;IAAE,GAAG8F;EAAU,CAAC,GAAGrH,oCAAoC,CACnEM,UAAU,EACVA,UAAU,CAACgB,MAAM,EACjBZ,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,MACF,CAAC;EACD,MAAMQ,IAAI,GAAG;IACXE,MAAM,EAAE;MACN,GAAGA,MAAM;MACTqE,SAAS,EAAEO;IACb,CAAC;IACD,GAAGkB;EACL,CAAC;EACD,MAAMtB,UAAiC,GAAGrB,oBAAoB,CAACjD,OAAO,CAAC4C,MAAM,EAAE/D,UAAU,CAAC2B,EAAE,CAAC,CAACoB,GAAG,CAAElB,KAAK,IAAK;IAC3G,MAAME,KAAK,GAAGS,YAAY,CAACxC,UAAU,CAACgB,MAAM,CAAC,CAACqD,IAAI,CAAC,CAAC;MAAEjB;IAAK,CAAC,KAAK;MAC/D,OAAOA,IAAI,KAAKvB,KAAK,CAACqC,MAAM,CAAClE,UAAU,CAAC2B,EAAE,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAMyD,SAAS,GAAGuB,sCAAsC,CAAC9E,KAAK,CAACF,EAAE,EAAEvB,MAAM,EAAEE,MAAM,EAAEC,MAAM,EAAEwB,KAAK,EAAEF,KAAK,CAAC;IACxG,OAAO;MACL,GAAGuD,SAAS;MACZS,cAAc,eACZ3G,KAAA,CAAAqG,aAAA,CAACpG,QAAQ;QAACmF,MAAM,EAAEzC,KAAK,CAACM,QAAQ,IAAI,CAACJ,KAAK,GAAG3C,cAAc,CAAC8C,QAAQ,GAAG9C,cAAc,CAACgD;MAAS,CAAE;IAErG,CAAC;EACH,CAAC,CAAC;EACF,OAAO;IACLqD,UAAU,EAAE7F,cAAc,CAAC6F,UAAU,CAAC;IACtC1E;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Selector","SelectorStatus","CredentialNoticeWarningIcon","CredentialWarningIcon","RequiredAttributeIcon","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","getValidityState","nestAttributes","supportsSelectiveDisclosure","ValidityState","validityCheckedCardFromCredential","credential","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailPrimary","multipleCredentials","credentialDetailTestID","statusIcon","card","claims","header","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","credentialDetailErrorColor","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","Valid","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","reduce","acc","result","value","type_","nestedClaimsWithPath","map","c","isArrayElement","schema","array","path","split","pop","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","isApplicable","applicableCredentials","includes","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","listValue","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","isArray","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","issuer","text","selectiveDisclosureNotice","noticeIcon","cardTestId","displayedAttributes","index","selectCredentialCardAttributeFromClaim","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n Config,\n CredentialDetailBindingDto,\n PresentationDefinitionFieldBindingDto,\n PresentationDefinitionRequestedCredentialBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport {\n CardLabels,\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetailBindingDto,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'> => {\n let credentialHeaderDetail:\n | Pick<\n CredentialHeaderProps,\n | 'credentialDetailPrimary'\n | 'credentialDetailSecondary'\n | 'credentialDetailErrorColor'\n | 'credentialDetailTestID'\n | 'statusIcon'\n >\n | undefined;\n if (!expanded && multipleCredentialsAvailable) {\n credentialHeaderDetail = {\n credentialDetailPrimary: labels.multipleCredentials,\n credentialDetailTestID: concatTestID(testID, 'header.multiple'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n const card = getCredentialCardPropsFromCredential(credential, credential.claims, config, notice, testID, labels);\n return {\n ...card,\n header: {\n ...card.header,\n ...credentialHeaderDetail,\n },\n };\n};\n\nexport const missingCredentialCardFromRequest = (\n request: PresentationDefinitionRequestedCredentialBindingDto,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n testID,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: request.name ?? request.id,\n statusIcon: CredentialWarningIcon,\n },\n ...notice,\n };\n};\n\ninterface DisplayedAttribute {\n claim?: FlatClaim;\n field?: PresentationDefinitionFieldBindingDto;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionFieldBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n claim?: ClaimBindingDto,\n selected?: boolean,\n): SelectorStatus => {\n if (!credential || validityState !== ValidityState.Valid) {\n return SelectorStatus.Rejected;\n }\n if (field.required) {\n if (claim) {\n return SelectorStatus.Required;\n } else {\n return SelectorStatus.Rejected;\n }\n }\n if (!claim) {\n return SelectorStatus.Disabled;\n }\n return selected ? SelectorStatus.SelectedCheckmark : SelectorStatus.Empty;\n};\n\ntype FlatClaim = ClaimBindingDto & {\n isArrayElement?: boolean;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: ClaimBindingDto[]): FlatClaim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (claim.value.type_ === 'NESTED') {\n const nestedClaimsWithPath: FlatClaim[] = claim.value.value.map((c) => ({\n ...c,\n isArrayElement: claim.schema.array && claim.path.split('/').pop() !== claim.schema.key,\n }));\n result.push(...spreadClaims(nestedClaimsWithPath));\n }\n return [...acc, ...result];\n }, [] as FlatClaim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredentialBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n const isApplicable = credential ? request.applicableCredentials.includes(credential.id) : false;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields\n .filter((field) => !(credential.id in field.keyMap))\n .filter((field) => !isApplicable || !field.required);\n const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);\n\n fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];\n }\n\n return fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim = credential\n ? claims?.find(({ path }) => {\n return path === field.keyMap[credential.id];\n })\n : undefined;\n const status =\n selectiveDisclosureSupported === false\n ? SelectorStatus.Required\n : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nconst getFullyNestedFields = (\n fields: PresentationDefinitionRequestedCredentialBindingDto['fields'],\n credentialId: CredentialDetailBindingDto['id'],\n) => {\n const allKeys = fields.filter((field) => credentialId in field.keyMap).map((field) => field.keyMap[credentialId]);\n\n return fields\n .map((field) => ({ field, key: field.keyMap[credentialId] }))\n .filter(({ key }) => key && allKeys.every((k) => !k.startsWith(`${key}/`)))\n .map(({ field }) => field);\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\n): CredentialAttribute => {\n if (claim) {\n return {\n ...detailsCardAttributeFromClaim(claim, config, testID),\n id,\n path: claim.path,\n listValue: claim.isArrayElement,\n };\n }\n return {\n id,\n name: field?.name?.split('/').pop() ?? id,\n path: field?.name ?? id,\n value: labels.missingAttribute,\n valueErrorColor: true,\n };\n};\n\n// Will propagate the attribute status (right accessory + selected?) for all nested attributes\n// Note: This function MUTATES the input attribute\nconst setStatusForNestedObjectOrArrayFields = (\n attribute: CredentialAttribute,\n status?: SelectorStatus,\n disabled?: boolean,\n) => {\n const accessory = status && <Selector status={status} />;\n const isObject = attribute.attributes && attribute.attributes.length > 0;\n const isArray = attribute.values && attribute.values.length > 0;\n\n // If the attribute is not an object or array, we update the attribute and return\n if (!isObject && !isArray) {\n attribute.rightAccessory = accessory;\n attribute.disabled = disabled;\n return attribute;\n }\n\n // The object can be optional (tappable radio-checkmark), or required (checkmark)\n if (status === SelectorStatus.SelectedCheckmark || status === SelectorStatus.Empty) {\n // If it's a selectable object, the accessory is rendered next to the object title,\n // The nested attributes have no accessory, and can not be selected\n attribute.rightAccessory = accessory;\n setStatusForNestedObjectOrArrayFields(attribute, undefined, true);\n } else {\n const nested = attribute.attributes ?? attribute.values;\n // If the object is required / rejected, the accessory is rendered next to each nested attribute (except other object titles)\n // all fields are disabled\n for (const nestedAttribute of nested) {\n setStatusForNestedObjectOrArrayFields(nestedAttribute, status, true);\n }\n }\n};\n\nexport type ShareCredentialCardLabels = CardLabels & {\n selectiveDisclosureNotice: string;\n missingAttribute: string;\n missingCredential: string;\n multipleCredentials: string;\n};\n\nexport const shareCredentialCardFromCredential = (\n credential: CredentialDetailBindingDto | undefined,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n credential,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(credential ? { ...credential, issuer: credential.issuer?.id } : undefined);\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\n): CredentialAttribute => {\n const attribute = shareCredentialCardAttributeFromClaim(id, config, testID, labels, claim, field);\n if (!claim) {\n return attribute;\n }\n return {\n ...attribute,\n rightAccessory: RequiredAttributeIcon,\n };\n};\n\nexport const selectCredentialCardFromCredential = (\n credential: CredentialDetailBindingDto,\n selected: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const rightAccessory = <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n credential,\n credential.claims,\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n const attributes: CredentialAttribute[] = getFullyNestedFields(request.fields, credential.id).map((field) => {\n const claim = spreadClaims(credential.claims).find(({ path }) => {\n return path === field.keyMap[credential.id];\n });\n\n const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);\n return {\n ...attribute,\n rightAccessory: (\n <Selector status={field.required && !claim ? SelectorStatus.Rejected : SelectorStatus.Required} />\n ),\n };\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -17,6 +17,7 @@ export * from './list';
17
17
  export * from './loader';
18
18
  export * from './nerd-view';
19
19
  export * from './nfc';
20
+ export * from './notice';
20
21
  export * from './pin';
21
22
  export * from './proof-request';
22
23
  export * from './screens';
@@ -0,0 +1,2 @@
1
+ import WalletNotice from './wallet-notice';
2
+ export { WalletNotice };
@@ -0,0 +1,11 @@
1
+ import { ComponentType, FunctionComponent, ReactElement } from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type WalletNoticeProps = {
4
+ accessory?: ComponentType<any> | ReactElement;
5
+ icon?: ComponentType<any> | ReactElement;
6
+ onClose?: () => void;
7
+ style?: StyleProp<ViewStyle>;
8
+ text: string;
9
+ };
10
+ declare const WalletNotice: FunctionComponent<WalletNoticeProps>;
11
+ export default WalletNotice;
@@ -25,8 +25,7 @@ export declare enum VerificationProtocol {
25
25
  ISO_MDL = "ISO_MDL",
26
26
  OPENID4VP_DRAFT20 = "OPENID4VP_DRAFT20",
27
27
  OPENID4VP_DRAFT25 = "OPENID4VP_DRAFT25",
28
- OPENID4VP_PROXIMITY_DRAFT00 = "OPENID4VP_PROXIMITY_DRAFT00",
29
- SCAN_TO_VERIFY = "SCAN_TO_VERIFY"
28
+ OPENID4VP_PROXIMITY_DRAFT00 = "OPENID4VP_PROXIMITY_DRAFT00"
30
29
  }
31
30
  export declare enum VerificationEngagement {
32
31
  QR_CODE = "QR_CODE",
@@ -36,7 +35,10 @@ export declare const useProposeProof: () => import("react-query").UseMutationRes
36
35
  export declare const useProofDelete: () => import("react-query").UseMutationResult<void, unknown, string, unknown>;
37
36
  export declare const useProofs: (queryParams?: Partial<ProofListQueryBindingDto>) => import("react-query").UseQueryResult<import("@procivis/react-native-one-core").ProofListBindingDto, unknown>;
38
37
  export declare const useProofCreate: () => import("react-query").UseMutationResult<string, unknown, CreateProofRequestBindingDto, unknown>;
39
- export declare const useProofForSchemaIdWithTransport: (proofSchemaId: string, transport: Transport[] | undefined, enabled: boolean) => string | undefined;
38
+ export declare const useProofForSchemaIdWithTransport: (proofSchemaId: string, transport: Transport[] | undefined, enabled: boolean) => {
39
+ proofId: string | undefined;
40
+ retract: () => Promise<void>;
41
+ };
40
42
  export declare const useCleanupUnusedProofs: () => void;
41
43
  export declare const useShareProof: (proofUrlProps: ProofUrlHookParams | undefined, enabled: boolean) => {
42
44
  bleAdapterDisabled: boolean;
@@ -2,7 +2,7 @@ import { ClaimBindingDto, Config, CredentialDetailBindingDto, PresentationDefini
2
2
  import { CredentialAttribute, CredentialCardProps } from '../../ui-components/credential';
3
3
  import { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';
4
4
  import { CardLabels, CredentialDetailsCardPropsWithoutWidth } from './credential';
5
- export declare const validityCheckedCardFromCredential: (credential: CredentialDetailBindingDto, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'>;
5
+ export declare const validityCheckedCardFromCredential: (credential: CredentialDetailBindingDto, expanded: boolean, multipleCredentialsAvailable: boolean, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'>;
6
6
  export declare const missingCredentialCardFromRequest: (request: PresentationDefinitionRequestedCredentialBindingDto, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'>;
7
7
  type FlatClaim = ClaimBindingDto & {
8
8
  isArrayElement?: boolean;
@@ -14,7 +14,7 @@ export type ShareCredentialCardLabels = CardLabels & {
14
14
  missingCredential: string;
15
15
  multipleCredentials: string;
16
16
  };
17
- export declare const shareCredentialCardFromCredential: (credential: CredentialDetailBindingDto | undefined, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, request: PresentationDefinitionRequestedCredentialBindingDto, selectedFields: string[] | undefined, config: Config, testID: string, labels: ShareCredentialCardLabels) => CredentialDetailsCardPropsWithoutWidth;
17
+ export declare const shareCredentialCardFromCredential: (credential: CredentialDetailBindingDto | undefined, expanded: boolean, multipleCredentialsAvailable: boolean, request: PresentationDefinitionRequestedCredentialBindingDto, selectedFields: string[] | undefined, config: Config, testID: string, labels: ShareCredentialCardLabels) => CredentialDetailsCardPropsWithoutWidth;
18
18
  export declare const selectCredentialCardAttributeFromClaim: (id: string, config: Config, testID: string, labels: ShareCredentialCardLabels, claim?: FlatClaim, field?: PresentationDefinitionFieldBindingDto) => CredentialAttribute;
19
19
  export declare const selectCredentialCardFromCredential: (credential: CredentialDetailBindingDto, selected: boolean, request: PresentationDefinitionRequestedCredentialBindingDto, config: Config, testID: string, labels: ShareCredentialCardLabels) => CredentialDetailsCardPropsWithoutWidth;
20
20
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procivis/one-react-native-components",
3
- "version": "0.3.102",
3
+ "version": "0.3.106",
4
4
  "author": "Procivis AG (https://procivis.ch)",
5
5
  "license": "Apache-2.0",
6
6
  "description": "Common Procivis ONE UI components for react-native",
@@ -53,7 +53,7 @@
53
53
  "@babel/runtime": "^7.25.0",
54
54
  "@commitlint/config-conventional": "^11.0.0",
55
55
  "@gorhom/bottom-sheet": "^5.1.2",
56
- "@procivis/react-native-one-core": "1.84437.0",
56
+ "@procivis/react-native-one-core": "1.90082.0",
57
57
  "@procivis/react-native-picker": "5.0.3",
58
58
  "@react-native-async-storage/async-storage": "^1.17.3",
59
59
  "@react-native-community/blur": "^4.4.0",
@@ -142,7 +142,7 @@
142
142
  "vite": "^6.2.2"
143
143
  },
144
144
  "peerDependencies": {
145
- "@procivis/react-native-one-core": "^1.84437.0",
145
+ "@procivis/react-native-one-core": "^1.90082.0",
146
146
  "@procivis/react-native-picker": "*",
147
147
  "@react-native-community/blur": "*",
148
148
  "@react-native-community/netinfo": "^11.4.1",
@@ -61,6 +61,7 @@ const defaultIcons: {
61
61
  INTERACTION_CREATED: HistoryStatusAcceptedIcon,
62
62
  INTERACTION_ERRORED: HistoryStatusErrorIcon,
63
63
  INTERACTION_EXPIRED: HistoryStatusErrorIcon,
64
+ DELIVERED: HistoryStatusAcceptedIcon,
64
65
  },
65
66
  entityTypes: {
66
67
  BACKUP: HistoryRevokeIcon,
@@ -84,6 +85,9 @@ const defaultIcons: {
84
85
  STS_IAM_ROLE: HistoryIdentifierIcon,
85
86
  STS_TOKEN: HistoryKeyIcon,
86
87
  SIGNATURE: HistoryCertificateIcon,
88
+ STS_SESSION: HistoryIdentifierIcon,
89
+ NOTIFICATION: HistoryCredentialIcon,
90
+ SUPERVISORY_AUTHORITY: HistoryCertificateIcon,
87
91
  },
88
92
  };
89
93
 
@@ -81,13 +81,6 @@ export const ShareCredential: FunctionComponent<{
81
81
  : undefined,
82
82
  );
83
83
 
84
- const invalid = useMemo(() => {
85
- if (!credential?.lvvcIssuanceDate || !request.validityCredentialNbf) {
86
- return false;
87
- }
88
- return new Date(credential.lvvcIssuanceDate) < new Date(request.validityCredentialNbf);
89
- }, [credential, request]);
90
-
91
84
  const footer = useMemo(() => {
92
85
  if (!expanded) {
93
86
  return;
@@ -109,15 +102,6 @@ export const ShareCredential: FunctionComponent<{
109
102
  );
110
103
  }
111
104
 
112
- if (invalid) {
113
- return (
114
- <ShareCredentialCardNotice
115
- testID={concatTestID(testID, 'notice.invalid')}
116
- text={labels.invalidCredentialNotice}
117
- />
118
- );
119
- }
120
-
121
105
  if (multipleCredentialsAvailable) {
122
106
  return (
123
107
  <SelectShareCredentialCardNotice
@@ -128,7 +112,7 @@ export const ShareCredential: FunctionComponent<{
128
112
  />
129
113
  );
130
114
  }
131
- }, [expanded, invalid, labels, multipleCredentialsAvailable, onSelectCredential, testID, validityState]);
115
+ }, [expanded, labels, multipleCredentialsAvailable, onSelectCredential, testID, validityState]);
132
116
 
133
117
  if (!config) {
134
118
  return null;
@@ -136,7 +120,6 @@ export const ShareCredential: FunctionComponent<{
136
120
 
137
121
  const { card, attributes } = shareCredentialCardFromCredential(
138
122
  credential,
139
- invalid,
140
123
  Boolean(expanded),
141
124
  multipleCredentialsAvailable,
142
125
  request,
@@ -27,8 +27,9 @@ const FoldableSearchHeader: FunctionComponent<FoldableHeaderProps> = ({
27
27
  const [collapsed, setCollapsed] = useState(header ? false : true);
28
28
  const [headerHeight, setHeaderHeight] = useState<number>();
29
29
 
30
+ const containerPaddingTop = withNotice ? 15 : safeAreaInsets.top;
30
31
  const containerPaddingStyle = {
31
- paddingTop: withNotice ? 15 : safeAreaInsets.top,
32
+ paddingTop: containerPaddingTop,
32
33
  };
33
34
 
34
35
  useEffect(() => {
@@ -52,11 +53,13 @@ const FoldableSearchHeader: FunctionComponent<FoldableHeaderProps> = ({
52
53
 
53
54
  const scrollHeaderAnimatedStyle: Animated.WithAnimatedObject<ViewStyle> | undefined = playHeaderFoldAnimation
54
55
  ? {
55
- paddingTop: scrollOffset.interpolate({
56
- extrapolate: 'clamp',
57
- inputRange: [0, headerHeight],
58
- outputRange: [headerHeight, 0],
59
- }),
56
+ transform: [{
57
+ translateY: scrollOffset.interpolate({
58
+ extrapolate: 'clamp',
59
+ inputRange: [0, headerHeight],
60
+ outputRange: [0, -headerHeight],
61
+ }),
62
+ }],
60
63
  }
61
64
  : undefined;
62
65
 
@@ -80,32 +83,36 @@ const FoldableSearchHeader: FunctionComponent<FoldableHeaderProps> = ({
80
83
  return (
81
84
  <Animated.View
82
85
  style={[styles.headerContainer, containerPaddingStyle, withNotice ? styles.noticeBorderRadius : undefined]}>
83
- <View style={[styles.blurWrapper, StyleSheet.absoluteFill]}>
84
- <BlurView
85
- blurStyle={'header'}
86
- color={colorScheme.background}
87
- style={[StyleSheet.absoluteFill, withNotice ? styles.noticeBorderRadius : undefined]}
88
- />
89
- </View>
90
- <View>
91
- <Animated.View style={scrollHeaderAnimatedStyle}>
92
- {searchBar && <AnimatedSearchBar {...searchBar} collapsed={collapsed} />}
93
- </Animated.View>
86
+ <Animated.View style={scrollHeaderAnimatedStyle}>
87
+ <View
88
+ style={[styles.blurFill, { top: -containerPaddingTop }]}>
89
+ <BlurView
90
+ blurStyle={'header'}
91
+ color={colorScheme.background}
92
+ style={[StyleSheet.absoluteFill, withNotice ? styles.noticeBorderRadius : undefined]}
93
+ />
94
+ </View>
94
95
  {header && (
95
- <Animated.View onLayout={onHeaderLayout} style={[styles.headerContainer, fadeHeaderOutAnimatedStyle]}>
96
+ <Animated.View onLayout={onHeaderLayout} style={fadeHeaderOutAnimatedStyle}>
96
97
  {header}
97
98
  </Animated.View>
98
99
  )}
99
- </View>
100
+ {searchBar && <AnimatedSearchBar {...searchBar} collapsed={collapsed} />}
101
+ </Animated.View>
100
102
  </Animated.View>
101
103
  );
102
104
  };
103
105
 
104
106
  const styles = StyleSheet.create({
105
- blurWrapper: {
107
+ blurFill: {
108
+ bottom: 0,
109
+ left: 0,
106
110
  overflow: 'hidden',
111
+ position: 'absolute',
112
+ right: 0,
107
113
  },
108
114
  headerContainer: {
115
+ overflow: 'hidden',
109
116
  position: 'absolute',
110
117
  width: '100%',
111
118
  },
@@ -17,6 +17,7 @@ export * from './list';
17
17
  export * from './loader';
18
18
  export * from './nerd-view';
19
19
  export * from './nfc';
20
+ export * from './notice';
20
21
  export * from './pin';
21
22
  export * from './proof-request';
22
23
  export * from './screens';
@@ -0,0 +1,3 @@
1
+ import WalletNotice from './wallet-notice';
2
+
3
+ export { WalletNotice };
@@ -0,0 +1,82 @@
1
+ import React, { ComponentType, FunctionComponent, JSXElementConstructor, ReactElement, useMemo } from 'react';
2
+ import { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';
3
+
4
+ import { concatTestID } from '../../utils';
5
+ import { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';
6
+ import { CloseIcon } from '../icons';
7
+ import { Typography } from '../text';
8
+ import { useAppColorScheme } from '../theme';
9
+
10
+ export type WalletNoticeProps = {
11
+ accessory?: ComponentType<any> | ReactElement;
12
+ icon?: ComponentType<any> | ReactElement;
13
+ onClose?: () => void;
14
+ style?: StyleProp<ViewStyle>;
15
+ text: string;
16
+ };
17
+
18
+ const testID = 'WalletNotice';
19
+
20
+ const WalletNotice: FunctionComponent<WalletNoticeProps> = ({ accessory, icon, style, text, onClose }) => {
21
+ const colorScheme = useAppColorScheme();
22
+
23
+ const iconView: React.ReactElement | undefined = useMemo(() => {
24
+ if (!icon) {
25
+ return undefined;
26
+ }
27
+ if (React.isValidElement(icon)) {
28
+ return icon;
29
+ } else {
30
+ const IconComponent = icon as JSXElementConstructor<any>;
31
+ return <IconComponent />;
32
+ }
33
+ }, [icon]);
34
+
35
+ const accessoryView: React.ReactElement | undefined = useMemo(() => {
36
+ if (!accessory) {
37
+ return undefined;
38
+ }
39
+ if (React.isValidElement(accessory)) {
40
+ return accessory;
41
+ } else {
42
+ const AccessoryComponent = accessory as JSXElementConstructor<any>;
43
+ return <AccessoryComponent />;
44
+ }
45
+ }, [accessory]);
46
+
47
+ return (
48
+ <View style={[styles.noticeContainer, style]}>
49
+ <View style={styles.title}>
50
+ {iconView}
51
+ <Typography color={colorScheme.white}>{text}</Typography>
52
+ {accessoryView}
53
+ </View>
54
+ {onClose && (
55
+ <TouchableOpacity onPress={onClose} style={styles.closeIcon} testID={concatTestID(testID, 'close')}>
56
+ <CloseIcon color="white" />
57
+ </TouchableOpacity>
58
+ )}
59
+ </View>
60
+ );
61
+ };
62
+
63
+ const styles = StyleSheet.create({
64
+ closeIcon: {
65
+ position: 'absolute',
66
+ right: 20,
67
+ top: 5,
68
+ },
69
+ noticeContainer: {
70
+ flexDirection: 'row',
71
+ justifyContent: 'center',
72
+ position: 'relative',
73
+ },
74
+ title: {
75
+ alignItems: 'center',
76
+ flexDirection: 'row',
77
+ gap: 5,
78
+ justifyContent: 'center',
79
+ },
80
+ });
81
+
82
+ export default WalletNotice;
@@ -151,7 +151,6 @@ export enum VerificationProtocol {
151
151
  OPENID4VP_DRAFT20 = 'OPENID4VP_DRAFT20',
152
152
  OPENID4VP_DRAFT25 = 'OPENID4VP_DRAFT25',
153
153
  OPENID4VP_PROXIMITY_DRAFT00 = 'OPENID4VP_PROXIMITY_DRAFT00',
154
- SCAN_TO_VERIFY = 'SCAN_TO_VERIFY',
155
154
  }
156
155
 
157
156
  export enum VerificationEngagement {
@@ -284,6 +283,15 @@ export const useProofForSchemaIdWithTransport = (
284
283
  setProofIdState(id);
285
284
  }, []);
286
285
 
286
+ const retract = useCallback(async () => {
287
+ const id = proofIdRef.current;
288
+ if (!id) {
289
+ return;
290
+ }
291
+ setProofId(undefined);
292
+ await deleteProof(id).catch(() => {});
293
+ }, [deleteProof, setProofId]);
294
+
287
295
  useEffect(() => {
288
296
  if (!proofIdRef.current) {
289
297
  return;
@@ -341,7 +349,7 @@ export const useProofForSchemaIdWithTransport = (
341
349
  .catch(() => {});
342
350
  }, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);
343
351
 
344
- return deleting ? undefined : proofId;
352
+ return { proofId: deleting ? undefined : proofId, retract };
345
353
  };
346
354
 
347
355
  export const useCleanupUnusedProofs = () => {
@@ -54,7 +54,7 @@ export const getCarouselImagesFromClaims = (
54
54
 
55
55
  let claimValue = '';
56
56
 
57
- if (claim && (claim.value.type_ === 'FLOAT' || claim.value.type_ === 'INTEGER')) {
57
+ if (claim && (claim.value.type_ === 'FLOAT' || claim.value.type_ === 'INTEGER' || claim.value.type_ === 'STRING')) {
58
58
  claimValue = String(claim.value.value);
59
59
  }
60
60