@procivis/one-react-native-components 0.3.99 → 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.
- package/lib/commonjs/components/history/history-list-item-icon.js +5 -3
- package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
- package/lib/commonjs/components/history/history-list-screen.js +1 -0
- package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
- package/lib/commonjs/components/proof-request/v1/share-credential.js +2 -14
- package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/connectivity-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/connectivity-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/filter-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/filter-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/ghost-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/ghost-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/hold-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/scan-button.js +3 -0
- package/lib/commonjs/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/share-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/share-button.js.map +1 -1
- package/lib/commonjs/ui-components/control/checkbox.js +1 -0
- package/lib/commonjs/ui-components/control/checkbox.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-card.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-header.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-header.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js +2 -0
- package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js +1 -0
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js +2 -1
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/commonjs/ui-components/credential/selector.js +1 -0
- package/lib/commonjs/ui-components/credential/selector.js.map +1 -1
- package/lib/commonjs/ui-components/entity/avatar.js +1 -0
- package/lib/commonjs/ui-components/entity/avatar.js.map +1 -1
- package/lib/commonjs/ui-components/header/foldable-header.js +26 -16
- package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
- package/lib/commonjs/ui-components/header/navigation-header.js +1 -0
- package/lib/commonjs/ui-components/header/navigation-header.js.map +1 -1
- package/lib/commonjs/ui-components/history/history-details.js +3 -1
- package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
- package/lib/commonjs/ui-components/icons/history.js +1 -0
- package/lib/commonjs/ui-components/icons/history.js.map +1 -1
- package/lib/commonjs/ui-components/index.js +11 -0
- package/lib/commonjs/ui-components/index.js.map +1 -1
- package/lib/commonjs/ui-components/notice/index.js +14 -0
- package/lib/commonjs/ui-components/notice/index.js.map +1 -0
- package/lib/commonjs/ui-components/notice/wallet-notice.js +80 -0
- package/lib/commonjs/ui-components/notice/wallet-notice.js.map +1 -0
- package/lib/commonjs/ui-components/pin/keypad.js +1 -0
- package/lib/commonjs/ui-components/pin/keypad.js.map +1 -1
- package/lib/commonjs/ui-components/pin/pins.js +1 -0
- package/lib/commonjs/ui-components/pin/pins.js.map +1 -1
- package/lib/commonjs/ui-components/settings/setting-item.js +1 -0
- package/lib/commonjs/ui-components/settings/setting-item.js.map +1 -1
- package/lib/commonjs/ui-components/settings/settings-button.js +1 -0
- package/lib/commonjs/ui-components/settings/settings-button.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/proofs.js +12 -2
- package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-images.js +1 -1
- package/lib/commonjs/utils/parsers/credential-images.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing.js +4 -10
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/module/components/history/history-list-item-icon.js +5 -3
- package/lib/module/components/history/history-list-item-icon.js.map +1 -1
- package/lib/module/components/history/history-list-screen.js +1 -0
- package/lib/module/components/history/history-list-screen.js.map +1 -1
- package/lib/module/components/proof-request/v1/share-credential.js +2 -14
- package/lib/module/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2.js +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/module/ui-components/buttons/connectivity-button.js +1 -0
- package/lib/module/ui-components/buttons/connectivity-button.js.map +1 -1
- package/lib/module/ui-components/buttons/filter-button.js +1 -0
- package/lib/module/ui-components/buttons/filter-button.js.map +1 -1
- package/lib/module/ui-components/buttons/ghost-button.js +1 -0
- package/lib/module/ui-components/buttons/ghost-button.js.map +1 -1
- package/lib/module/ui-components/buttons/hold-button.js +1 -0
- package/lib/module/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/module/ui-components/buttons/scan-button.js +3 -0
- package/lib/module/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/module/ui-components/buttons/share-button.js +1 -0
- package/lib/module/ui-components/buttons/share-button.js.map +1 -1
- package/lib/module/ui-components/control/checkbox.js +1 -0
- package/lib/module/ui-components/control/checkbox.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-card.js +1 -0
- package/lib/module/ui-components/credential/card/credential-card.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-list-item.js +1 -0
- package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-header.js +1 -0
- package/lib/module/ui-components/credential/card/credential-header.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-image-carousel.js +2 -0
- package/lib/module/ui-components/credential/card/credential-image-carousel.js.map +1 -1
- package/lib/module/ui-components/credential/credential-attribute-item.js +1 -0
- package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/module/ui-components/credential/credential-carousel-images.js +2 -1
- package/lib/module/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/module/ui-components/credential/selector.js +1 -0
- package/lib/module/ui-components/credential/selector.js.map +1 -1
- package/lib/module/ui-components/entity/avatar.js +1 -0
- package/lib/module/ui-components/entity/avatar.js.map +1 -1
- package/lib/module/ui-components/header/foldable-header.js +26 -16
- package/lib/module/ui-components/header/foldable-header.js.map +1 -1
- package/lib/module/ui-components/header/navigation-header.js +1 -0
- package/lib/module/ui-components/header/navigation-header.js.map +1 -1
- package/lib/module/ui-components/history/history-details.js +3 -1
- package/lib/module/ui-components/history/history-details.js.map +1 -1
- package/lib/module/ui-components/icons/history.js +1 -0
- package/lib/module/ui-components/icons/history.js.map +1 -1
- package/lib/module/ui-components/index.js +1 -0
- package/lib/module/ui-components/index.js.map +1 -1
- package/lib/module/ui-components/notice/index.js +3 -0
- package/lib/module/ui-components/notice/index.js.map +1 -0
- package/lib/module/ui-components/notice/wallet-notice.js +72 -0
- package/lib/module/ui-components/notice/wallet-notice.js.map +1 -0
- package/lib/module/ui-components/pin/keypad.js +1 -0
- package/lib/module/ui-components/pin/keypad.js.map +1 -1
- package/lib/module/ui-components/pin/pins.js +1 -0
- package/lib/module/ui-components/pin/pins.js.map +1 -1
- package/lib/module/ui-components/settings/setting-item.js +1 -0
- package/lib/module/ui-components/settings/setting-item.js.map +1 -1
- package/lib/module/ui-components/settings/settings-button.js +1 -0
- package/lib/module/ui-components/settings/settings-button.js.map +1 -1
- package/lib/module/utils/hooks/core/proofs.js +12 -2
- package/lib/module/utils/hooks/core/proofs.js.map +1 -1
- package/lib/module/utils/parsers/credential-images.js +1 -1
- package/lib/module/utils/parsers/credential-images.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing.js +4 -10
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/typescript/ui-components/index.d.ts +1 -0
- package/lib/typescript/ui-components/notice/index.d.ts +2 -0
- package/lib/typescript/ui-components/notice/wallet-notice.d.ts +11 -0
- package/lib/typescript/utils/hooks/core/proofs.d.ts +5 -3
- package/lib/typescript/utils/parsers/credential-sharing.d.ts +2 -2
- package/lib/typescript/utils/parsers/credential.d.ts +2 -29
- package/package.json +3 -3
- package/src/components/history/history-list-item-icon.tsx +4 -2
- package/src/components/history/history-list-screen.tsx +1 -0
- package/src/components/proof-request/v1/share-credential.tsx +1 -18
- package/src/components/proof-request/v2/share-credential-v2-group.tsx +1 -0
- package/src/components/proof-request/v2/share-credential-v2.tsx +1 -0
- package/src/ui-components/buttons/connectivity-button.tsx +1 -0
- package/src/ui-components/buttons/filter-button.tsx +1 -0
- package/src/ui-components/buttons/ghost-button.tsx +1 -0
- package/src/ui-components/buttons/hold-button.tsx +1 -0
- package/src/ui-components/buttons/scan-button.tsx +3 -0
- package/src/ui-components/buttons/share-button.tsx +1 -0
- package/src/ui-components/control/checkbox.tsx +1 -0
- package/src/ui-components/credential/card/credential-card.tsx +1 -0
- package/src/ui-components/credential/card/credential-details-card.tsx +2 -0
- package/src/ui-components/credential/card/credential-details-list-item.tsx +1 -0
- package/src/ui-components/credential/card/credential-header.tsx +1 -0
- package/src/ui-components/credential/card/credential-image-carousel.tsx +2 -2
- package/src/ui-components/credential/credential-attribute-item.tsx +1 -0
- package/src/ui-components/credential/credential-carousel-images.tsx +1 -0
- package/src/ui-components/credential/selector.tsx +1 -0
- package/src/ui-components/entity/avatar.tsx +1 -0
- package/src/ui-components/header/foldable-header.tsx +27 -20
- package/src/ui-components/header/navigation-header.tsx +1 -0
- package/src/ui-components/history/history-details.tsx +2 -0
- package/src/ui-components/icons/history.tsx +1 -0
- package/src/ui-components/index.ts +1 -0
- package/src/ui-components/notice/index.ts +3 -0
- package/src/ui-components/notice/wallet-notice.tsx +82 -0
- package/src/ui-components/pin/keypad.tsx +1 -0
- package/src/ui-components/pin/pins.tsx +1 -0
- package/src/ui-components/settings/setting-item.tsx +1 -0
- package/src/ui-components/settings/settings-button.tsx +1 -0
- package/src/utils/hooks/core/proofs.ts +10 -2
- package/src/utils/parsers/credential-images.tsx +1 -1
- package/src/utils/parsers/credential-sharing-v2.tsx +0 -1
- package/src/utils/parsers/credential-sharing.tsx +1 -10
- package/src/utils/parsers/credential.ts +2 -2
|
@@ -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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CredentialStateBindingEnum","DataTypeEnum","FormatFeatureEnum","CredentialErrorIcon","CredentialNoticeWarningIcon","CredentialWarningIcon","formatDateLocalized","formatDateTimeLocalized","concatTestID","getCarouselImagesFromClaims","ValidityState","getValidityState","credential","state","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","SelectiveDisclosure","undefined","findClaimByPath","path","claims","exactClaim","find","claim","parentClaim","startsWith","value","type_","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","_credential$mdocMsoVa","mdocMsoValidityIssue","mdocMsoValidity","nextUpdate","Date","credentialDetailFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","layoutProperties","credentialDetailPrimary","suspendEndDate","suspendedUntil","suspended","credentialDetailTestID","statusIcon","revoked","credentialDetailErrorColor","validityIssues","issuanceDate","createdDate","credentialDetailSecondary","primary","primaryAttribute","secondary","secondaryAttribute","cardHeaderFromCredential","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","color","logo","backgroundColor","credentialName","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","result","cardCarouselImages","cardImage","background","header","detailsCardAttributeFromClaim","id","split","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Object","attributes","nestedClaim","_formatDateLocalized","String","date","Picture","SwiyuPicture","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","length","push","first","rest","parent","a","insertAttributeInParent","join","nestAttributeInDummyParent","pathParts","listValue","disabled","_parent$attributes","nextParent","_parent$values","_parent$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n ClaimBindingDto,\n Config,\n CredentialDetailBindingDto,\n CredentialListItemBindingDto,\n CredentialSchemaDetailBindingDto,\n CredentialStateBindingEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\nimport { FC } from 'react';\nimport { SvgProps } from 'react-native-svg';\n\nimport {\n CredentialAttribute,\n CredentialAttributeValue,\n CredentialCardProps,\n CredentialDetailsCardProps,\n CredentialHeaderProps,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialErrorIcon, CredentialNoticeWarningIcon, CredentialWarningIcon } from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItemBindingDto | undefined) => {\n if (credential?.state === CredentialStateBindingEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateBindingEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (\n credential: CredentialListItemBindingDto | undefined,\n config: Config | undefined,\n) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: ClaimBindingDto[]): ClaimBindingDto | undefined => {\n if (!path) {\n return undefined;\n }\n\n const exactClaim = claims.find((claim) => claim.path === path);\n if (exactClaim) {\n return exactClaim;\n }\n\n const parentClaim = claims.find((claim) => path.startsWith(`${claim.path}/`));\n if (parentClaim && parentClaim.value.type_ === 'NESTED') {\n return findClaimByPath(path, parentClaim.value.value);\n }\n\n return undefined;\n};\n\nconst formatCredentialDetail = (claim: ClaimBindingDto, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetailBindingDto): boolean => {\n const mdocMsoValidityIssue = Boolean(\n credential.mdocMsoValidity?.nextUpdate && new Date(credential.mdocMsoValidity.nextUpdate) < new Date(),\n );\n\n return mdocMsoValidityIssue;\n};\n\nexport type CardHeaderLabels = {\n validityIssues: string;\n revoked: string;\n suspended: string;\n suspendedUntil: (date: string) => string;\n};\n\nconst credentialDetailFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): {\n credentialDetailPrimary?: string;\n credentialDetailSecondary?: string;\n credentialDetailErrorColor?: boolean;\n credentialDetailTestID?: string;\n statusIcon?: FC<SvgProps>;\n} => {\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateBindingEnum.SUSPENDED:\n return {\n credentialDetailPrimary: credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended,\n credentialDetailTestID: concatTestID(testID, 'suspended'),\n statusIcon: CredentialWarningIcon,\n };\n case CredentialStateBindingEnum.REVOKED:\n return {\n credentialDetailPrimary: labels.revoked,\n credentialDetailErrorColor: true,\n credentialDetailTestID: concatTestID(testID, 'revoked'),\n statusIcon: CredentialErrorIcon,\n };\n }\n\n if (hasMsoValidityIssues(credential)) {\n return {\n credentialDetailPrimary: labels.validityIssues,\n credentialDetailTestID: concatTestID(testID, 'validity-issue'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n let credentialDetailSecondary: string | undefined;\n\n const primary = findClaimByPath(layoutProperties?.primaryAttribute, claims);\n\n if (primary) {\n credentialDetailPrimary = formatCredentialDetail(primary, config, concatTestID(testID, 'primary'));\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'));\n }\n\n return {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID: concatTestID(testID, 'detail'),\n };\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n const {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailErrorColor,\n credentialDetailTestID,\n statusIcon,\n } = credentialDetailFromCredential(credential, claims, config, testID, labels);\n const { layoutProperties } = credential.schema;\n\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName: credential.schema.name,\n icon: layoutProperties?.logo?.image\n ? {\n imageSource: {\n uri: layoutProperties.logo.image,\n },\n }\n : undefined,\n iconLabelColor: layoutProperties?.logo?.fontColor,\n statusIcon,\n testID,\n };\n};\n\nexport type CardLabels = CardHeaderLabels & {\n validityIssuesNotice: string;\n};\n\nexport const getCredentialCardPropsFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n const { layoutProperties } = credential.schema;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n }\n\n const result: Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> = {\n cardCarouselImages: getCarouselImagesFromClaims(claims, layoutProperties, concatTestID(testID, 'carousel')),\n cardImage: layoutProperties?.background?.image\n ? { imageSource: { uri: layoutProperties.background.image } }\n : undefined,\n color: layoutProperties?.background?.color,\n header: cardHeaderFromCredential(credential, claims, config, concatTestID(testID, 'header'), labels),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (\n claim: ClaimBindingDto,\n config: Config,\n testID: string,\n): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.path,\n name: claim.path.split('/').pop(),\n path: claim.path,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (\n claim: ClaimBindingDto,\n config: Config,\n testID: string,\n): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.schema.datatype];\n\n if (claim.schema.array) {\n return {\n values: ((claim.value.value as ClaimBindingDto[]) || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(arrayValue, config, concatTestID(testID, index.toString()));\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (claim.value.type_ !== 'NESTED') {\n return { attributes: [] };\n }\n return {\n attributes: claim.value.value.map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value.value) };\n }\n const date = claim.value.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.Picture: // fallback\n case DataTypeEnum.SwiyuPicture: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.value.value) };\n }\n }\n};\n\nexport type CredentialDetailsCardPropsWithoutWidth = Omit<CredentialDetailsCardProps, 'expanded' | 'card'> & {\n card: Omit<CredentialCardProps, 'width'>;\n};\n\nexport const detailsCardFromCredential = (\n credential: CredentialDetailBindingDto,\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[],\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString())),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n );\n\n return {\n attributes,\n card,\n };\n};\n\n// Converts a flat list of attributes into a nested structure\n// modifies the names to not include slashes\nexport const nestAttributes = (attributes: CredentialAttribute[]): CredentialAttribute[] => {\n const result: CredentialAttribute[] = [];\n\n for (const attribute of attributes) {\n const attributePath = attribute.path.split('/');\n if (attributePath.length === 0) {\n result.push(attribute);\n } else {\n const [first, ...rest] = attributePath;\n const parent = result.find((a) => a.name === first);\n if (parent) {\n insertAttributeInParent({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyParent(attribute));\n }\n }\n }\n\n return result;\n};\n\n// We nest the leaf node in a (one or more) nested object(s)\n// to make sure the tree structure is correctly rendered in proof request screens.\nconst nestAttributeInDummyParent = (attribute: CredentialAttribute): CredentialAttribute => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n if (!rest.length) {\n return attribute;\n }\n\n // The dummy object is not selectable, and contains a placeholder ID\n // the user can't interact with it.\n if (attribute.listValue) {\n return {\n values: [nestAttributeInDummyParent({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: first,\n };\n } else {\n return {\n attributes: [nestAttributeInDummyParent({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: first,\n };\n }\n};\n\n// Recursively insert an attribute into an parent\n// Will create nested parents if necessary\nconst insertAttributeInParent = (attribute: CredentialAttribute, parent: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = parent.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n if (attribute.listValue) {\n parent.values?.push(nestAttributeInDummyParent(attribute));\n } else {\n parent.attributes?.push(nestAttributeInDummyParent(attribute));\n }\n } else {\n insertAttributeInParent({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchemaDetailBindingDto) {\n return {\n ...credentialSchema,\n layoutProperties: {\n ...credentialSchema.layoutProperties,\n background: {\n ...credentialSchema.layoutProperties?.background,\n image: parseBase64Image(credentialSchema.layoutProperties?.background?.image),\n },\n logo: {\n ...credentialSchema.layoutProperties?.logo,\n image: parseBase64Image(credentialSchema.layoutProperties?.logo?.image),\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CredentialStateBindingEnum","DataTypeEnum","FormatFeatureEnum","CredentialErrorIcon","CredentialNoticeWarningIcon","CredentialWarningIcon","formatDateLocalized","formatDateTimeLocalized","concatTestID","getCarouselImagesFromClaims","ValidityState","getValidityState","credential","state","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","SelectiveDisclosure","undefined","findClaimByPath","path","claims","exactClaim","find","claim","parentClaim","startsWith","value","type_","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","_credential$mdocMsoVa","mdocMsoValidityIssue","mdocMsoValidity","nextUpdate","Date","credentialDetailFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","layoutProperties","credentialDetailPrimary","suspendEndDate","suspendedUntil","suspended","credentialDetailTestID","statusIcon","revoked","credentialDetailErrorColor","validityIssues","issuanceDate","createdDate","credentialDetailSecondary","primary","primaryAttribute","secondary","secondaryAttribute","cardHeaderFromCredential","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","color","logo","backgroundColor","credentialName","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","result","cardCarouselImages","cardImage","background","header","detailsCardAttributeFromClaim","id","split","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Object","attributes","nestedClaim","_formatDateLocalized","String","date","Picture","SwiyuPicture","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","length","push","first","rest","parent","a","insertAttributeInParent","join","nestAttributeInDummyParent","pathParts","listValue","disabled","_parent$attributes","nextParent","_parent$values","_parent$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n ClaimBindingDto,\n Config,\n CredentialDetailBindingDto,\n CredentialListItemBindingDto,\n CredentialSchemaBindingDto,\n CredentialStateBindingEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\nimport { FC } from 'react';\nimport { SvgProps } from 'react-native-svg';\n\nimport {\n CredentialAttribute,\n CredentialAttributeValue,\n CredentialCardProps,\n CredentialDetailsCardProps,\n CredentialHeaderProps,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialErrorIcon, CredentialNoticeWarningIcon, CredentialWarningIcon } from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItemBindingDto | undefined) => {\n if (credential?.state === CredentialStateBindingEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateBindingEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (\n credential: CredentialListItemBindingDto | undefined,\n config: Config | undefined,\n) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: ClaimBindingDto[]): ClaimBindingDto | undefined => {\n if (!path) {\n return undefined;\n }\n\n const exactClaim = claims.find((claim) => claim.path === path);\n if (exactClaim) {\n return exactClaim;\n }\n\n const parentClaim = claims.find((claim) => path.startsWith(`${claim.path}/`));\n if (parentClaim && parentClaim.value.type_ === 'NESTED') {\n return findClaimByPath(path, parentClaim.value.value);\n }\n\n return undefined;\n};\n\nconst formatCredentialDetail = (claim: ClaimBindingDto, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetailBindingDto): boolean => {\n const mdocMsoValidityIssue = Boolean(\n credential.mdocMsoValidity?.nextUpdate && new Date(credential.mdocMsoValidity.nextUpdate) < new Date(),\n );\n\n return mdocMsoValidityIssue;\n};\n\nexport type CardHeaderLabels = {\n validityIssues: string;\n revoked: string;\n suspended: string;\n suspendedUntil: (date: string) => string;\n};\n\nconst credentialDetailFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): {\n credentialDetailPrimary?: string;\n credentialDetailSecondary?: string;\n credentialDetailErrorColor?: boolean;\n credentialDetailTestID?: string;\n statusIcon?: FC<SvgProps>;\n} => {\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateBindingEnum.SUSPENDED:\n return {\n credentialDetailPrimary: credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended,\n credentialDetailTestID: concatTestID(testID, 'suspended'),\n statusIcon: CredentialWarningIcon,\n };\n case CredentialStateBindingEnum.REVOKED:\n return {\n credentialDetailPrimary: labels.revoked,\n credentialDetailErrorColor: true,\n credentialDetailTestID: concatTestID(testID, 'revoked'),\n statusIcon: CredentialErrorIcon,\n };\n }\n\n if (hasMsoValidityIssues(credential)) {\n return {\n credentialDetailPrimary: labels.validityIssues,\n credentialDetailTestID: concatTestID(testID, 'validity-issue'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n let credentialDetailSecondary: string | undefined;\n\n const primary = findClaimByPath(layoutProperties?.primaryAttribute, claims);\n\n if (primary) {\n credentialDetailPrimary = formatCredentialDetail(primary, config, concatTestID(testID, 'primary'));\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'));\n }\n\n return {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID: concatTestID(testID, 'detail'),\n };\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n const {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailErrorColor,\n credentialDetailTestID,\n statusIcon,\n } = credentialDetailFromCredential(credential, claims, config, testID, labels);\n const { layoutProperties } = credential.schema;\n\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName: credential.schema.name,\n icon: layoutProperties?.logo?.image\n ? {\n imageSource: {\n uri: layoutProperties.logo.image,\n },\n }\n : undefined,\n iconLabelColor: layoutProperties?.logo?.fontColor,\n statusIcon,\n testID,\n };\n};\n\nexport type CardLabels = CardHeaderLabels & {\n validityIssuesNotice: string;\n};\n\nexport const getCredentialCardPropsFromCredential = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[] = [],\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n const { layoutProperties } = credential.schema;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n }\n\n const result: Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> = {\n cardCarouselImages: getCarouselImagesFromClaims(claims, layoutProperties, concatTestID(testID, 'carousel')),\n cardImage: layoutProperties?.background?.image\n ? { imageSource: { uri: layoutProperties.background.image } }\n : undefined,\n color: layoutProperties?.background?.color,\n header: cardHeaderFromCredential(credential, claims, config, concatTestID(testID, 'header'), labels),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (\n claim: ClaimBindingDto,\n config: Config,\n testID: string,\n): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.path,\n name: claim.path.split('/').pop(),\n path: claim.path,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (\n claim: ClaimBindingDto,\n config: Config,\n testID: string,\n): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.schema.datatype];\n\n if (claim.schema.array) {\n return {\n values: ((claim.value.value as ClaimBindingDto[]) || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(arrayValue, config, concatTestID(testID, index.toString()));\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (claim.value.type_ !== 'NESTED') {\n return { attributes: [] };\n }\n return {\n attributes: claim.value.value.map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value.value) };\n }\n const date = claim.value.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.Picture: // fallback\n case DataTypeEnum.SwiyuPicture: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.value.value) };\n }\n }\n};\n\nexport type CredentialDetailsCardPropsWithoutWidth = Omit<CredentialDetailsCardProps, 'expanded' | 'card'> & {\n card: Omit<CredentialCardProps, 'width'>;\n};\n\nexport const detailsCardFromCredential = (\n credential: CredentialDetailBindingDto,\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetailBindingDto,\n claims: ClaimBindingDto[],\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString())),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n );\n\n return {\n attributes,\n card,\n };\n};\n\n// Converts a flat list of attributes into a nested structure\n// modifies the names to not include slashes\nexport const nestAttributes = (attributes: CredentialAttribute[]): CredentialAttribute[] => {\n const result: CredentialAttribute[] = [];\n\n for (const attribute of attributes) {\n const attributePath = attribute.path.split('/');\n if (attributePath.length === 0) {\n result.push(attribute);\n } else {\n const [first, ...rest] = attributePath;\n const parent = result.find((a) => a.name === first);\n if (parent) {\n insertAttributeInParent({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyParent(attribute));\n }\n }\n }\n\n return result;\n};\n\n// We nest the leaf node in a (one or more) nested object(s)\n// to make sure the tree structure is correctly rendered in proof request screens.\nconst nestAttributeInDummyParent = (attribute: CredentialAttribute): CredentialAttribute => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n if (!rest.length) {\n return attribute;\n }\n\n // The dummy object is not selectable, and contains a placeholder ID\n // the user can't interact with it.\n if (attribute.listValue) {\n return {\n values: [nestAttributeInDummyParent({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: first,\n };\n } else {\n return {\n attributes: [nestAttributeInDummyParent({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: first,\n };\n }\n};\n\n// Recursively insert an attribute into an parent\n// Will create nested parents if necessary\nconst insertAttributeInParent = (attribute: CredentialAttribute, parent: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = parent.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n if (attribute.listValue) {\n parent.values?.push(nestAttributeInDummyParent(attribute));\n } else {\n parent.attributes?.push(nestAttributeInDummyParent(attribute));\n }\n } else {\n insertAttributeInParent({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages<T extends CredentialSchemaBindingDto>(credentialSchema: T): T {\n return {\n ...credentialSchema,\n layoutProperties: {\n ...credentialSchema.layoutProperties,\n background: {\n ...credentialSchema.layoutProperties?.background,\n image: parseBase64Image(credentialSchema.layoutProperties?.background?.image),\n },\n logo: {\n ...credentialSchema.layoutProperties?.logo,\n image: parseBase64Image(credentialSchema.layoutProperties?.logo?.image),\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -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) =>
|
|
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,
|
|
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,
|
|
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 {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClaimBindingDto, Config, CredentialDetailBindingDto, CredentialListItemBindingDto,
|
|
1
|
+
import { ClaimBindingDto, Config, CredentialDetailBindingDto, CredentialListItemBindingDto, CredentialSchemaBindingDto } from '@procivis/react-native-one-core';
|
|
2
2
|
import { CredentialAttribute, CredentialCardProps, CredentialDetailsCardProps, CredentialHeaderProps } from '../../ui-components/credential';
|
|
3
3
|
import { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';
|
|
4
4
|
export declare enum ValidityState {
|
|
@@ -28,31 +28,4 @@ export type CredentialDetailsCardPropsWithoutWidth = Omit<CredentialDetailsCardP
|
|
|
28
28
|
export declare const detailsCardFromCredential: (credential: CredentialDetailBindingDto, config: Config, testID: string, labels: CardLabels) => CredentialDetailsCardPropsWithoutWidth;
|
|
29
29
|
export declare const detailsCardFromCredentialWithClaims: (credential: CredentialDetailBindingDto, claims: ClaimBindingDto[], config: Config, testID: string, labels: CardLabels) => CredentialDetailsCardPropsWithoutWidth;
|
|
30
30
|
export declare const nestAttributes: (attributes: CredentialAttribute[]) => CredentialAttribute[];
|
|
31
|
-
export declare function getCredentialSchemaWithoutImages(credentialSchema:
|
|
32
|
-
layoutProperties: {
|
|
33
|
-
background: {
|
|
34
|
-
image: string;
|
|
35
|
-
color?: string | undefined;
|
|
36
|
-
};
|
|
37
|
-
logo: {
|
|
38
|
-
image: string;
|
|
39
|
-
fontColor?: string | undefined;
|
|
40
|
-
backgroundColor?: string | undefined;
|
|
41
|
-
};
|
|
42
|
-
primaryAttribute?: string | undefined;
|
|
43
|
-
secondaryAttribute?: string | undefined;
|
|
44
|
-
pictureAttribute?: string | undefined;
|
|
45
|
-
code?: import("@procivis/react-native-one-core").CredentialSchemaCodePropertiesBindingDto | undefined;
|
|
46
|
-
};
|
|
47
|
-
id: string;
|
|
48
|
-
createdDate: string;
|
|
49
|
-
lastModified: string;
|
|
50
|
-
name: string;
|
|
51
|
-
format: string;
|
|
52
|
-
revocationMethod: string;
|
|
53
|
-
claims: import("@procivis/react-native-one-core").CredentialClaimSchemaBindingDto[];
|
|
54
|
-
keyStorageSecurity?: import("@procivis/react-native-one-core").KeyStorageSecurityBindingEnum | undefined;
|
|
55
|
-
schemaId: string;
|
|
56
|
-
importedSourceUrl: string;
|
|
57
|
-
layoutType?: import("@procivis/react-native-one-core").LayoutTypeBindingEnum | undefined;
|
|
58
|
-
};
|
|
31
|
+
export declare function getCredentialSchemaWithoutImages<T extends CredentialSchemaBindingDto>(credentialSchema: T): T;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@procivis/one-react-native-components",
|
|
3
|
-
"version": "0.3.
|
|
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.
|
|
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.
|
|
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,8 +61,7 @@ const defaultIcons: {
|
|
|
61
61
|
INTERACTION_CREATED: HistoryStatusAcceptedIcon,
|
|
62
62
|
INTERACTION_ERRORED: HistoryStatusErrorIcon,
|
|
63
63
|
INTERACTION_EXPIRED: HistoryStatusErrorIcon,
|
|
64
|
-
|
|
65
|
-
REGISTRATION_CERTIFICATE_REVOKED: HistoryStatusErrorIcon,
|
|
64
|
+
DELIVERED: HistoryStatusAcceptedIcon,
|
|
66
65
|
},
|
|
67
66
|
entityTypes: {
|
|
68
67
|
BACKUP: HistoryRevokeIcon,
|
|
@@ -86,6 +85,9 @@ const defaultIcons: {
|
|
|
86
85
|
STS_IAM_ROLE: HistoryIdentifierIcon,
|
|
87
86
|
STS_TOKEN: HistoryKeyIcon,
|
|
88
87
|
SIGNATURE: HistoryCertificateIcon,
|
|
88
|
+
STS_SESSION: HistoryIdentifierIcon,
|
|
89
|
+
NOTIFICATION: HistoryCredentialIcon,
|
|
90
|
+
SUPERVISORY_AUTHORITY: HistoryCertificateIcon,
|
|
89
91
|
},
|
|
90
92
|
};
|
|
91
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,
|
|
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,
|
|
@@ -40,12 +40,14 @@ export default ScanButton;
|
|
|
40
40
|
const styles = StyleSheet.create({
|
|
41
41
|
blurWrapper: {
|
|
42
42
|
borderRadius: 28,
|
|
43
|
+
borderWidth: 0,
|
|
43
44
|
height: 80,
|
|
44
45
|
padding: 8,
|
|
45
46
|
width: 104,
|
|
46
47
|
},
|
|
47
48
|
button: {
|
|
48
49
|
borderRadius: 28,
|
|
50
|
+
borderWidth: 0,
|
|
49
51
|
height: 80,
|
|
50
52
|
left: '50%',
|
|
51
53
|
marginLeft: -52,
|
|
@@ -59,6 +61,7 @@ const styles = StyleSheet.create({
|
|
|
59
61
|
iconWrapper: {
|
|
60
62
|
alignItems: 'center',
|
|
61
63
|
borderRadius: 20,
|
|
64
|
+
borderWidth: 0,
|
|
62
65
|
height: '100%',
|
|
63
66
|
justifyContent: 'center',
|
|
64
67
|
width: '100%',
|