@procivis/one-react-native-components 0.3.132 → 0.3.142
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 +2 -0
- package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/scan-button.js +122 -27
- package/lib/commonjs/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js +37 -18
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js +13 -4
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/commonjs/ui-components/icons/icons.js +36 -2
- package/lib/commonjs/ui-components/icons/icons.js.map +1 -1
- package/lib/commonjs/ui-components/list/wallet/empty-list.js +2 -1
- package/lib/commonjs/ui-components/list/wallet/empty-list.js.map +1 -1
- package/lib/commonjs/ui-components/notice/wallet-notice.js +4 -2
- package/lib/commonjs/ui-components/notice/wallet-notice.js.map +1 -1
- package/lib/commonjs/ui-components/text/expandableTypography.js +64 -0
- package/lib/commonjs/ui-components/text/expandableTypography.js.map +1 -0
- package/lib/commonjs/ui-components/text/index.js +15 -0
- package/lib/commonjs/ui-components/text/index.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/credential-schemas.js +24 -1
- package/lib/commonjs/utils/hooks/core/credential-schemas.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/wallet-unit.js +20 -1
- package/lib/commonjs/utils/hooks/core/wallet-unit.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js +1 -5
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing.js +17 -11
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js +12 -4
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/module/components/history/history-list-item-icon.js +2 -0
- package/lib/module/components/history/history-list-item-icon.js.map +1 -1
- package/lib/module/ui-components/buttons/scan-button.js +124 -29
- package/lib/module/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js +37 -18
- package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/module/ui-components/credential/credential-attribute-item.js +13 -4
- package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/module/ui-components/icons/icons.js +32 -0
- package/lib/module/ui-components/icons/icons.js.map +1 -1
- package/lib/module/ui-components/list/wallet/empty-list.js +2 -1
- package/lib/module/ui-components/list/wallet/empty-list.js.map +1 -1
- package/lib/module/ui-components/notice/wallet-notice.js +4 -2
- package/lib/module/ui-components/notice/wallet-notice.js.map +1 -1
- package/lib/module/ui-components/text/expandableTypography.js +55 -0
- package/lib/module/ui-components/text/expandableTypography.js.map +1 -0
- package/lib/module/ui-components/text/index.js +2 -1
- package/lib/module/ui-components/text/index.js.map +1 -1
- package/lib/module/utils/hooks/core/credential-schemas.js +24 -1
- package/lib/module/utils/hooks/core/credential-schemas.js.map +1 -1
- package/lib/module/utils/hooks/core/wallet-unit.js +18 -0
- package/lib/module/utils/hooks/core/wallet-unit.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js +1 -5
- package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing.js +18 -12
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js +10 -4
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/typescript/ui-components/buttons/scan-button.d.ts +9 -3
- package/lib/typescript/ui-components/credential/card/credential-details-card.d.ts +3 -0
- package/lib/typescript/ui-components/credential/credential-attribute-item.d.ts +3 -0
- package/lib/typescript/ui-components/icons/icons.d.ts +2 -0
- package/lib/typescript/ui-components/list/wallet/empty-list.d.ts +2 -2
- package/lib/typescript/ui-components/text/expandableTypography.d.ts +10 -0
- package/lib/typescript/ui-components/text/index.d.ts +2 -1
- package/lib/typescript/ui-components/text/typography.d.ts +14 -14
- package/lib/typescript/utils/hooks/app-state.d.ts +1 -1
- package/lib/typescript/utils/hooks/core/wallet-unit.d.ts +5 -1
- package/lib/typescript/utils/parsers/credential-sharing.d.ts +4 -3
- package/lib/typescript/utils/parsers/credential.d.ts +2 -1
- package/package.json +3 -3
- package/src/components/history/history-list-item-icon.tsx +2 -0
- package/src/ui-components/buttons/scan-button.tsx +130 -38
- package/src/ui-components/credential/card/credential-details-card.tsx +46 -19
- package/src/ui-components/credential/credential-attribute-item.tsx +15 -3
- package/src/ui-components/icons/icons.tsx +24 -0
- package/src/ui-components/list/wallet/empty-list.tsx +11 -8
- package/src/ui-components/notice/wallet-notice.tsx +4 -2
- package/src/ui-components/text/expandableTypography.tsx +71 -0
- package/src/ui-components/text/index.ts +2 -1
- package/src/utils/hooks/core/credential-schemas.ts +23 -1
- package/src/utils/hooks/core/wallet-unit.ts +21 -0
- package/src/utils/parsers/credential-sharing-v2.tsx +1 -5
- package/src/utils/parsers/credential-sharing.tsx +20 -9
- package/src/utils/parsers/credential.ts +14 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeOneCore","require","_icons","_date","_testID","_translations","_credentialImages","ValidityState","exports","getValidityState","credential","state","CredentialState","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","FormatFeature","SelectiveDisclosure","undefined","findClaimByPath","path","claims","exactClaim","find","claim","parentClaim","startsWith","value","type_","formatCredentialDetail","testID","language","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","_credential$mdocMsoVa","mdocMsoValidityIssue","mdocMsoValidity","nextUpdate","Date","credentialDetailFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","layoutProperties","credentialDetailPrimary","suspendEndDate","suspendedUntil","formatDateTimeLocalized","suspended","credentialDetailTestID","concatTestID","statusIcon","CredentialWarningIcon","revoked","credentialDetailErrorColor","CredentialErrorIcon","validityIssues","issuanceDate","createdDate","credentialDetailSecondary","primary","primaryAttribute","secondary","secondaryAttribute","cardHeaderFromCredential","_layoutProperties$log","_getTranslatedLabel","_credential$schema$tr","_layoutProperties$log2","_layoutProperties$log3","defaultLanguage","color","logo","backgroundColor","credentialName","getTranslatedLabel","translations","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","CredentialNoticeWarningIcon","_credential$schema$tr2","description","CredentialNoticeInfoIcon","result","cardCarouselImages","getCarouselImagesFromClaims","cardImage","background","header","detailsCardAttributeFromClaim","_getTranslatedLabel2","id","split","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","DataType","Object","attributes","nestedClaim","_formatDateLocalized","String","date","formatDateLocalized","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 Claim,\n CoreConfig,\n CredentialDetail,\n CredentialListItem,\n CredentialSchemaListItem,\n CredentialState,\n DataType,\n FormatFeature,\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 {\n CredentialErrorIcon,\n CredentialNoticeInfoIcon,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n} from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getTranslatedLabel } from '../translations';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItem | undefined) => {\n if (credential?.state === CredentialState.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialState.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (\n credential: CredentialListItem | undefined,\n config: CoreConfig | undefined,\n) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeature.SelectiveDisclosure))\n : undefined;\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[]): Claim | 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 = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID, language);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): 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: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n testID: string,\n labels: CardHeaderLabels,\n language: string | undefined,\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 CredentialState.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 CredentialState.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'), language);\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'), language);\n }\n\n return {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID: concatTestID(testID, 'detail'),\n };\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n testID: string,\n labels: CardHeaderLabels,\n language: string | undefined,\n): Omit<CredentialHeaderProps, 'style'> => {\n const {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailErrorColor,\n credentialDetailTestID,\n statusIcon,\n } = credentialDetailFromCredential(credential, claims, config, testID, labels, language);\n const { layoutProperties } = credential.schema;\n const defaultLanguage = config.defaultLanguage;\n\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName:\n getTranslatedLabel(credential.schema.translations?.name, language, defaultLanguage) ?? 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: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n const { layoutProperties } = credential.schema;\n const defaultLanguage = config.defaultLanguage;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n } else if (!notice) {\n let description = getTranslatedLabel(credential.schema.translations?.description, language, defaultLanguage);\n if (description) {\n notice = {\n text: description,\n noticeIcon: CredentialNoticeInfoIcon,\n };\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, language),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID, language);\n const defaultLanguage = config.defaultLanguage;\n return {\n id: claim.path,\n name: getTranslatedLabel(claim.schema.translations.name, language, defaultLanguage) ?? claim.path.split('/').pop(),\n path: claim.path,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.schema.datatype];\n\n if (claim.schema.array) {\n return {\n values: ((claim.value.value as Claim[]) || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(arrayValue, config, concatTestID(testID, index.toString()), language);\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataType.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()), language),\n ),\n };\n }\n case DataType.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 DataType.Picture: // fallback\n case DataType.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: CredentialDetail,\n config: CoreConfig,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): CredentialDetailsCardPropsWithoutWidth => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels, language);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetail,\n claims: Claim[],\n config: CoreConfig,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): CredentialDetailsCardPropsWithoutWidth => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString()), language),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n language,\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 CredentialSchemaListItem>(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":[]}
|
|
1
|
+
{"version":3,"names":["_reactNativeOneCore","require","_icons","_date","_testID","_translations","_credentialImages","ValidityState","exports","getValidityState","credential","state","CredentialState","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","FormatFeature","SelectiveDisclosure","undefined","findClaimByPath","path","claims","exactClaim","find","claim","parentClaim","startsWith","value","type_","formatCredentialDetail","testID","language","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","_credential$mdocMsoVa","mdocMsoValidityIssue","mdocMsoValidity","nextUpdate","Date","credentialDetailFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","layoutProperties","credentialDetailPrimary","suspendEndDate","suspendedUntil","formatDateTimeLocalized","suspended","credentialDetailTestID","concatTestID","statusIcon","CredentialWarningIcon","revoked","credentialDetailErrorColor","CredentialErrorIcon","validityIssues","issuanceDate","createdDate","credentialDetailSecondary","primary","primaryAttribute","secondary","secondaryAttribute","cardHeaderFromCredential","_layoutProperties$log","_getTranslatedLabel","_credential$schema$tr","_layoutProperties$log2","_layoutProperties$log3","defaultLanguage","globalSettings","color","logo","backgroundColor","credentialName","getTranslatedLabel","translations","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","CredentialNoticeWarningIcon","_credential$schema$tr2","description","CredentialNoticeInfoIcon","result","cardCarouselImages","getCarouselImagesFromClaims","cardImage","background","header","detailsCardAttributeFromClaim","_getTranslatedLabel2","id","split","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","DataType","Object","attributes","nestedClaim","_formatDateLocalized","String","date","formatDateLocalized","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","credentialDetailFromPresentationV2Credential","presentationCredential","CredentialType","SINGLE"],"sources":["credential.ts"],"sourcesContent":["import {\n Claim,\n CoreConfig,\n CredentialDetail,\n CredentialListItem,\n CredentialSchemaListItem,\n CredentialState,\n CredentialType,\n DataType,\n FormatFeature,\n PresentationDefinitionV2Credential,\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 {\n CredentialErrorIcon,\n CredentialNoticeInfoIcon,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n} from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getTranslatedLabel } from '../translations';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItem | undefined) => {\n if (credential?.state === CredentialState.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialState.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (\n credential: CredentialListItem | undefined,\n config: CoreConfig | undefined,\n) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeature.SelectiveDisclosure))\n : undefined;\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[]): Claim | 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 = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID, language);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): 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: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n testID: string,\n labels: CardHeaderLabels,\n language: string | undefined,\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 CredentialState.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 CredentialState.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'), language);\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'), language);\n }\n\n return {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID: concatTestID(testID, 'detail'),\n };\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n testID: string,\n labels: CardHeaderLabels,\n language: string | undefined,\n): Omit<CredentialHeaderProps, 'style'> => {\n const {\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailErrorColor,\n credentialDetailTestID,\n statusIcon,\n } = credentialDetailFromCredential(credential, claims, config, testID, labels, language);\n const { layoutProperties } = credential.schema;\n const defaultLanguage = config.globalSettings.defaultLanguage;\n\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName:\n getTranslatedLabel(credential.schema.translations?.name, language, defaultLanguage) ?? 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: CredentialDetail,\n claims: Claim[] = [],\n config: CoreConfig,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n const { layoutProperties } = credential.schema;\n const defaultLanguage = config.globalSettings.defaultLanguage;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n } else if (!notice) {\n let description = getTranslatedLabel(credential.schema.translations?.description, language, defaultLanguage);\n if (description) {\n notice = {\n text: description,\n noticeIcon: CredentialNoticeInfoIcon,\n };\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, language),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID, language);\n const defaultLanguage = config.globalSettings.defaultLanguage;\n return {\n id: claim.path,\n name: getTranslatedLabel(claim.schema.translations.name, language, defaultLanguage) ?? claim.path.split('/').pop(),\n path: claim.path,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (\n claim: Claim,\n config: CoreConfig,\n testID: string,\n language: string | undefined,\n): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.schema.datatype];\n\n if (claim.schema.array) {\n return {\n values: ((claim.value.value as Claim[]) || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(arrayValue, config, concatTestID(testID, index.toString()), language);\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataType.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()), language),\n ),\n };\n }\n case DataType.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 DataType.Picture: // fallback\n case DataType.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: CredentialDetail,\n config: CoreConfig,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): CredentialDetailsCardPropsWithoutWidth => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels, language);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetail,\n claims: Claim[],\n config: CoreConfig,\n testID: string,\n labels: CardLabels,\n language: string | undefined,\n): CredentialDetailsCardPropsWithoutWidth => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString()), language),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n language,\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 CredentialSchemaListItem>(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\nexport function credentialDetailFromPresentationV2Credential(\n presentationCredential: CredentialDetail | PresentationDefinitionV2Credential,\n): CredentialDetail {\n return {\n type: CredentialType.SINGLE,\n ...presentationCredential,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ const defaultIcons = {
|
|
|
11
11
|
DELETED: HistoryStatusDeleteIcon,
|
|
12
12
|
ERRORED: HistoryStatusErrorIcon,
|
|
13
13
|
IMPORTED: HistoryStatusAcceptedIcon,
|
|
14
|
+
SIGNED: HistoryStatusAcceptedIcon,
|
|
14
15
|
ISSUED: HistoryStatusAcceptedIcon,
|
|
15
16
|
OFFERED: HistoryStatusAcceptedIcon,
|
|
16
17
|
PENDING: HistoryStatusAcceptedIcon,
|
|
@@ -46,6 +47,7 @@ const defaultIcons = {
|
|
|
46
47
|
IDENTIFIER: HistoryIdentifierIcon,
|
|
47
48
|
KEY: HistoryKeyIcon,
|
|
48
49
|
ORGANISATION: HistoryOrganisationIcon,
|
|
50
|
+
QES_DOCUMENT: HistoryCredentialIcon,
|
|
49
51
|
PROOF: HistoryProofRequestIcon,
|
|
50
52
|
PROOF_SCHEMA: HistorySchemaIcon,
|
|
51
53
|
WALLET_UNIT: HistoryTrustedEntityIcon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HistoryAction","HistoryEntityType","React","useMemo","HistoryBackupCreatedIcon","HistoryBackupRestoredIcon","HistoryCertificateIcon","HistoryCredentialIcon","HistoryDidIcon","HistoryIdentifierIcon","HistoryIssueIcon","HistoryItemIcon","HistoryKeyIcon","HistoryOrganisationIcon","HistoryProofRequestIcon","HistoryRevokeIcon","HistorySchemaIcon","HistoryStatusAcceptedIcon","HistoryStatusDeleteIcon","HistoryStatusErrorIcon","HistoryStatusSuspendIcon","HistorySuspendIcon","HistoryTrustAnchorIcon","HistoryTrustedEntityIcon","defaultIcons","actions","ACCEPTED","ACTIVATED","CLAIMS_REMOVED","CREATED","DEACTIVATED","DELETED","ERRORED","IMPORTED","ISSUED","OFFERED","PENDING","REJECTED","REFRESHED","REMOVED","REQUESTED","RESTORED","RETRACTED","REVOKED","SHARED","SUSPENDED","UPDATED","WITHDRAWN","REACTIVATED","CSR_GENERATED","EXPIRED","INTERACTION_CREATED","INTERACTION_ERRORED","INTERACTION_EXPIRED","DELIVERED","WRP_AC_RECEIVED","WRP_RC_RECEIVED","WRP_NR_RECEIVED","TRUST_RESOLVED","entityTypes","BACKUP","CERTIFICATE","CREDENTIAL","CREDENTIAL_SCHEMA","DID","IDENTIFIER","KEY","ORGANISATION","PROOF","PROOF_SCHEMA","WALLET_UNIT","WALLET_RELYING_PARTY","USER","PROVIDER","STS_ROLE","STS_ORGANISATION","STS_IAM_ROLE","STS_TOKEN","SIGNATURE","STS_SESSION","NOTIFICATION","SUPERVISORY_AUTHORITY","TRUST_LIST_PUBLICATION","TRUST_COLLECTION","TRUST_LIST_SUBSCRIPTION","VERIFIER_INSTANCE","getHistoryItemActionIcon","action","_defaultIcons$actions","HistoryListItemIcon","item","statusIcon","typeIcon","_defaultIcons$entityT","entityType","createElement","StatusIcon","TypeIcon"],"sources":["history-list-item-icon.tsx"],"sourcesContent":["import { HistoryAction, HistoryEntityType, HistoryListItem } from '@procivis/react-native-one-core';\nimport React, { FC, useMemo } from 'react';\nimport { SvgProps } from 'react-native-svg';\n\nimport {\n HistoryBackupCreatedIcon,\n HistoryBackupRestoredIcon,\n HistoryCertificateIcon,\n HistoryCredentialIcon,\n HistoryDidIcon,\n HistoryIdentifierIcon,\n HistoryIssueIcon,\n HistoryItemIcon,\n HistoryKeyIcon,\n HistoryOrganisationIcon,\n HistoryProofRequestIcon,\n HistoryRevokeIcon,\n HistorySchemaIcon,\n HistoryStatusAcceptedIcon,\n HistoryStatusDeleteIcon,\n HistoryStatusErrorIcon,\n HistoryStatusSuspendIcon,\n HistorySuspendIcon,\n HistoryTrustAnchorIcon,\n HistoryTrustedEntityIcon,\n} from '../../ui-components';\n\nconst defaultIcons: {\n actions: { [key in keyof typeof HistoryAction]: FC<SvgProps> };\n entityTypes: { [key in keyof typeof HistoryEntityType]: FC<SvgProps> };\n} = {\n actions: {\n ACCEPTED: HistoryStatusAcceptedIcon,\n ACTIVATED: HistoryStatusAcceptedIcon,\n CLAIMS_REMOVED: HistoryStatusDeleteIcon,\n CREATED: HistoryStatusAcceptedIcon,\n DEACTIVATED: HistoryStatusErrorIcon,\n DELETED: HistoryStatusDeleteIcon,\n ERRORED: HistoryStatusErrorIcon,\n IMPORTED: HistoryStatusAcceptedIcon,\n ISSUED: HistoryStatusAcceptedIcon,\n OFFERED: HistoryStatusAcceptedIcon,\n PENDING: HistoryStatusAcceptedIcon,\n REJECTED: HistoryStatusErrorIcon,\n REFRESHED: HistoryStatusAcceptedIcon,\n REMOVED: HistoryStatusDeleteIcon,\n REQUESTED: HistoryStatusAcceptedIcon,\n RESTORED: HistoryStatusAcceptedIcon,\n RETRACTED: HistoryStatusErrorIcon,\n REVOKED: HistoryStatusErrorIcon,\n SHARED: HistoryStatusAcceptedIcon,\n SUSPENDED: HistoryStatusSuspendIcon,\n UPDATED: HistoryStatusAcceptedIcon,\n WITHDRAWN: HistoryStatusErrorIcon,\n REACTIVATED: HistoryStatusAcceptedIcon,\n CSR_GENERATED: HistoryStatusAcceptedIcon,\n EXPIRED: HistoryStatusErrorIcon,\n INTERACTION_CREATED: HistoryStatusAcceptedIcon,\n INTERACTION_ERRORED: HistoryStatusErrorIcon,\n INTERACTION_EXPIRED: HistoryStatusErrorIcon,\n DELIVERED: HistoryStatusAcceptedIcon,\n WRP_AC_RECEIVED: HistoryStatusAcceptedIcon,\n WRP_RC_RECEIVED: HistoryStatusAcceptedIcon,\n WRP_NR_RECEIVED: HistoryStatusAcceptedIcon,\n TRUST_RESOLVED: HistoryStatusAcceptedIcon,\n },\n entityTypes: {\n BACKUP: HistoryRevokeIcon,\n CERTIFICATE: HistoryCertificateIcon,\n CREDENTIAL: HistoryCredentialIcon,\n CREDENTIAL_SCHEMA: HistorySchemaIcon,\n DID: HistoryDidIcon,\n IDENTIFIER: HistoryIdentifierIcon,\n KEY: HistoryKeyIcon,\n ORGANISATION: HistoryOrganisationIcon,\n PROOF: HistoryProofRequestIcon,\n PROOF_SCHEMA: HistorySchemaIcon,\n WALLET_UNIT: HistoryTrustedEntityIcon,\n WALLET_RELYING_PARTY: HistoryTrustedEntityIcon,\n USER: HistoryIdentifierIcon,\n PROVIDER: HistoryIdentifierIcon,\n STS_ROLE: HistoryIdentifierIcon,\n STS_ORGANISATION: HistoryOrganisationIcon,\n STS_IAM_ROLE: HistoryIdentifierIcon,\n STS_TOKEN: HistoryKeyIcon,\n SIGNATURE: HistoryCertificateIcon,\n STS_SESSION: HistoryIdentifierIcon,\n NOTIFICATION: HistoryCredentialIcon,\n SUPERVISORY_AUTHORITY: HistoryCertificateIcon,\n TRUST_LIST_PUBLICATION: HistoryTrustAnchorIcon,\n TRUST_COLLECTION: HistoryTrustAnchorIcon,\n TRUST_LIST_SUBSCRIPTION: HistoryTrustAnchorIcon,\n VERIFIER_INSTANCE: HistoryTrustedEntityIcon,\n },\n};\n\nexport const getHistoryItemActionIcon = (action: HistoryAction) => {\n return defaultIcons.actions[action] ?? HistoryStatusAcceptedIcon;\n};\n\nexport type HistoryListItemIconProps = {\n item: HistoryListItem;\n};\n\nexport const HistoryListItemIcon: FC<HistoryListItemIconProps> = ({ item }) => {\n const statusIcon = getHistoryItemActionIcon(item.action);\n const typeIcon = useMemo(() => {\n switch (item.entityType) {\n case HistoryEntityType.BACKUP:\n switch (item.action) {\n case HistoryAction.CREATED:\n return HistoryBackupCreatedIcon;\n case HistoryAction.RESTORED:\n return HistoryBackupRestoredIcon;\n default:\n break;\n }\n break;\n case HistoryEntityType.CREDENTIAL:\n switch (item.action) {\n case HistoryAction.REVOKED:\n return HistoryRevokeIcon;\n case HistoryAction.SUSPENDED:\n return HistorySuspendIcon;\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n return defaultIcons.entityTypes[item.entityType] ?? HistoryIssueIcon;\n }, [item.action, item.entityType]);\n return <HistoryItemIcon StatusIcon={statusIcon} TypeIcon={typeIcon} />;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,iBAAiB,QAAyB,iCAAiC;AACnG,OAAOC,KAAK,IAAQC,OAAO,QAAQ,OAAO;AAG1C,SACEC,wBAAwB,EACxBC,yBAAyB,EACzBC,sBAAsB,EACtBC,qBAAqB,EACrBC,cAAc,EACdC,qBAAqB,EACrBC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,EACdC,uBAAuB,EACvBC,uBAAuB,EACvBC,iBAAiB,EACjBC,iBAAiB,EACjBC,yBAAyB,EACzBC,uBAAuB,EACvBC,sBAAsB,EACtBC,wBAAwB,EACxBC,kBAAkB,EAClBC,sBAAsB,EACtBC,wBAAwB,QACnB,qBAAqB;AAE5B,MAAMC,YAGL,GAAG;EACFC,OAAO,EAAE;IACPC,QAAQ,EAAET,yBAAyB;IACnCU,SAAS,EAAEV,yBAAyB;IACpCW,cAAc,EAAEV,uBAAuB;IACvCW,OAAO,EAAEZ,yBAAyB;IAClCa,WAAW,EAAEX,sBAAsB;IACnCY,OAAO,EAAEb,uBAAuB;IAChCc,OAAO,EAAEb,sBAAsB;IAC/Bc,QAAQ,EAAEhB,yBAAyB;IACnCiB,MAAM,EAAEjB,yBAAyB;IACjCkB,
|
|
1
|
+
{"version":3,"names":["HistoryAction","HistoryEntityType","React","useMemo","HistoryBackupCreatedIcon","HistoryBackupRestoredIcon","HistoryCertificateIcon","HistoryCredentialIcon","HistoryDidIcon","HistoryIdentifierIcon","HistoryIssueIcon","HistoryItemIcon","HistoryKeyIcon","HistoryOrganisationIcon","HistoryProofRequestIcon","HistoryRevokeIcon","HistorySchemaIcon","HistoryStatusAcceptedIcon","HistoryStatusDeleteIcon","HistoryStatusErrorIcon","HistoryStatusSuspendIcon","HistorySuspendIcon","HistoryTrustAnchorIcon","HistoryTrustedEntityIcon","defaultIcons","actions","ACCEPTED","ACTIVATED","CLAIMS_REMOVED","CREATED","DEACTIVATED","DELETED","ERRORED","IMPORTED","SIGNED","ISSUED","OFFERED","PENDING","REJECTED","REFRESHED","REMOVED","REQUESTED","RESTORED","RETRACTED","REVOKED","SHARED","SUSPENDED","UPDATED","WITHDRAWN","REACTIVATED","CSR_GENERATED","EXPIRED","INTERACTION_CREATED","INTERACTION_ERRORED","INTERACTION_EXPIRED","DELIVERED","WRP_AC_RECEIVED","WRP_RC_RECEIVED","WRP_NR_RECEIVED","TRUST_RESOLVED","entityTypes","BACKUP","CERTIFICATE","CREDENTIAL","CREDENTIAL_SCHEMA","DID","IDENTIFIER","KEY","ORGANISATION","QES_DOCUMENT","PROOF","PROOF_SCHEMA","WALLET_UNIT","WALLET_RELYING_PARTY","USER","PROVIDER","STS_ROLE","STS_ORGANISATION","STS_IAM_ROLE","STS_TOKEN","SIGNATURE","STS_SESSION","NOTIFICATION","SUPERVISORY_AUTHORITY","TRUST_LIST_PUBLICATION","TRUST_COLLECTION","TRUST_LIST_SUBSCRIPTION","VERIFIER_INSTANCE","getHistoryItemActionIcon","action","_defaultIcons$actions","HistoryListItemIcon","item","statusIcon","typeIcon","_defaultIcons$entityT","entityType","createElement","StatusIcon","TypeIcon"],"sources":["history-list-item-icon.tsx"],"sourcesContent":["import { HistoryAction, HistoryEntityType, HistoryListItem } from '@procivis/react-native-one-core';\nimport React, { FC, useMemo } from 'react';\nimport { SvgProps } from 'react-native-svg';\n\nimport {\n HistoryBackupCreatedIcon,\n HistoryBackupRestoredIcon,\n HistoryCertificateIcon,\n HistoryCredentialIcon,\n HistoryDidIcon,\n HistoryIdentifierIcon,\n HistoryIssueIcon,\n HistoryItemIcon,\n HistoryKeyIcon,\n HistoryOrganisationIcon,\n HistoryProofRequestIcon,\n HistoryRevokeIcon,\n HistorySchemaIcon,\n HistoryStatusAcceptedIcon,\n HistoryStatusDeleteIcon,\n HistoryStatusErrorIcon,\n HistoryStatusSuspendIcon,\n HistorySuspendIcon,\n HistoryTrustAnchorIcon,\n HistoryTrustedEntityIcon,\n} from '../../ui-components';\n\nconst defaultIcons: {\n actions: { [key in keyof typeof HistoryAction]: FC<SvgProps> };\n entityTypes: { [key in keyof typeof HistoryEntityType]: FC<SvgProps> };\n} = {\n actions: {\n ACCEPTED: HistoryStatusAcceptedIcon,\n ACTIVATED: HistoryStatusAcceptedIcon,\n CLAIMS_REMOVED: HistoryStatusDeleteIcon,\n CREATED: HistoryStatusAcceptedIcon,\n DEACTIVATED: HistoryStatusErrorIcon,\n DELETED: HistoryStatusDeleteIcon,\n ERRORED: HistoryStatusErrorIcon,\n IMPORTED: HistoryStatusAcceptedIcon,\n SIGNED: HistoryStatusAcceptedIcon,\n ISSUED: HistoryStatusAcceptedIcon,\n OFFERED: HistoryStatusAcceptedIcon,\n PENDING: HistoryStatusAcceptedIcon,\n REJECTED: HistoryStatusErrorIcon,\n REFRESHED: HistoryStatusAcceptedIcon,\n REMOVED: HistoryStatusDeleteIcon,\n REQUESTED: HistoryStatusAcceptedIcon,\n RESTORED: HistoryStatusAcceptedIcon,\n RETRACTED: HistoryStatusErrorIcon,\n REVOKED: HistoryStatusErrorIcon,\n SHARED: HistoryStatusAcceptedIcon,\n SUSPENDED: HistoryStatusSuspendIcon,\n UPDATED: HistoryStatusAcceptedIcon,\n WITHDRAWN: HistoryStatusErrorIcon,\n REACTIVATED: HistoryStatusAcceptedIcon,\n CSR_GENERATED: HistoryStatusAcceptedIcon,\n EXPIRED: HistoryStatusErrorIcon,\n INTERACTION_CREATED: HistoryStatusAcceptedIcon,\n INTERACTION_ERRORED: HistoryStatusErrorIcon,\n INTERACTION_EXPIRED: HistoryStatusErrorIcon,\n DELIVERED: HistoryStatusAcceptedIcon,\n WRP_AC_RECEIVED: HistoryStatusAcceptedIcon,\n WRP_RC_RECEIVED: HistoryStatusAcceptedIcon,\n WRP_NR_RECEIVED: HistoryStatusAcceptedIcon,\n TRUST_RESOLVED: HistoryStatusAcceptedIcon,\n },\n entityTypes: {\n BACKUP: HistoryRevokeIcon,\n CERTIFICATE: HistoryCertificateIcon,\n CREDENTIAL: HistoryCredentialIcon,\n CREDENTIAL_SCHEMA: HistorySchemaIcon,\n DID: HistoryDidIcon,\n IDENTIFIER: HistoryIdentifierIcon,\n KEY: HistoryKeyIcon,\n ORGANISATION: HistoryOrganisationIcon,\n QES_DOCUMENT: HistoryCredentialIcon,\n PROOF: HistoryProofRequestIcon,\n PROOF_SCHEMA: HistorySchemaIcon,\n WALLET_UNIT: HistoryTrustedEntityIcon,\n WALLET_RELYING_PARTY: HistoryTrustedEntityIcon,\n USER: HistoryIdentifierIcon,\n PROVIDER: HistoryIdentifierIcon,\n STS_ROLE: HistoryIdentifierIcon,\n STS_ORGANISATION: HistoryOrganisationIcon,\n STS_IAM_ROLE: HistoryIdentifierIcon,\n STS_TOKEN: HistoryKeyIcon,\n SIGNATURE: HistoryCertificateIcon,\n STS_SESSION: HistoryIdentifierIcon,\n NOTIFICATION: HistoryCredentialIcon,\n SUPERVISORY_AUTHORITY: HistoryCertificateIcon,\n TRUST_LIST_PUBLICATION: HistoryTrustAnchorIcon,\n TRUST_COLLECTION: HistoryTrustAnchorIcon,\n TRUST_LIST_SUBSCRIPTION: HistoryTrustAnchorIcon,\n VERIFIER_INSTANCE: HistoryTrustedEntityIcon,\n },\n};\n\nexport const getHistoryItemActionIcon = (action: HistoryAction) => {\n return defaultIcons.actions[action] ?? HistoryStatusAcceptedIcon;\n};\n\nexport type HistoryListItemIconProps = {\n item: HistoryListItem;\n};\n\nexport const HistoryListItemIcon: FC<HistoryListItemIconProps> = ({ item }) => {\n const statusIcon = getHistoryItemActionIcon(item.action);\n const typeIcon = useMemo(() => {\n switch (item.entityType) {\n case HistoryEntityType.BACKUP:\n switch (item.action) {\n case HistoryAction.CREATED:\n return HistoryBackupCreatedIcon;\n case HistoryAction.RESTORED:\n return HistoryBackupRestoredIcon;\n default:\n break;\n }\n break;\n case HistoryEntityType.CREDENTIAL:\n switch (item.action) {\n case HistoryAction.REVOKED:\n return HistoryRevokeIcon;\n case HistoryAction.SUSPENDED:\n return HistorySuspendIcon;\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n return defaultIcons.entityTypes[item.entityType] ?? HistoryIssueIcon;\n }, [item.action, item.entityType]);\n return <HistoryItemIcon StatusIcon={statusIcon} TypeIcon={typeIcon} />;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import { StyleSheet, View } from 'react-native';
|
|
2
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
4
3
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
4
|
import { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';
|
|
6
5
|
import { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';
|
|
7
6
|
import BlurView from '../blur/blur-view';
|
|
8
|
-
import { ScanIcon } from '../icons';
|
|
7
|
+
import { IssueIcon, ScanIcon, SignIcon } from '../icons';
|
|
9
8
|
import { useAppColorScheme } from '../theme';
|
|
10
9
|
const hitSlop = {
|
|
11
10
|
top: 10,
|
|
@@ -13,65 +12,161 @@ const hitSlop = {
|
|
|
13
12
|
bottom: 10,
|
|
14
13
|
right: 10
|
|
15
14
|
};
|
|
15
|
+
const SCAN_WIDTH = 104;
|
|
16
|
+
const SCAN_HEIGHT = 80;
|
|
17
|
+
const SIDE_WIDTH = 94;
|
|
18
|
+
const SIDE_HEIGHT = 64;
|
|
19
|
+
const OVERLAP = 50;
|
|
16
20
|
const ScanButton = /*#__PURE__*/React.forwardRef(({
|
|
17
21
|
style,
|
|
18
|
-
|
|
22
|
+
onSignPress,
|
|
23
|
+
onIssuePress,
|
|
24
|
+
onScanPress,
|
|
25
|
+
testID
|
|
19
26
|
}, ref) => {
|
|
20
27
|
const t = useAccessibilityTranslation();
|
|
21
28
|
const colorScheme = useAppColorScheme();
|
|
22
29
|
const insets = useSafeAreaInsets();
|
|
23
|
-
|
|
30
|
+
const showLeftButton = onSignPress !== undefined;
|
|
31
|
+
const showRightButton = onIssuePress !== undefined;
|
|
32
|
+
const leftButtonOpacity = showLeftButton ? 1 : 0;
|
|
33
|
+
const rightButtonOpacity = showRightButton ? 1 : 0;
|
|
34
|
+
const bottomOffset = Math.max(24, insets.bottom);
|
|
35
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
36
|
+
style: [styles.wrapper, {
|
|
37
|
+
bottom: bottomOffset
|
|
38
|
+
}, style]
|
|
39
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
40
|
+
pointerEvents: showLeftButton ? 'auto' : 'none',
|
|
41
|
+
style: [styles.sideButtonContainer, {
|
|
42
|
+
opacity: leftButtonOpacity
|
|
43
|
+
}]
|
|
44
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
45
|
+
accessibilityRole: "button",
|
|
46
|
+
hitSlop: hitSlop,
|
|
47
|
+
testID: `${testID}.sign`,
|
|
48
|
+
onPress: onSignPress,
|
|
49
|
+
style: styles.sideButton
|
|
50
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
51
|
+
style: [styles.sideInnerLeft, {
|
|
52
|
+
backgroundColor: colorScheme.white
|
|
53
|
+
}]
|
|
54
|
+
}, /*#__PURE__*/React.createElement(SignIcon, {
|
|
55
|
+
color: colorScheme.black
|
|
56
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
57
|
+
style: [styles.sideLabel, {
|
|
58
|
+
color: colorScheme.black
|
|
59
|
+
}]
|
|
60
|
+
}, "Sign")))), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
24
61
|
accessibilityLabel: t('accessibility.icon.scan'),
|
|
25
62
|
accessibilityRole: "button",
|
|
26
63
|
hitSlop: hitSlop,
|
|
27
64
|
ref: ref,
|
|
28
|
-
style:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
65
|
+
style: styles.scanButton,
|
|
66
|
+
testID: `${testID}.scan`,
|
|
67
|
+
onPress: onScanPress
|
|
68
|
+
}, /*#__PURE__*/React.createElement(BlurView, {
|
|
32
69
|
blurStyle: "soft",
|
|
33
|
-
style: styles.
|
|
70
|
+
style: styles.scanBlurWrapper
|
|
34
71
|
}, /*#__PURE__*/React.createElement(View, {
|
|
35
|
-
style: [styles.
|
|
72
|
+
style: [styles.scanInner, {
|
|
36
73
|
backgroundColor: colorScheme.accent
|
|
37
74
|
}]
|
|
38
75
|
}, /*#__PURE__*/React.createElement(ScanIcon, {
|
|
39
76
|
color: colorScheme.white
|
|
40
|
-
}))))
|
|
77
|
+
})))), /*#__PURE__*/React.createElement(View, {
|
|
78
|
+
pointerEvents: showRightButton ? 'auto' : 'none',
|
|
79
|
+
style: [styles.sideButtonContainer, {
|
|
80
|
+
opacity: rightButtonOpacity
|
|
81
|
+
}]
|
|
82
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
83
|
+
accessibilityRole: "button",
|
|
84
|
+
testID: `${testID}.issue`,
|
|
85
|
+
hitSlop: hitSlop,
|
|
86
|
+
onPress: onIssuePress,
|
|
87
|
+
style: styles.sideButton
|
|
88
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
89
|
+
style: [styles.sideInnerRight, {
|
|
90
|
+
backgroundColor: colorScheme.white
|
|
91
|
+
}]
|
|
92
|
+
}, /*#__PURE__*/React.createElement(IssueIcon, {
|
|
93
|
+
color: colorScheme.black
|
|
94
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
95
|
+
style: [styles.sideLabel, {
|
|
96
|
+
color: colorScheme.black
|
|
97
|
+
}]
|
|
98
|
+
}, "Issue")))));
|
|
41
99
|
});
|
|
42
100
|
ScanButton.displayName = 'ScanButton';
|
|
43
101
|
export default ScanButton;
|
|
44
102
|
const styles = StyleSheet.create({
|
|
45
|
-
|
|
103
|
+
scanBlurWrapper: {
|
|
46
104
|
borderRadius: 28,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
padding: 8,
|
|
50
|
-
width: 104
|
|
105
|
+
flex: 1,
|
|
106
|
+
padding: 8
|
|
51
107
|
},
|
|
52
|
-
|
|
108
|
+
scanButton: {
|
|
53
109
|
borderRadius: 28,
|
|
54
|
-
|
|
55
|
-
height: 80,
|
|
56
|
-
left: '50%',
|
|
57
|
-
marginLeft: -52,
|
|
58
|
-
position: 'absolute',
|
|
110
|
+
height: SCAN_HEIGHT,
|
|
59
111
|
shadowColor: '#000000',
|
|
60
112
|
shadowOffset: {
|
|
61
113
|
height: 4,
|
|
62
114
|
width: 0
|
|
63
115
|
},
|
|
64
|
-
shadowOpacity: 0.
|
|
116
|
+
shadowOpacity: 0.25,
|
|
65
117
|
shadowRadius: 24,
|
|
66
|
-
width:
|
|
118
|
+
width: SCAN_WIDTH,
|
|
119
|
+
zIndex: 1
|
|
67
120
|
},
|
|
68
|
-
|
|
121
|
+
scanInner: {
|
|
69
122
|
alignItems: 'center',
|
|
70
123
|
borderRadius: 20,
|
|
71
|
-
|
|
72
|
-
|
|
124
|
+
flex: 1,
|
|
125
|
+
justifyContent: 'center'
|
|
126
|
+
},
|
|
127
|
+
sideButton: {
|
|
128
|
+
borderRadius: 24,
|
|
129
|
+
flex: 1
|
|
130
|
+
},
|
|
131
|
+
sideButtonContainer: {
|
|
132
|
+
height: SIDE_HEIGHT,
|
|
133
|
+
marginHorizontal: -OVERLAP / 2,
|
|
134
|
+
width: SIDE_WIDTH,
|
|
135
|
+
zIndex: 0
|
|
136
|
+
},
|
|
137
|
+
sideInnerLeft: {
|
|
138
|
+
alignItems: 'center',
|
|
139
|
+
borderBottomLeftRadius: 22,
|
|
140
|
+
borderBottomRightRadius: 0,
|
|
141
|
+
borderTopLeftRadius: 22,
|
|
142
|
+
borderTopRightRadius: 0,
|
|
143
|
+
flex: 1,
|
|
144
|
+
justifyContent: 'center',
|
|
145
|
+
paddingRight: 10
|
|
146
|
+
},
|
|
147
|
+
sideInnerRight: {
|
|
148
|
+
alignItems: 'center',
|
|
149
|
+
borderBottomLeftRadius: 0,
|
|
150
|
+
borderBottomRightRadius: 22,
|
|
151
|
+
borderTopLeftRadius: 0,
|
|
152
|
+
borderTopRightRadius: 22,
|
|
153
|
+
flex: 1,
|
|
73
154
|
justifyContent: 'center',
|
|
74
|
-
|
|
155
|
+
paddingLeft: 10
|
|
156
|
+
},
|
|
157
|
+
sideLabel: {
|
|
158
|
+
fontSize: 14,
|
|
159
|
+
fontWeight: '500',
|
|
160
|
+
marginTop: 6
|
|
161
|
+
},
|
|
162
|
+
wrapper: {
|
|
163
|
+
alignItems: 'center',
|
|
164
|
+
flexDirection: 'row',
|
|
165
|
+
height: SCAN_HEIGHT,
|
|
166
|
+
justifyContent: 'center',
|
|
167
|
+
left: 0,
|
|
168
|
+
position: 'absolute',
|
|
169
|
+
right: 0
|
|
75
170
|
}
|
|
76
171
|
});
|
|
77
172
|
//# sourceMappingURL=scan-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","ScanIcon","useAppColorScheme","hitSlop","top","left","bottom","right","ScanButton","forwardRef","style","props","ref","t","colorScheme","insets","createElement","_extends","accessibilityLabel","accessibilityRole","styles","button","Math","max","blurStyle","blurWrapper","iconWrapper","backgroundColor","accent","color","white","displayName","create","borderRadius","borderWidth","height","padding","width","marginLeft","position","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","justifyContent"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { ScanIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = TouchableOpacityProps;\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(({ style, ...props }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n\n return (\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={[styles.button, { bottom: Math.max(24, insets.bottom) }, style]}\n {...props}>\n <BlurView blurStyle=\"soft\" style={styles.blurWrapper}>\n <View style={[styles.iconWrapper, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n );\n});\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n blurWrapper: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n padding: 8,\n width: 104,\n },\n button: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n left: '50%',\n marginLeft: -52,\n position: 'absolute',\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n width: 104,\n },\n iconWrapper: {\n alignItems: 'center',\n borderRadius: 20,\n borderWidth: 0,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAiBC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,gBAAgB,QAA6B,+CAA+C;AACrG,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAI5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,UAAU,gBAAGd,KAAK,CAACe,UAAU,CAAuC,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACtG,MAAMC,CAAC,GAAGd,2BAA2B,CAAC,CAAC;EACvC,MAAMe,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,MAAM,GAAGlB,iBAAiB,CAAC,CAAC;EAElC,oBACEH,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAmB,QAAA;IACfC,kBAAkB,EAAEL,CAAC,CAAC,yBAAyB,CAAE;IACjDM,iBAAiB,EAAC,QAAQ;IAC1BhB,OAAO,EAAEA,OAAQ;IACjBS,GAAG,EAAEA,GAAI;IACTF,KAAK,EAAE,CAACU,MAAM,CAACC,MAAM,EAAE;MAAEf,MAAM,EAAEgB,IAAI,CAACC,GAAG,CAAC,EAAE,EAAER,MAAM,CAACT,MAAM;IAAE,CAAC,EAAEI,KAAK;EAAE,GACnEC,KAAK,gBACTjB,KAAA,CAAAsB,aAAA,CAAChB,QAAQ;IAACwB,SAAS,EAAC,MAAM;IAACd,KAAK,EAAEU,MAAM,CAACK;EAAY,gBACnD/B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACc,KAAK,EAAE,CAACU,MAAM,CAACM,WAAW,EAAE;MAAEC,eAAe,EAAEb,WAAW,CAACc;IAAO,CAAC;EAAE,gBACzElC,KAAA,CAAAsB,aAAA,CAACf,QAAQ;IAAC4B,KAAK,EAAEf,WAAW,CAACgB;EAAM,CAAE,CACjC,CACE,CACM,CAAC;AAEvB,CAAC,CAAC;AAEFtB,UAAU,CAACuB,WAAW,GAAG,YAAY;AACrC,eAAevB,UAAU;AAEzB,MAAMY,MAAM,GAAGzB,UAAU,CAACqC,MAAM,CAAC;EAC/BP,WAAW,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT,CAAC;EACDhB,MAAM,EAAE;IACNY,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACV9B,IAAI,EAAE,KAAK;IACXiC,UAAU,EAAE,CAAC,EAAE;IACfC,QAAQ,EAAE,UAAU;IACpBC,WAAW,EAAE,SAAS;IACtBC,YAAY,EAAE;MAAEN,MAAM,EAAE,CAAC;MAAEE,KAAK,EAAE;IAAE,CAAC;IACrCK,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,EAAE;IAChBN,KAAK,EAAE;EACT,CAAC;EACDX,WAAW,EAAE;IACXkB,UAAU,EAAE,QAAQ;IACpBX,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,MAAM;IACdU,cAAc,EAAE,QAAQ;IACxBR,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","Text","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","IssueIcon","ScanIcon","SignIcon","useAppColorScheme","hitSlop","top","left","bottom","right","SCAN_WIDTH","SCAN_HEIGHT","SIDE_WIDTH","SIDE_HEIGHT","OVERLAP","ScanButton","forwardRef","style","onSignPress","onIssuePress","onScanPress","testID","ref","t","colorScheme","insets","showLeftButton","undefined","showRightButton","leftButtonOpacity","rightButtonOpacity","bottomOffset","Math","max","createElement","styles","wrapper","pointerEvents","sideButtonContainer","opacity","accessibilityRole","onPress","sideButton","sideInnerLeft","backgroundColor","white","color","black","sideLabel","accessibilityLabel","scanButton","blurStyle","scanBlurWrapper","scanInner","accent","sideInnerRight","displayName","create","borderRadius","flex","padding","height","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","zIndex","alignItems","justifyContent","marginHorizontal","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","paddingRight","paddingLeft","fontSize","fontWeight","marginTop","flexDirection","position"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { IssueIcon, ScanIcon, SignIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = {\n onSignPress?: () => void;\n onIssuePress?: () => void;\n onScanPress: () => void;\n testID?: string;\n style?: StyleProp<ViewStyle>;\n};\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst SCAN_WIDTH = 104;\nconst SCAN_HEIGHT = 80;\nconst SIDE_WIDTH = 94;\nconst SIDE_HEIGHT = 64;\nconst OVERLAP = 50;\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(\n ({ style, onSignPress, onIssuePress, onScanPress, testID }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n const showLeftButton = onSignPress !== undefined;\n const showRightButton = onIssuePress !== undefined;\n const leftButtonOpacity = showLeftButton ? 1 : 0;\n const rightButtonOpacity = showRightButton ? 1 : 0;\n\n const bottomOffset = Math.max(24, insets.bottom);\n\n return (\n <View style={[styles.wrapper, { bottom: bottomOffset }, style as object]}>\n <View\n pointerEvents={showLeftButton ? 'auto' : 'none'}\n style={[styles.sideButtonContainer, { opacity: leftButtonOpacity }]}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n testID={`${testID}.sign`}\n onPress={onSignPress}\n style={styles.sideButton}>\n <View style={[styles.sideInnerLeft, { backgroundColor: colorScheme.white }]}>\n <SignIcon color={colorScheme.black} />\n <Text style={[styles.sideLabel, { color: colorScheme.black }]}>Sign</Text>\n </View>\n </TouchableOpacity>\n </View>\n\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={styles.scanButton}\n testID={`${testID}.scan`}\n onPress={onScanPress}>\n <BlurView blurStyle=\"soft\" style={styles.scanBlurWrapper}>\n <View style={[styles.scanInner, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n\n <View\n pointerEvents={showRightButton ? 'auto' : 'none'}\n style={[styles.sideButtonContainer, { opacity: rightButtonOpacity }]}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n testID={`${testID}.issue`}\n hitSlop={hitSlop}\n onPress={onIssuePress}\n style={styles.sideButton}>\n <View style={[styles.sideInnerRight, { backgroundColor: colorScheme.white }]}>\n <IssueIcon color={colorScheme.black} />\n <Text style={[styles.sideLabel, { color: colorScheme.black }]}>Issue</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n );\n },\n);\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n scanBlurWrapper: {\n borderRadius: 28,\n flex: 1,\n padding: 8,\n },\n scanButton: {\n borderRadius: 28,\n height: SCAN_HEIGHT,\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.25,\n shadowRadius: 24,\n width: SCAN_WIDTH,\n zIndex: 1,\n },\n scanInner: {\n alignItems: 'center',\n borderRadius: 20,\n flex: 1,\n justifyContent: 'center',\n },\n sideButton: {\n borderRadius: 24,\n flex: 1,\n },\n sideButtonContainer: {\n height: SIDE_HEIGHT,\n marginHorizontal: -OVERLAP / 2,\n width: SIDE_WIDTH,\n zIndex: 0,\n },\n sideInnerLeft: {\n alignItems: 'center',\n borderBottomLeftRadius: 22,\n borderBottomRightRadius: 0,\n borderTopLeftRadius: 22,\n borderTopRightRadius: 0,\n flex: 1,\n justifyContent: 'center',\n paddingRight: 10,\n },\n sideInnerRight: {\n alignItems: 'center',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 22,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 22,\n flex: 1,\n justifyContent: 'center',\n paddingLeft: 10,\n },\n sideLabel: {\n fontSize: 14,\n fontWeight: '500',\n marginTop: 6,\n },\n wrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n height: SCAN_HEIGHT,\n justifyContent: 'center',\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,7 +19,10 @@ const CredentialDetailsCard = ({
|
|
|
19
19
|
onImagePreview,
|
|
20
20
|
onAttributeSelected,
|
|
21
21
|
style,
|
|
22
|
-
showAllButtonLabel,
|
|
22
|
+
showAllButtonLabel = 'Show all',
|
|
23
|
+
showLessButtonLabel = 'Show less',
|
|
24
|
+
moreLabel = 'More',
|
|
25
|
+
lessLabel = 'Less',
|
|
23
26
|
testID,
|
|
24
27
|
...viewProps
|
|
25
28
|
}) => {
|
|
@@ -34,6 +37,8 @@ const CredentialDetailsCard = ({
|
|
|
34
37
|
const [animatedHeightSet, setAnimatedHeightSet] = useState(false);
|
|
35
38
|
const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];
|
|
36
39
|
const extraAttributes = useMemo(() => attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : [], [attributes]);
|
|
40
|
+
const showSeeAllButton = extraAttributes.length > 0;
|
|
41
|
+
const isExpanded = allAttributesRendered;
|
|
37
42
|
useEffect(() => {
|
|
38
43
|
if (extraAttributes.length === 0) {
|
|
39
44
|
const viewStyle = StyleSheet.flatten([styles.allAttributesWrapper, footer && styles.allAttributesWrapperWithFooter]);
|
|
@@ -48,9 +53,9 @@ const CredentialDetailsCard = ({
|
|
|
48
53
|
if (allAttributesRendered && fullAttributesHeight === undefined) {
|
|
49
54
|
return;
|
|
50
55
|
}
|
|
51
|
-
const buttonViewHeight =
|
|
56
|
+
const buttonViewHeight = showSeeAllButton ? SEE_ALL_BUTTON_HEIGHT : 0;
|
|
52
57
|
const additionalAttributesHeight = fullAttributesHeight !== null && fullAttributesHeight !== void 0 ? fullAttributesHeight : 0;
|
|
53
|
-
const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;
|
|
58
|
+
const additionalHeight = allAttributesRendered ? additionalAttributesHeight + buttonViewHeight : buttonViewHeight;
|
|
54
59
|
const fullHeight = previewAttributesHeight + additionalHeight;
|
|
55
60
|
setAnimatedHeightSet(true);
|
|
56
61
|
if (!animate) {
|
|
@@ -66,7 +71,7 @@ const CredentialDetailsCard = ({
|
|
|
66
71
|
currentHeight.value = withTiming(newHeight, {
|
|
67
72
|
duration
|
|
68
73
|
});
|
|
69
|
-
}, [allAttributesRendered, currentHeight, animate, expanded, extraAttributes, fullAttributesHeight, previewAttributes.length, previewAttributesHeight]);
|
|
74
|
+
}, [allAttributesRendered, currentHeight, animate, expanded, extraAttributes, fullAttributesHeight, previewAttributes.length, previewAttributesHeight, showSeeAllButton]);
|
|
70
75
|
const animatedStyle = useAnimatedStyle(() => {
|
|
71
76
|
if (currentHeight.value === undefined) {
|
|
72
77
|
if (expanded) {
|
|
@@ -121,30 +126,36 @@ const CredentialDetailsCard = ({
|
|
|
121
126
|
onLayout: onPreviewAttrContentLayout,
|
|
122
127
|
style: styles.previewAttributesWrapper
|
|
123
128
|
}, previewAttributes.map((attribute, idx) => /*#__PURE__*/React.createElement(CredentialAttributeItem, _extends({
|
|
129
|
+
moreLabel: moreLabel,
|
|
130
|
+
lessLabel: lessLabel,
|
|
124
131
|
key: attribute.id,
|
|
125
|
-
last: !footerView && !
|
|
132
|
+
last: !footerView && !showSeeAllButton && idx === previewAttributes.length - 1,
|
|
126
133
|
testID: concatTestID(testID, 'attribute', idx.toString()),
|
|
127
134
|
onImagePreview: onImagePreview,
|
|
128
|
-
onPress: onAttributeSelected
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
onPress: () => setAllAttributesRendered(true),
|
|
133
|
-
type: ButtonType.Secondary,
|
|
134
|
-
testID: concatTestID(testID, 'showAllAttributesButton'),
|
|
135
|
-
title: showAllButtonLabel
|
|
136
|
-
})), renderExtraAttributes && /*#__PURE__*/React.createElement(View, {
|
|
137
|
-
style: [styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter],
|
|
135
|
+
onPress: onAttributeSelected,
|
|
136
|
+
isExpanded: isExpanded
|
|
137
|
+
}, attribute)))), renderExtraAttributes && /*#__PURE__*/React.createElement(View, {
|
|
138
|
+
style: [styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter, showSeeAllButton && styles.allAttributesWrapperWithButton, !allAttributesRendered && styles.hidden],
|
|
138
139
|
onLayout: onFullAttrContentLayout
|
|
139
140
|
}, extraAttributes.map((attribute, index, {
|
|
140
141
|
length
|
|
141
142
|
}) => /*#__PURE__*/React.createElement(CredentialAttributeItem, _extends({
|
|
143
|
+
moreLabel: moreLabel,
|
|
144
|
+
lessLabel: lessLabel,
|
|
142
145
|
key: attribute.id,
|
|
143
|
-
last: !footerView && index === length - 1,
|
|
146
|
+
last: !footerView && !showSeeAllButton && index === length - 1,
|
|
144
147
|
testID: concatTestID(testID, 'attribute', index.toString()),
|
|
145
148
|
onImagePreview: onImagePreview,
|
|
146
|
-
onPress: onAttributeSelected
|
|
147
|
-
|
|
149
|
+
onPress: onAttributeSelected,
|
|
150
|
+
isExpanded: isExpanded
|
|
151
|
+
}, attribute)))), showSeeAllButton && /*#__PURE__*/React.createElement(View, {
|
|
152
|
+
style: styles.buttonWrapper
|
|
153
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
154
|
+
onPress: () => setAllAttributesRendered(prev => !prev),
|
|
155
|
+
type: ButtonType.Secondary,
|
|
156
|
+
testID: concatTestID(testID, 'showAllAttributesButton'),
|
|
157
|
+
title: isExpanded ? showLessButtonLabel : showAllButtonLabel
|
|
158
|
+
})))), footerView ? /*#__PURE__*/React.createElement(View, {
|
|
148
159
|
style: styles.footer
|
|
149
160
|
}, footerView) : null);
|
|
150
161
|
};
|
|
@@ -154,6 +165,9 @@ const styles = StyleSheet.create({
|
|
|
154
165
|
paddingHorizontal: 4,
|
|
155
166
|
width: '100%'
|
|
156
167
|
},
|
|
168
|
+
allAttributesWrapperWithButton: {
|
|
169
|
+
paddingBottom: 0
|
|
170
|
+
},
|
|
157
171
|
allAttributesWrapperWithFooter: {
|
|
158
172
|
paddingBottom: 0
|
|
159
173
|
},
|
|
@@ -163,8 +177,10 @@ const styles = StyleSheet.create({
|
|
|
163
177
|
},
|
|
164
178
|
buttonWrapper: {
|
|
165
179
|
height: SEE_ALL_BUTTON_HEIGHT,
|
|
180
|
+
justifyContent: 'flex-end',
|
|
166
181
|
paddingBottom: 12,
|
|
167
182
|
paddingHorizontal: 4,
|
|
183
|
+
paddingTop: 0,
|
|
168
184
|
width: '100%'
|
|
169
185
|
},
|
|
170
186
|
card: {
|
|
@@ -179,6 +195,9 @@ const styles = StyleSheet.create({
|
|
|
179
195
|
footer: {
|
|
180
196
|
marginTop: 12
|
|
181
197
|
},
|
|
198
|
+
hidden: {
|
|
199
|
+
display: 'none'
|
|
200
|
+
},
|
|
182
201
|
previewAttributesWrapper: {
|
|
183
202
|
paddingHorizontal: 4,
|
|
184
203
|
width: '100%'
|