@procivis/one-react-native-components 0.3.53 → 0.3.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/lib/commonjs/components/credential/credential.js +6 -3
  2. package/lib/commonjs/components/credential/credential.js.map +1 -1
  3. package/lib/commonjs/components/history/history-list-item-icon.js +3 -1
  4. package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
  5. package/lib/commonjs/components/history/history-list-screen.js +2 -2
  6. package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
  7. package/lib/commonjs/components/proof-request/select-credential.js +7 -3
  8. package/lib/commonjs/components/proof-request/select-credential.js.map +1 -1
  9. package/lib/commonjs/components/proof-request/share-credential.js +6 -9
  10. package/lib/commonjs/components/proof-request/share-credential.js.map +1 -1
  11. package/lib/commonjs/ui-components/credential/card/credential-card.js +14 -29
  12. package/lib/commonjs/ui-components/credential/card/credential-card.js.map +1 -1
  13. package/lib/commonjs/ui-components/credential/card/credential-details-card.js +27 -28
  14. package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
  15. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +10 -6
  16. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  17. package/lib/commonjs/ui-components/header/header.js +7 -5
  18. package/lib/commonjs/ui-components/header/header.js.map +1 -1
  19. package/lib/commonjs/ui-components/history/history-details.js +3 -1
  20. package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
  21. package/lib/commonjs/ui-components/icons/icons.js +100 -1
  22. package/lib/commonjs/ui-components/icons/icons.js.map +1 -1
  23. package/lib/commonjs/ui-components/searchbar/animated-search-bar.js +10 -8
  24. package/lib/commonjs/ui-components/searchbar/animated-search-bar.js.map +1 -1
  25. package/lib/commonjs/utils/hooks/core/backup.js +4 -3
  26. package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
  27. package/lib/commonjs/utils/hooks/core/core-init.js +23 -4
  28. package/lib/commonjs/utils/hooks/core/core-init.js.map +1 -1
  29. package/lib/commonjs/utils/hooks/core/credentials.js +4 -4
  30. package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
  31. package/lib/commonjs/utils/hooks/core/proofs.js +3 -1
  32. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  33. package/lib/commonjs/utils/parsers/credential-sharing.js +18 -1
  34. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  35. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  36. package/lib/module/components/credential/credential.js +5 -3
  37. package/lib/module/components/credential/credential.js.map +1 -1
  38. package/lib/module/components/history/history-list-item-icon.js +3 -1
  39. package/lib/module/components/history/history-list-item-icon.js.map +1 -1
  40. package/lib/module/components/history/history-list-screen.js +2 -2
  41. package/lib/module/components/history/history-list-screen.js.map +1 -1
  42. package/lib/module/components/proof-request/select-credential.js +5 -2
  43. package/lib/module/components/proof-request/select-credential.js.map +1 -1
  44. package/lib/module/components/proof-request/share-credential.js +7 -10
  45. package/lib/module/components/proof-request/share-credential.js.map +1 -1
  46. package/lib/module/ui-components/credential/card/credential-card.js +15 -30
  47. package/lib/module/ui-components/credential/card/credential-card.js.map +1 -1
  48. package/lib/module/ui-components/credential/card/credential-details-card.js +27 -28
  49. package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
  50. package/lib/module/ui-components/credential/card/credential-details-list-item.js +10 -6
  51. package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  52. package/lib/module/ui-components/header/header.js +7 -5
  53. package/lib/module/ui-components/header/header.js.map +1 -1
  54. package/lib/module/ui-components/history/history-details.js +4 -2
  55. package/lib/module/ui-components/history/history-details.js.map +1 -1
  56. package/lib/module/ui-components/icons/icons.js +95 -0
  57. package/lib/module/ui-components/icons/icons.js.map +1 -1
  58. package/lib/module/ui-components/searchbar/animated-search-bar.js +10 -8
  59. package/lib/module/ui-components/searchbar/animated-search-bar.js.map +1 -1
  60. package/lib/module/utils/hooks/core/backup.js +5 -4
  61. package/lib/module/utils/hooks/core/backup.js.map +1 -1
  62. package/lib/module/utils/hooks/core/core-init.js +21 -3
  63. package/lib/module/utils/hooks/core/core-init.js.map +1 -1
  64. package/lib/module/utils/hooks/core/credentials.js +4 -4
  65. package/lib/module/utils/hooks/core/credentials.js.map +1 -1
  66. package/lib/module/utils/hooks/core/proofs.js +3 -1
  67. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  68. package/lib/module/utils/parsers/credential-sharing.js +18 -1
  69. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  70. package/lib/module/utils/parsers/credential.js.map +1 -1
  71. package/lib/typescript/components/proof-request/share-credential.d.ts +4 -5
  72. package/lib/typescript/ui-components/credential/card/credential-card.d.ts +1 -0
  73. package/lib/typescript/ui-components/header/header.d.ts +1 -1
  74. package/lib/typescript/ui-components/icons/icons.d.ts +4 -0
  75. package/lib/typescript/ui-components/searchbar/animated-search-bar.d.ts +2 -2
  76. package/lib/typescript/utils/hooks/core/backup.d.ts +1 -1
  77. package/lib/typescript/utils/hooks/core/core-init.d.ts +4 -1
  78. package/lib/typescript/utils/hooks/core/credentials.d.ts +2 -6
  79. package/lib/typescript/utils/parsers/credential-sharing.d.ts +6 -6
  80. package/lib/typescript/utils/parsers/credential.d.ts +6 -3
  81. package/package.json +3 -3
  82. package/src/components/credential/credential.tsx +4 -2
  83. package/src/components/history/history-list-item-icon.tsx +2 -0
  84. package/src/components/history/history-list-screen.tsx +9 -7
  85. package/src/components/proof-request/select-credential.tsx +4 -2
  86. package/src/components/proof-request/share-credential.tsx +10 -10
  87. package/src/ui-components/credential/card/credential-card.stories.tsx +14 -2
  88. package/src/ui-components/credential/card/credential-card.tsx +16 -23
  89. package/src/ui-components/credential/card/credential-details-card.stories.tsx +14 -4
  90. package/src/ui-components/credential/card/credential-details-card.tsx +32 -34
  91. package/src/ui-components/credential/card/credential-details-list-item.tsx +10 -6
  92. package/src/ui-components/detail/detail.stories.tsx +3 -3
  93. package/src/ui-components/header/header.stories.tsx +8 -6
  94. package/src/ui-components/header/header.tsx +7 -5
  95. package/src/ui-components/history/history-details.tsx +3 -1
  96. package/src/ui-components/icons/icons.tsx +85 -0
  97. package/src/ui-components/searchbar/animated-search-bar.tsx +11 -9
  98. package/src/utils/hooks/core/backup.ts +8 -2
  99. package/src/utils/hooks/core/core-init.ts +28 -2
  100. package/src/utils/hooks/core/credentials.ts +3 -3
  101. package/src/utils/hooks/core/proofs.ts +3 -1
  102. package/src/utils/parsers/credential-sharing.tsx +34 -11
  103. package/src/utils/parsers/credential.ts +8 -4
@@ -1 +1 @@
1
- {"version":3,"names":["OneError","ProofStateEnum","useCallback","useEffect","useMemo","useRef","useState","useMutation","useQuery","useQueryClient","getQueryKeyFromProofListQueryParams","useCoreConfig","useONECore","OneErrorCode","HISTORY_LIST_QUERY_KEY","useIdentifiers","useProofSchemaDetail","PAGE_SIZE","PROOF_DETAIL_QUERY_KEY","PROOF_STATE_QUERY_KEY","PROOF_LIST_QUERY_KEY","useProofDetail","proofId","core","getProof","undefined","enabled","Boolean","keepPreviousData","useProofState","isPolling","then","proof","state","refetchInterval","useProofUrl","queryClient","request","shareProof","url","onSuccess","invalidateQueries","useProofAccept","interactionId","credentials","didId","identifierId","keyId","holderSubmitProof","onError","useProofReject","holderRejectProof","catch","e","code","OperationNotSupported","IssuanceProtocol","VerificationProtocol","useProposeProof","organisationId","exchange","proposeProof","useProofDelete","deleteProof","useProofs","queryParams","queryKey","pageParam","getProofs","page","pageSize","useProofCreate","data","createProof","getIdentifierFilterForProofSchema","proofSchema","config","requestedFormats","proofInputSchemas","map","schema","credentialSchema","format","requestedFormatsCapabilities","_config$format$format","capabilities","filter","x","keyAlgorithms","reduce","others","_others$filter","current","verificationKeyAlgorithms","item","includes","keyStorages","_others$filter2","verificationKeyStorages","useProofForSchemaIdWithTransport","proofSchemaId","transport","identifierFilter","identifiers","mutateAsync","deleting","setDeleting","setProofIdState","proofIdRef","proofState","setProofId","id","CREATED","PENDING","values","length","protocol","OPENID4VP_PROXIMITY_DRAFT00","verifierIdentifierId","useCleanupUnusedProofs","proofs","proofStates","cleaned","setCleaned","forEach","useShareProof","proofUrlProps","sharedProof","setSharedProof","bleAdapterDisabled","error","_error$cause","cause","useRetainProofCheck","runTask","removeQueries","useDeleteProofData","deleteProofClaims","useDeleteAllProofsData","schemaId","proofSchemaIds","ACCEPTED","result","Promise","all","reverse"],"sources":["proofs.ts"],"sourcesContent":["import {\n Config,\n CreateProofRequest,\n IdentifierListQuery,\n OneError,\n PresentationSubmitCredentialRequest,\n ProofListQuery,\n ProofSchema,\n ProofStateEnum,\n ShareProofRequest,\n} from '@procivis/react-native-one-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromProofListQueryParams } from '../../parsers/query';\nimport { Transport } from '../connectivity/connectivity';\nimport { useCoreConfig } from './core-config';\nimport { useONECore } from './core-context';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\nimport { useIdentifiers } from './identifiers';\nimport { useProofSchemaDetail } from './proof-schemas';\n\nconst PAGE_SIZE = 10;\nexport const PROOF_DETAIL_QUERY_KEY = 'proof-detail';\nexport const PROOF_STATE_QUERY_KEY = 'proof-state';\nexport const PROOF_LIST_QUERY_KEY = 'proof-list';\n\nexport const useProofDetail = (proofId: string | undefined) => {\n const { core } = useONECore();\n\n return useQuery([PROOF_DETAIL_QUERY_KEY, proofId], () => (proofId ? core.getProof(proofId) : undefined), {\n enabled: Boolean(proofId),\n keepPreviousData: true,\n });\n};\n\nexport const useProofState = (proofId: string | undefined, isPolling: boolean) => {\n const { core } = useONECore();\n\n return useQuery(\n [PROOF_STATE_QUERY_KEY, proofId],\n () => (proofId ? core.getProof(proofId).then((proof) => proof.state) : undefined),\n {\n enabled: Boolean(proofId),\n refetchInterval: isPolling ? 1000 : false,\n },\n );\n};\n\ntype ProofUrlHookParams = { proofId: string; request?: ShareProofRequest };\n\nexport const useProofUrl = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({ proofId, request }: ProofUrlHookParams) =>\n core.shareProof(proofId, request ?? {}).then((proof) => proof.url),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({\n interactionId,\n credentials,\n didId,\n identifierId,\n keyId,\n }: {\n credentials: Record<string, PresentationSubmitCredentialRequest>;\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n }) => core.holderSubmitProof(interactionId, credentials, didId, identifierId, keyId),\n {\n onError: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectProof(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport enum IssuanceProtocol {\n OPENID4VCI_DRAFT13 = 'OPENID4VCI_DRAFT13',\n}\n\nexport enum VerificationProtocol {\n ISO_MDL = 'ISO_MDL',\n OPENID4VP_DRAFT20 = 'OPENID4VP_DRAFT20',\n OPENID4VP_DRAFT25 = 'OPENID4VP_DRAFT25',\n OPENID4VP_PROXIMITY_DRAFT00 = 'OPENID4VP_PROXIMITY_DRAFT00',\n SCAN_TO_VERIFY = 'SCAN_TO_VERIFY',\n}\n\nexport const useProposeProof = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(async (exchange: VerificationProtocol) => core.proposeProof(exchange, organisationId), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useProofDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (proofId: string) => {\n return core.deleteProof(proofId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n });\n },\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofs = (queryParams?: Partial<ProofListQuery>) => {\n const { core, organisationId } = useONECore();\n\n const queryKey = [PROOF_LIST_QUERY_KEY, ...getQueryKeyFromProofListQueryParams(queryParams)];\n\n return useQuery(\n queryKey,\n ({ pageParam = 0 }) =>\n core.getProofs({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n ...queryParams,\n }),\n {\n keepPreviousData: false,\n },\n );\n};\n\nexport const useProofCreate = () => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async (data: CreateProofRequest) => core.createProof(data), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n });\n};\n\nconst getIdentifierFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<IdentifierListQuery> => {\n const requestedFormats = proofSchema.proofInputSchemas.map((schema) => schema.credentialSchema.format);\n const requestedFormatsCapabilities = requestedFormats\n .map((format) => config.format[format]?.capabilities)\n .filter((x) => x);\n\n // key algorithms must be supported by all requested formats\n const keyAlgorithms = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyAlgorithms;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n // key storages must be supported by all requested formats\n const keyStorages = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyStorages;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n return { keyAlgorithms, keyStorages };\n};\n\nexport const useProofForSchemaIdWithTransport = (\n proofSchemaId: string,\n transport: Transport[] | undefined,\n enabled: boolean,\n) => {\n const { data: proofSchema } = useProofSchemaDetail(proofSchemaId, enabled);\n const { data: config } = useCoreConfig();\n\n const identifierFilter = useMemo(\n () => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),\n [config, proofSchema],\n );\n\n const { data: identifiers } = useIdentifiers(identifierFilter);\n const { mutateAsync: createProof } = useProofCreate();\n const { mutateAsync: deleteProof } = useProofDelete();\n\n const [deleting, setDeleting] = useState(false);\n const [proofId, setProofIdState] = useState<string | undefined>(undefined);\n const proofIdRef = useRef<string>();\n\n const { data: proofState } = useProofState(deleting ? undefined : proofId, enabled);\n\n const setProofId = useCallback((id: string | undefined) => {\n proofIdRef.current = id;\n setProofIdState(id);\n }, []);\n\n useEffect(() => {\n if (!proofIdRef.current) {\n return;\n }\n setDeleting(true);\n deleteProof(proofIdRef.current)\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }, [proofIdRef, deleteProof, proofSchemaId, transport, setProofId]);\n\n useEffect(() => {\n if (enabled) {\n return;\n }\n\n if (proofState !== ProofStateEnum.CREATED && proofState !== ProofStateEnum.PENDING) {\n setProofId(undefined);\n } else {\n setDeleting(true);\n deleteProof(proofIdRef.current || '')\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }\n }, [deleteProof, enabled, proofId, proofState, setProofId]);\n\n useEffect(() => {\n if (\n deleting ||\n !enabled ||\n proofId ||\n !identifiers ||\n !identifierFilter ||\n !identifiers.values.length ||\n !transport ||\n transport.length === 0\n ) {\n return;\n }\n\n createProof({\n protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,\n proofSchemaId,\n transport,\n verifierIdentifierId: identifiers.values[0].id,\n })\n .then((id) => {\n setProofId(id);\n })\n .catch(() => {});\n }, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);\n\n return deleting ? undefined : proofId;\n};\n\nexport const useCleanupUnusedProofs = () => {\n const { mutateAsync: deleteProof } = useProofDelete();\n const { data: proofs } = useProofs({\n page: 0,\n pageSize: 100,\n proofStates: [ProofStateEnum.CREATED, ProofStateEnum.PENDING],\n });\n const [cleaned, setCleaned] = useState(false);\n\n useEffect(() => {\n if (cleaned || !proofs) {\n return;\n }\n setCleaned(true);\n proofs.values.forEach((proof) => deleteProof(proof.id));\n }, [cleaned, deleteProof, proofs]);\n};\n\nexport const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, enabled: boolean) => {\n const { mutateAsync: shareProof } = useProofUrl();\n const { data: proofState } = useProofState(proofUrlProps?.proofId, enabled);\n\n const [sharedProof, setSharedProof] = useState<{\n bleAdapterDisabled: boolean;\n url?: string;\n error?: unknown;\n }>();\n\n // reset when proofId changes or the proof was retracted\n useEffect(() => {\n if (!proofUrlProps?.proofId || proofState === ProofStateEnum.CREATED) {\n setSharedProof(undefined);\n }\n }, [proofUrlProps?.proofId, proofState]);\n\n useEffect(() => {\n if (!proofUrlProps || !enabled || sharedProof) {\n return;\n }\n\n shareProof(proofUrlProps)\n .then((url) => {\n setSharedProof({\n bleAdapterDisabled: false,\n url,\n });\n })\n .catch((error: unknown) => {\n if (error instanceof OneError && error.cause?.includes('BLE adapter not enabled')) {\n setSharedProof({\n bleAdapterDisabled: true,\n });\n } else {\n setSharedProof({ error, bleAdapterDisabled: false });\n }\n });\n }, [enabled, proofUrlProps, shareProof, sharedProof]);\n\n return sharedProof;\n};\n\nexport const useRetainProofCheck = (proofId?: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.runTask('RETAIN_PROOF_CHECK'), {\n onSuccess: async () => {\n if (proofId) {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n }\n },\n });\n};\n\nexport const useDeleteProofData = (proofId: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.deleteProofClaims(proofId), {\n onSuccess: async () => {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useDeleteAllProofsData = (schemaId: string) => {\n const queryClient = useQueryClient();\n\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async () =>\n core\n .getProofs({\n organisationId,\n page: 0,\n pageSize: 1000,\n proofSchemaIds: [schemaId],\n proofStates: [ProofStateEnum.ACCEPTED],\n })\n .then((result) => Promise.all(result.values.reverse().map((proof) => core.deleteProofClaims(proof.id)))),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n"],"mappings":"AAAA,SAIEA,QAAQ,EAIRC,cAAc,QAET,iCAAiC;AACxC,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACzE,SAASC,WAAW,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,aAAa;AAEnE,SAASC,mCAAmC,QAAQ,qBAAqB;AAEzE,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,YAAY,QAAQ,cAAc;AAC3C,SAASC,sBAAsB,QAAQ,WAAW;AAClD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,MAAMC,SAAS,GAAG,EAAE;AACpB,OAAO,MAAMC,sBAAsB,GAAG,cAAc;AACpD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,oBAAoB,GAAG,YAAY;AAEhD,OAAO,MAAMC,cAAc,GAAIC,OAA2B,IAAK;EAC7D,MAAM;IAAEC;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOJ,QAAQ,CAAC,CAACU,sBAAsB,EAAEI,OAAO,CAAC,EAAE,MAAOA,OAAO,GAAGC,IAAI,CAACC,QAAQ,CAACF,OAAO,CAAC,GAAGG,SAAU,EAAE;IACvGC,OAAO,EAAEC,OAAO,CAACL,OAAO,CAAC;IACzBM,gBAAgB,EAAE;EACpB,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMC,aAAa,GAAGA,CAACP,OAA2B,EAAEQ,SAAkB,KAAK;EAChF,MAAM;IAAEP;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOJ,QAAQ,CACb,CAACW,qBAAqB,EAAEG,OAAO,CAAC,EAChC,MAAOA,OAAO,GAAGC,IAAI,CAACC,QAAQ,CAACF,OAAO,CAAC,CAACS,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,KAAK,CAAC,GAAGR,SAAU,EACjF;IACEC,OAAO,EAAEC,OAAO,CAACL,OAAO,CAAC;IACzBY,eAAe,EAAEJ,SAAS,GAAG,IAAI,GAAG;EACtC,CACF,CAAC;AACH,CAAC;AAID,OAAO,MAAMK,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAMC,WAAW,GAAG3B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAChB,OAAO;IAAEe,OAAO;IAAEe;EAA4B,CAAC,KAC7Cd,IAAI,CAACe,UAAU,CAAChB,OAAO,EAAEe,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,CAACN,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACO,GAAG,CAAC,EACpE;IACEC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;IAC5D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMuB,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMN,WAAW,GAAG3B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAChB,OAAO;IACLoC,aAAa;IACbC,WAAW;IACXC,KAAK;IACLC,YAAY;IACZC;EAOF,CAAC,KAAKxB,IAAI,CAACyB,iBAAiB,CAACL,aAAa,EAAEC,WAAW,EAAEC,KAAK,EAAEC,YAAY,EAAEC,KAAK,CAAC,EACpF;IACEE,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAMb,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;IAC7D,CAAC;IACDsB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMoC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMd,WAAW,GAAG3B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAChB,MAAOoC,aAAqB,IAC1BpB,IAAI,CAAC4B,iBAAiB,CAACR,aAAa,CAAC,CAACS,KAAK,CAAEC,CAAC,IAAK;IACjD,IAAIA,CAAC,YAAYrD,QAAQ,IAAIqD,CAAC,CAACC,IAAI,KAAKzC,YAAY,CAAC0C,qBAAqB,EAAE;MAC1E;IACF;IACA,MAAMF,CAAC;EACT,CAAC,CAAC,EACJ;IACEb,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,WAAY0C,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAI5B,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAQhC,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMtB,WAAW,GAAG3B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEc,IAAI;IAAEoC;EAAe,CAAC,GAAG/C,UAAU,CAAC,CAAC;EAE7C,OAAOL,WAAW,CAAC,MAAOqD,QAA8B,IAAKrC,IAAI,CAACsC,YAAY,CAACD,QAAQ,EAAED,cAAc,CAAC,EAAE;IACxGnB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMgD,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM1B,WAAW,GAAG3B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAChB,MAAOe,OAAe,IAAK;IACzB,OAAOC,IAAI,CAACwC,WAAW,CAACzC,OAAO,CAAC,CAAC8B,KAAK,CAAEC,CAAC,IAAK;MAC5C,IAAIA,CAAC,YAAYrD,QAAQ,IAAIqD,CAAC,CAACC,IAAI,KAAKzC,YAAY,CAAC0C,qBAAqB,EAAE;QAC1E;MACF;MACA,MAAMF,CAAC;IACT,CAAC,CAAC;EACJ,CAAC,EACD;IACEb,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACrB,oBAAoB,CAAC;MACzD,MAAMgB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;MAC1D,MAAMiB,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMkD,SAAS,GAAIC,WAAqC,IAAK;EAClE,MAAM;IAAE1C,IAAI;IAAEoC;EAAe,CAAC,GAAG/C,UAAU,CAAC,CAAC;EAE7C,MAAMsD,QAAQ,GAAG,CAAC9C,oBAAoB,EAAE,GAAGV,mCAAmC,CAACuD,WAAW,CAAC,CAAC;EAE5F,OAAOzD,QAAQ,CACb0D,QAAQ,EACR,CAAC;IAAEC,SAAS,GAAG;EAAE,CAAC,KAChB5C,IAAI,CAAC6C,SAAS,CAAC;IACbT,cAAc;IACdU,IAAI,EAAEF,SAAS;IACfG,QAAQ,EAAErD,SAAS;IACnB,GAAGgD;EACL,CAAC,CAAC,EACJ;IACErC,gBAAgB,EAAE;EACpB,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAM2C,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMnC,WAAW,GAAG3B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAAC,MAAOiE,IAAwB,IAAKjD,IAAI,CAACkD,WAAW,CAACD,IAAI,CAAC,EAAE;IAC7EhC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACrB,oBAAoB,CAAC;MACzD,MAAMgB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;MAC1D,MAAMiB,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMwD,iCAAiC,GAAGA,CAACC,WAAwB,EAAEC,MAAc,KAAmC;EACpH,MAAMC,gBAAgB,GAAGF,WAAW,CAACG,iBAAiB,CAACC,GAAG,CAAEC,MAAM,IAAKA,MAAM,CAACC,gBAAgB,CAACC,MAAM,CAAC;EACtG,MAAMC,4BAA4B,GAAGN,gBAAgB,CAClDE,GAAG,CAAEG,MAAM;IAAA,IAAAE,qBAAA;IAAA,QAAAA,qBAAA,GAAKR,MAAM,CAACM,MAAM,CAACA,MAAM,CAAC,cAAAE,qBAAA,uBAArBA,qBAAA,CAAuBC,YAAY;EAAA,EAAC,CACpDC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC;;EAEnB;EACA,MAAMC,aAAa,GAAGL,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAM,cAAA;IACxG,MAAMC,OAAO,GAAGP,YAAY,CAACQ,yBAAyB;IACtD,QAAAF,cAAA,GAAOD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAH,cAAA,cAAAA,cAAA,GAAIC,OAAO;EACpE,CAAC,EAAEnE,SAAS,CAAC;;EAEb;EACA,MAAMuE,WAAW,GAAGb,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAY,eAAA;IACtG,MAAML,OAAO,GAAGP,YAAY,CAACa,uBAAuB;IACpD,QAAAD,eAAA,GAAOP,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAG,eAAA,cAAAA,eAAA,GAAIL,OAAO;EACpE,CAAC,EAAEnE,SAAS,CAAC;EAEb,OAAO;IAAE+D,aAAa;IAAEQ;EAAY,CAAC;AACvC,CAAC;AAED,OAAO,MAAMG,gCAAgC,GAAGA,CAC9CC,aAAqB,EACrBC,SAAkC,EAClC3E,OAAgB,KACb;EACH,MAAM;IAAE8C,IAAI,EAAEG;EAAY,CAAC,GAAG3D,oBAAoB,CAACoF,aAAa,EAAE1E,OAAO,CAAC;EAC1E,MAAM;IAAE8C,IAAI,EAAEI;EAAO,CAAC,GAAGjE,aAAa,CAAC,CAAC;EAExC,MAAM2F,gBAAgB,GAAGlG,OAAO,CAC9B,MAAOuE,WAAW,IAAIC,MAAM,GAAGF,iCAAiC,CAACC,WAAW,EAAEC,MAAM,CAAC,GAAGnD,SAAU,EAClG,CAACmD,MAAM,EAAED,WAAW,CACtB,CAAC;EAED,MAAM;IAAEH,IAAI,EAAE+B;EAAY,CAAC,GAAGxF,cAAc,CAACuF,gBAAgB,CAAC;EAC9D,MAAM;IAAEE,WAAW,EAAE/B;EAAY,CAAC,GAAGF,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEiC,WAAW,EAAEzC;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EAErD,MAAM,CAAC2C,QAAQ,EAAEC,WAAW,CAAC,GAAGpG,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM,CAACgB,OAAO,EAAEqF,eAAe,CAAC,GAAGrG,QAAQ,CAAqBmB,SAAS,CAAC;EAC1E,MAAMmF,UAAU,GAAGvG,MAAM,CAAS,CAAC;EAEnC,MAAM;IAAEmE,IAAI,EAAEqC;EAAW,CAAC,GAAGhF,aAAa,CAAC4E,QAAQ,GAAGhF,SAAS,GAAGH,OAAO,EAAEI,OAAO,CAAC;EAEnF,MAAMoF,UAAU,GAAG5G,WAAW,CAAE6G,EAAsB,IAAK;IACzDH,UAAU,CAAChB,OAAO,GAAGmB,EAAE;IACvBJ,eAAe,CAACI,EAAE,CAAC;EACrB,CAAC,EAAE,EAAE,CAAC;EAEN5G,SAAS,CAAC,MAAM;IACd,IAAI,CAACyG,UAAU,CAAChB,OAAO,EAAE;MACvB;IACF;IACAc,WAAW,CAAC,IAAI,CAAC;IACjB3C,WAAW,CAAC6C,UAAU,CAAChB,OAAO,CAAC,CAC5B7D,IAAI,CAAC,MAAM;MACV+E,UAAU,CAACrF,SAAS,CAAC;MACrBiF,WAAW,CAAC,KAAK,CAAC;IACpB,CAAC,CAAC,CACDtD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACwD,UAAU,EAAE7C,WAAW,EAAEqC,aAAa,EAAEC,SAAS,EAAES,UAAU,CAAC,CAAC;EAEnE3G,SAAS,CAAC,MAAM;IACd,IAAIuB,OAAO,EAAE;MACX;IACF;IAEA,IAAImF,UAAU,KAAK5G,cAAc,CAAC+G,OAAO,IAAIH,UAAU,KAAK5G,cAAc,CAACgH,OAAO,EAAE;MAClFH,UAAU,CAACrF,SAAS,CAAC;IACvB,CAAC,MAAM;MACLiF,WAAW,CAAC,IAAI,CAAC;MACjB3C,WAAW,CAAC6C,UAAU,CAAChB,OAAO,IAAI,EAAE,CAAC,CAClC7D,IAAI,CAAC,MAAM;QACV+E,UAAU,CAACrF,SAAS,CAAC;QACrBiF,WAAW,CAAC,KAAK,CAAC;MACpB,CAAC,CAAC,CACDtD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpB;EACF,CAAC,EAAE,CAACW,WAAW,EAAErC,OAAO,EAAEJ,OAAO,EAAEuF,UAAU,EAAEC,UAAU,CAAC,CAAC;EAE3D3G,SAAS,CAAC,MAAM;IACd,IACEsG,QAAQ,IACR,CAAC/E,OAAO,IACRJ,OAAO,IACP,CAACiF,WAAW,IACZ,CAACD,gBAAgB,IACjB,CAACC,WAAW,CAACW,MAAM,CAACC,MAAM,IAC1B,CAACd,SAAS,IACVA,SAAS,CAACc,MAAM,KAAK,CAAC,EACtB;MACA;IACF;IAEA1C,WAAW,CAAC;MACV2C,QAAQ,EAAE3D,oBAAoB,CAAC4D,2BAA2B;MAC1DjB,aAAa;MACbC,SAAS;MACTiB,oBAAoB,EAAEf,WAAW,CAACW,MAAM,CAAC,CAAC,CAAC,CAACH;IAC9C,CAAC,CAAC,CACChF,IAAI,CAAEgF,EAAE,IAAK;MACZD,UAAU,CAACC,EAAE,CAAC;IAChB,CAAC,CAAC,CACD3D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACgD,aAAa,EAAEG,WAAW,EAAED,gBAAgB,EAAE7B,WAAW,EAAE/C,OAAO,EAAE2E,SAAS,EAAE/E,OAAO,EAAEwF,UAAU,EAAEL,QAAQ,CAAC,CAAC;EAElH,OAAOA,QAAQ,GAAGhF,SAAS,GAAGH,OAAO;AACvC,CAAC;AAED,OAAO,MAAMiG,sBAAsB,GAAGA,CAAA,KAAM;EAC1C,MAAM;IAAEf,WAAW,EAAEzC;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEU,IAAI,EAAEgD;EAAO,CAAC,GAAGxD,SAAS,CAAC;IACjCK,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,GAAG;IACbmD,WAAW,EAAE,CAACxH,cAAc,CAAC+G,OAAO,EAAE/G,cAAc,CAACgH,OAAO;EAC9D,CAAC,CAAC;EACF,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAGrH,QAAQ,CAAC,KAAK,CAAC;EAE7CH,SAAS,CAAC,MAAM;IACd,IAAIuH,OAAO,IAAI,CAACF,MAAM,EAAE;MACtB;IACF;IACAG,UAAU,CAAC,IAAI,CAAC;IAChBH,MAAM,CAACN,MAAM,CAACU,OAAO,CAAE5F,KAAK,IAAK+B,WAAW,CAAC/B,KAAK,CAAC+E,EAAE,CAAC,CAAC;EACzD,CAAC,EAAE,CAACW,OAAO,EAAE3D,WAAW,EAAEyD,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,OAAO,MAAMK,aAAa,GAAGA,CAACC,aAA6C,EAAEpG,OAAgB,KAAK;EAChG,MAAM;IAAE8E,WAAW,EAAElE;EAAW,CAAC,GAAGH,WAAW,CAAC,CAAC;EACjD,MAAM;IAAEqC,IAAI,EAAEqC;EAAW,CAAC,GAAGhF,aAAa,CAACiG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAExG,OAAO,EAAEI,OAAO,CAAC;EAE3E,MAAM,CAACqG,WAAW,EAAEC,cAAc,CAAC,GAAG1H,QAAQ,CAI3C,CAAC;;EAEJ;EACAH,SAAS,CAAC,MAAM;IACd,IAAI,EAAC2H,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAExG,OAAO,KAAIuF,UAAU,KAAK5G,cAAc,CAAC+G,OAAO,EAAE;MACpEgB,cAAc,CAACvG,SAAS,CAAC;IAC3B;EACF,CAAC,EAAE,CAACqG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAExG,OAAO,EAAEuF,UAAU,CAAC,CAAC;EAExC1G,SAAS,CAAC,MAAM;IACd,IAAI,CAAC2H,aAAa,IAAI,CAACpG,OAAO,IAAIqG,WAAW,EAAE;MAC7C;IACF;IAEAzF,UAAU,CAACwF,aAAa,CAAC,CACtB/F,IAAI,CAAEQ,GAAG,IAAK;MACbyF,cAAc,CAAC;QACbC,kBAAkB,EAAE,KAAK;QACzB1F;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,CACDa,KAAK,CAAE8E,KAAc,IAAK;MAAA,IAAAC,YAAA;MACzB,IAAID,KAAK,YAAYlI,QAAQ,KAAAmI,YAAA,GAAID,KAAK,CAACE,KAAK,cAAAD,YAAA,eAAXA,YAAA,CAAapC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;QACjFiC,cAAc,CAAC;UACbC,kBAAkB,EAAE;QACtB,CAAC,CAAC;MACJ,CAAC,MAAM;QACLD,cAAc,CAAC;UAAEE,KAAK;UAAED,kBAAkB,EAAE;QAAM,CAAC,CAAC;MACtD;IACF,CAAC,CAAC;EACN,CAAC,EAAE,CAACvG,OAAO,EAAEoG,aAAa,EAAExF,UAAU,EAAEyF,WAAW,CAAC,CAAC;EAErD,OAAOA,WAAW;AACpB,CAAC;AAED,OAAO,MAAMM,mBAAmB,GAAI/G,OAAgB,IAAK;EACvD,MAAMc,WAAW,GAAG3B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAAC,YAAYgB,IAAI,CAAC+G,OAAO,CAAC,oBAAoB,CAAC,EAAE;IACjE9F,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,IAAIlB,OAAO,EAAE;QACX,MAAMc,WAAW,CAACmG,aAAa,CAAC,CAACrH,sBAAsB,EAAEI,OAAO,CAAC,CAAC;QAClE,MAAMc,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;MAC7D;IACF;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAM0H,kBAAkB,GAAIlH,OAAe,IAAK;EACrD,MAAMc,WAAW,GAAG3B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEc;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,WAAW,CAAC,YAAYgB,IAAI,CAACkH,iBAAiB,CAACnH,OAAO,CAAC,EAAE;IAC9DkB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACmG,aAAa,CAAC,CAACrH,sBAAsB,EAAEI,OAAO,CAAC,CAAC;MAClE,MAAMc,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAM4H,sBAAsB,GAAIC,QAAgB,IAAK;EAC1D,MAAMvG,WAAW,GAAG3B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEc,IAAI;IAAEoC;EAAe,CAAC,GAAG/C,UAAU,CAAC,CAAC;EAE7C,OAAOL,WAAW,CAChB,YACEgB,IAAI,CACD6C,SAAS,CAAC;IACTT,cAAc;IACdU,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,IAAI;IACdsE,cAAc,EAAE,CAACD,QAAQ,CAAC;IAC1BlB,WAAW,EAAE,CAACxH,cAAc,CAAC4I,QAAQ;EACvC,CAAC,CAAC,CACD9G,IAAI,CAAE+G,MAAM,IAAKC,OAAO,CAACC,GAAG,CAACF,MAAM,CAAC5B,MAAM,CAAC+B,OAAO,CAAC,CAAC,CAAClE,GAAG,CAAE/C,KAAK,IAAKT,IAAI,CAACkH,iBAAiB,CAACzG,KAAK,CAAC+E,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5G;IACEvE,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["OneError","ProofStateEnum","useCallback","useEffect","useMemo","useRef","useState","useMutation","useQuery","useQueryClient","getQueryKeyFromProofListQueryParams","reportException","useCoreConfig","useONECore","OneErrorCode","HISTORY_LIST_QUERY_KEY","useIdentifiers","useProofSchemaDetail","PAGE_SIZE","PROOF_DETAIL_QUERY_KEY","PROOF_STATE_QUERY_KEY","PROOF_LIST_QUERY_KEY","useProofDetail","proofId","core","getProof","undefined","enabled","Boolean","keepPreviousData","useProofState","isPolling","then","proof","state","refetchInterval","useProofUrl","queryClient","request","shareProof","url","onSuccess","invalidateQueries","useProofAccept","interactionId","credentials","didId","identifierId","keyId","holderSubmitProof","onError","err","useProofReject","holderRejectProof","catch","e","code","OperationNotSupported","IssuanceProtocol","VerificationProtocol","useProposeProof","organisationId","exchange","proposeProof","useProofDelete","deleteProof","useProofs","queryParams","queryKey","pageParam","getProofs","page","pageSize","useProofCreate","data","createProof","getIdentifierFilterForProofSchema","proofSchema","config","requestedFormats","proofInputSchemas","map","schema","credentialSchema","format","requestedFormatsCapabilities","_config$format$format","capabilities","filter","x","keyAlgorithms","reduce","others","_others$filter","current","verificationKeyAlgorithms","item","includes","keyStorages","_others$filter2","verificationKeyStorages","useProofForSchemaIdWithTransport","proofSchemaId","transport","identifierFilter","identifiers","mutateAsync","deleting","setDeleting","setProofIdState","proofIdRef","proofState","setProofId","id","CREATED","PENDING","values","length","protocol","OPENID4VP_PROXIMITY_DRAFT00","verifierIdentifierId","useCleanupUnusedProofs","proofs","proofStates","cleaned","setCleaned","forEach","useShareProof","proofUrlProps","sharedProof","setSharedProof","bleAdapterDisabled","error","_error$cause","cause","useRetainProofCheck","runTask","removeQueries","useDeleteProofData","deleteProofClaims","useDeleteAllProofsData","schemaId","proofSchemaIds","ACCEPTED","result","Promise","all","reverse"],"sources":["proofs.ts"],"sourcesContent":["import {\n Config,\n CreateProofRequest,\n IdentifierListQuery,\n OneError,\n PresentationSubmitCredentialRequest,\n ProofListQuery,\n ProofSchema,\n ProofStateEnum,\n ShareProofRequest,\n} from '@procivis/react-native-one-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromProofListQueryParams } from '../../parsers/query';\nimport { reportException } from '../../reporting';\nimport { Transport } from '../connectivity/connectivity';\nimport { useCoreConfig } from './core-config';\nimport { useONECore } from './core-context';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\nimport { useIdentifiers } from './identifiers';\nimport { useProofSchemaDetail } from './proof-schemas';\n\nconst PAGE_SIZE = 10;\nexport const PROOF_DETAIL_QUERY_KEY = 'proof-detail';\nexport const PROOF_STATE_QUERY_KEY = 'proof-state';\nexport const PROOF_LIST_QUERY_KEY = 'proof-list';\n\nexport const useProofDetail = (proofId: string | undefined) => {\n const { core } = useONECore();\n\n return useQuery([PROOF_DETAIL_QUERY_KEY, proofId], () => (proofId ? core.getProof(proofId) : undefined), {\n enabled: Boolean(proofId),\n keepPreviousData: true,\n });\n};\n\nexport const useProofState = (proofId: string | undefined, isPolling: boolean) => {\n const { core } = useONECore();\n\n return useQuery(\n [PROOF_STATE_QUERY_KEY, proofId],\n () => (proofId ? core.getProof(proofId).then((proof) => proof.state) : undefined),\n {\n enabled: Boolean(proofId),\n refetchInterval: isPolling ? 1000 : false,\n },\n );\n};\n\ntype ProofUrlHookParams = { proofId: string; request?: ShareProofRequest };\n\nexport const useProofUrl = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({ proofId, request }: ProofUrlHookParams) =>\n core.shareProof(proofId, request ?? {}).then((proof) => proof.url),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({\n interactionId,\n credentials,\n didId,\n identifierId,\n keyId,\n }: {\n credentials: Record<string, PresentationSubmitCredentialRequest>;\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n }) => core.holderSubmitProof(interactionId, credentials, didId, identifierId, keyId),\n {\n onError: async (err) => {\n reportException(err, 'Proof submission failure');\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectProof(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport enum IssuanceProtocol {\n OPENID4VCI_DRAFT13 = 'OPENID4VCI_DRAFT13',\n}\n\nexport enum VerificationProtocol {\n ISO_MDL = 'ISO_MDL',\n OPENID4VP_DRAFT20 = 'OPENID4VP_DRAFT20',\n OPENID4VP_DRAFT25 = 'OPENID4VP_DRAFT25',\n OPENID4VP_PROXIMITY_DRAFT00 = 'OPENID4VP_PROXIMITY_DRAFT00',\n SCAN_TO_VERIFY = 'SCAN_TO_VERIFY',\n}\n\nexport const useProposeProof = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(async (exchange: VerificationProtocol) => core.proposeProof(exchange, organisationId), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useProofDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (proofId: string) => {\n return core.deleteProof(proofId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n });\n },\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofs = (queryParams?: Partial<ProofListQuery>) => {\n const { core, organisationId } = useONECore();\n\n const queryKey = [PROOF_LIST_QUERY_KEY, ...getQueryKeyFromProofListQueryParams(queryParams)];\n\n return useQuery(\n queryKey,\n ({ pageParam = 0 }) =>\n core.getProofs({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n ...queryParams,\n }),\n {\n keepPreviousData: false,\n },\n );\n};\n\nexport const useProofCreate = () => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async (data: CreateProofRequest) => core.createProof(data), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n });\n};\n\nconst getIdentifierFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<IdentifierListQuery> => {\n const requestedFormats = proofSchema.proofInputSchemas.map((schema) => schema.credentialSchema.format);\n const requestedFormatsCapabilities = requestedFormats\n .map((format) => config.format[format]?.capabilities)\n .filter((x) => x);\n\n // key algorithms must be supported by all requested formats\n const keyAlgorithms = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyAlgorithms;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n // key storages must be supported by all requested formats\n const keyStorages = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyStorages;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n return { keyAlgorithms, keyStorages };\n};\n\nexport const useProofForSchemaIdWithTransport = (\n proofSchemaId: string,\n transport: Transport[] | undefined,\n enabled: boolean,\n) => {\n const { data: proofSchema } = useProofSchemaDetail(proofSchemaId, enabled);\n const { data: config } = useCoreConfig();\n\n const identifierFilter = useMemo(\n () => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),\n [config, proofSchema],\n );\n\n const { data: identifiers } = useIdentifiers(identifierFilter);\n const { mutateAsync: createProof } = useProofCreate();\n const { mutateAsync: deleteProof } = useProofDelete();\n\n const [deleting, setDeleting] = useState(false);\n const [proofId, setProofIdState] = useState<string | undefined>(undefined);\n const proofIdRef = useRef<string>();\n\n const { data: proofState } = useProofState(deleting ? undefined : proofId, enabled);\n\n const setProofId = useCallback((id: string | undefined) => {\n proofIdRef.current = id;\n setProofIdState(id);\n }, []);\n\n useEffect(() => {\n if (!proofIdRef.current) {\n return;\n }\n setDeleting(true);\n deleteProof(proofIdRef.current)\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }, [proofIdRef, deleteProof, proofSchemaId, transport, setProofId]);\n\n useEffect(() => {\n if (enabled) {\n return;\n }\n\n if (proofState !== ProofStateEnum.CREATED && proofState !== ProofStateEnum.PENDING) {\n setProofId(undefined);\n } else {\n setDeleting(true);\n deleteProof(proofIdRef.current || '')\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }\n }, [deleteProof, enabled, proofId, proofState, setProofId]);\n\n useEffect(() => {\n if (\n deleting ||\n !enabled ||\n proofId ||\n !identifiers ||\n !identifierFilter ||\n !identifiers.values.length ||\n !transport ||\n transport.length === 0\n ) {\n return;\n }\n\n createProof({\n protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,\n proofSchemaId,\n transport,\n verifierIdentifierId: identifiers.values[0].id,\n })\n .then((id) => {\n setProofId(id);\n })\n .catch(() => {});\n }, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);\n\n return deleting ? undefined : proofId;\n};\n\nexport const useCleanupUnusedProofs = () => {\n const { mutateAsync: deleteProof } = useProofDelete();\n const { data: proofs } = useProofs({\n page: 0,\n pageSize: 100,\n proofStates: [ProofStateEnum.CREATED, ProofStateEnum.PENDING],\n });\n const [cleaned, setCleaned] = useState(false);\n\n useEffect(() => {\n if (cleaned || !proofs) {\n return;\n }\n setCleaned(true);\n proofs.values.forEach((proof) => deleteProof(proof.id));\n }, [cleaned, deleteProof, proofs]);\n};\n\nexport const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, enabled: boolean) => {\n const { mutateAsync: shareProof } = useProofUrl();\n const { data: proofState } = useProofState(proofUrlProps?.proofId, enabled);\n\n const [sharedProof, setSharedProof] = useState<{\n bleAdapterDisabled: boolean;\n url?: string;\n error?: unknown;\n }>();\n\n // reset when proofId changes or the proof was retracted\n useEffect(() => {\n if (!proofUrlProps?.proofId || proofState === ProofStateEnum.CREATED) {\n setSharedProof(undefined);\n }\n }, [proofUrlProps?.proofId, proofState]);\n\n useEffect(() => {\n if (!proofUrlProps || !enabled || sharedProof) {\n return;\n }\n\n shareProof(proofUrlProps)\n .then((url) => {\n setSharedProof({\n bleAdapterDisabled: false,\n url,\n });\n })\n .catch((error: unknown) => {\n if (error instanceof OneError && error.cause?.includes('BLE adapter not enabled')) {\n setSharedProof({\n bleAdapterDisabled: true,\n });\n } else {\n setSharedProof({ error, bleAdapterDisabled: false });\n }\n });\n }, [enabled, proofUrlProps, shareProof, sharedProof]);\n\n return sharedProof;\n};\n\nexport const useRetainProofCheck = (proofId?: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.runTask('RETAIN_PROOF_CHECK'), {\n onSuccess: async () => {\n if (proofId) {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n }\n },\n });\n};\n\nexport const useDeleteProofData = (proofId: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.deleteProofClaims(proofId), {\n onSuccess: async () => {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useDeleteAllProofsData = (schemaId: string) => {\n const queryClient = useQueryClient();\n\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async () =>\n core\n .getProofs({\n organisationId,\n page: 0,\n pageSize: 1000,\n proofSchemaIds: [schemaId],\n proofStates: [ProofStateEnum.ACCEPTED],\n })\n .then((result) => Promise.all(result.values.reverse().map((proof) => core.deleteProofClaims(proof.id)))),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n"],"mappings":"AAAA,SAIEA,QAAQ,EAIRC,cAAc,QAET,iCAAiC;AACxC,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACzE,SAASC,WAAW,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,aAAa;AAEnE,SAASC,mCAAmC,QAAQ,qBAAqB;AACzE,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,YAAY,QAAQ,cAAc;AAC3C,SAASC,sBAAsB,QAAQ,WAAW;AAClD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,MAAMC,SAAS,GAAG,EAAE;AACpB,OAAO,MAAMC,sBAAsB,GAAG,cAAc;AACpD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,oBAAoB,GAAG,YAAY;AAEhD,OAAO,MAAMC,cAAc,GAAIC,OAA2B,IAAK;EAC7D,MAAM;IAAEC;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,QAAQ,CAAC,CAACW,sBAAsB,EAAEI,OAAO,CAAC,EAAE,MAAOA,OAAO,GAAGC,IAAI,CAACC,QAAQ,CAACF,OAAO,CAAC,GAAGG,SAAU,EAAE;IACvGC,OAAO,EAAEC,OAAO,CAACL,OAAO,CAAC;IACzBM,gBAAgB,EAAE;EACpB,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMC,aAAa,GAAGA,CAACP,OAA2B,EAAEQ,SAAkB,KAAK;EAChF,MAAM;IAAEP;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAOL,QAAQ,CACb,CAACY,qBAAqB,EAAEG,OAAO,CAAC,EAChC,MAAOA,OAAO,GAAGC,IAAI,CAACC,QAAQ,CAACF,OAAO,CAAC,CAACS,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,KAAK,CAAC,GAAGR,SAAU,EACjF;IACEC,OAAO,EAAEC,OAAO,CAACL,OAAO,CAAC;IACzBY,eAAe,EAAEJ,SAAS,GAAG,IAAI,GAAG;EACtC,CACF,CAAC;AACH,CAAC;AAID,OAAO,MAAMK,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAMC,WAAW,GAAG5B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAChB,OAAO;IAAEgB,OAAO;IAAEe;EAA4B,CAAC,KAC7Cd,IAAI,CAACe,UAAU,CAAChB,OAAO,EAAEe,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,CAACN,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACO,GAAG,CAAC,EACpE;IACEC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;IAC5D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMuB,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMN,WAAW,GAAG5B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAChB,OAAO;IACLqC,aAAa;IACbC,WAAW;IACXC,KAAK;IACLC,YAAY;IACZC;EAOF,CAAC,KAAKxB,IAAI,CAACyB,iBAAiB,CAACL,aAAa,EAAEC,WAAW,EAAEC,KAAK,EAAEC,YAAY,EAAEC,KAAK,CAAC,EACpF;IACEE,OAAO,EAAE,MAAOC,GAAG,IAAK;MACtBxC,eAAe,CAACwC,GAAG,EAAE,0BAA0B,CAAC;MAChD,MAAMd,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;IAC7D,CAAC;IACDsB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMqC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMf,WAAW,GAAG5B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAChB,MAAOqC,aAAqB,IAC1BpB,IAAI,CAAC6B,iBAAiB,CAACT,aAAa,CAAC,CAACU,KAAK,CAAEC,CAAC,IAAK;IACjD,IAAIA,CAAC,YAAYvD,QAAQ,IAAIuD,CAAC,CAACC,IAAI,KAAK1C,YAAY,CAAC2C,qBAAqB,EAAE;MAC1E;IACF;IACA,MAAMF,CAAC;EACT,CAAC,CAAC,EACJ;IACEd,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,WAAY2C,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAI5B,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAQhC,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMvB,WAAW,GAAG5B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEe,IAAI;IAAEqC;EAAe,CAAC,GAAGhD,UAAU,CAAC,CAAC;EAE7C,OAAON,WAAW,CAAC,MAAOuD,QAA8B,IAAKtC,IAAI,CAACuC,YAAY,CAACD,QAAQ,EAAED,cAAc,CAAC,EAAE;IACxGpB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMiD,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM3B,WAAW,GAAG5B,cAAc,CAAC,CAAC;EACpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAChB,MAAOgB,OAAe,IAAK;IACzB,OAAOC,IAAI,CAACyC,WAAW,CAAC1C,OAAO,CAAC,CAAC+B,KAAK,CAAEC,CAAC,IAAK;MAC5C,IAAIA,CAAC,YAAYvD,QAAQ,IAAIuD,CAAC,CAACC,IAAI,KAAK1C,YAAY,CAAC2C,qBAAqB,EAAE;QAC1E;MACF;MACA,MAAMF,CAAC;IACT,CAAC,CAAC;EACJ,CAAC,EACD;IACEd,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACrB,oBAAoB,CAAC;MACzD,MAAMgB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;MAC1D,MAAMiB,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMmD,SAAS,GAAIC,WAAqC,IAAK;EAClE,MAAM;IAAE3C,IAAI;IAAEqC;EAAe,CAAC,GAAGhD,UAAU,CAAC,CAAC;EAE7C,MAAMuD,QAAQ,GAAG,CAAC/C,oBAAoB,EAAE,GAAGX,mCAAmC,CAACyD,WAAW,CAAC,CAAC;EAE5F,OAAO3D,QAAQ,CACb4D,QAAQ,EACR,CAAC;IAAEC,SAAS,GAAG;EAAE,CAAC,KAChB7C,IAAI,CAAC8C,SAAS,CAAC;IACbT,cAAc;IACdU,IAAI,EAAEF,SAAS;IACfG,QAAQ,EAAEtD,SAAS;IACnB,GAAGiD;EACL,CAAC,CAAC,EACJ;IACEtC,gBAAgB,EAAE;EACpB,CACF,CAAC;AACH,CAAC;AAED,OAAO,MAAM4C,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMpC,WAAW,GAAG5B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAAC,MAAOmE,IAAwB,IAAKlD,IAAI,CAACmD,WAAW,CAACD,IAAI,CAAC,EAAE;IAC7EjC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACrB,oBAAoB,CAAC;MACzD,MAAMgB,WAAW,CAACK,iBAAiB,CAACtB,qBAAqB,CAAC;MAC1D,MAAMiB,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMyD,iCAAiC,GAAGA,CAACC,WAAwB,EAAEC,MAAc,KAAmC;EACpH,MAAMC,gBAAgB,GAAGF,WAAW,CAACG,iBAAiB,CAACC,GAAG,CAAEC,MAAM,IAAKA,MAAM,CAACC,gBAAgB,CAACC,MAAM,CAAC;EACtG,MAAMC,4BAA4B,GAAGN,gBAAgB,CAClDE,GAAG,CAAEG,MAAM;IAAA,IAAAE,qBAAA;IAAA,QAAAA,qBAAA,GAAKR,MAAM,CAACM,MAAM,CAACA,MAAM,CAAC,cAAAE,qBAAA,uBAArBA,qBAAA,CAAuBC,YAAY;EAAA,EAAC,CACpDC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC;;EAEnB;EACA,MAAMC,aAAa,GAAGL,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAM,cAAA;IACxG,MAAMC,OAAO,GAAGP,YAAY,CAACQ,yBAAyB;IACtD,QAAAF,cAAA,GAAOD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAH,cAAA,cAAAA,cAAA,GAAIC,OAAO;EACpE,CAAC,EAAEpE,SAAS,CAAC;;EAEb;EACA,MAAMwE,WAAW,GAAGb,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAY,eAAA;IACtG,MAAML,OAAO,GAAGP,YAAY,CAACa,uBAAuB;IACpD,QAAAD,eAAA,GAAOP,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAG,eAAA,cAAAA,eAAA,GAAIL,OAAO;EACpE,CAAC,EAAEpE,SAAS,CAAC;EAEb,OAAO;IAAEgE,aAAa;IAAEQ;EAAY,CAAC;AACvC,CAAC;AAED,OAAO,MAAMG,gCAAgC,GAAGA,CAC9CC,aAAqB,EACrBC,SAAkC,EAClC5E,OAAgB,KACb;EACH,MAAM;IAAE+C,IAAI,EAAEG;EAAY,CAAC,GAAG5D,oBAAoB,CAACqF,aAAa,EAAE3E,OAAO,CAAC;EAC1E,MAAM;IAAE+C,IAAI,EAAEI;EAAO,CAAC,GAAGlE,aAAa,CAAC,CAAC;EAExC,MAAM4F,gBAAgB,GAAGpG,OAAO,CAC9B,MAAOyE,WAAW,IAAIC,MAAM,GAAGF,iCAAiC,CAACC,WAAW,EAAEC,MAAM,CAAC,GAAGpD,SAAU,EAClG,CAACoD,MAAM,EAAED,WAAW,CACtB,CAAC;EAED,MAAM;IAAEH,IAAI,EAAE+B;EAAY,CAAC,GAAGzF,cAAc,CAACwF,gBAAgB,CAAC;EAC9D,MAAM;IAAEE,WAAW,EAAE/B;EAAY,CAAC,GAAGF,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEiC,WAAW,EAAEzC;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EAErD,MAAM,CAAC2C,QAAQ,EAAEC,WAAW,CAAC,GAAGtG,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM,CAACiB,OAAO,EAAEsF,eAAe,CAAC,GAAGvG,QAAQ,CAAqBoB,SAAS,CAAC;EAC1E,MAAMoF,UAAU,GAAGzG,MAAM,CAAS,CAAC;EAEnC,MAAM;IAAEqE,IAAI,EAAEqC;EAAW,CAAC,GAAGjF,aAAa,CAAC6E,QAAQ,GAAGjF,SAAS,GAAGH,OAAO,EAAEI,OAAO,CAAC;EAEnF,MAAMqF,UAAU,GAAG9G,WAAW,CAAE+G,EAAsB,IAAK;IACzDH,UAAU,CAAChB,OAAO,GAAGmB,EAAE;IACvBJ,eAAe,CAACI,EAAE,CAAC;EACrB,CAAC,EAAE,EAAE,CAAC;EAEN9G,SAAS,CAAC,MAAM;IACd,IAAI,CAAC2G,UAAU,CAAChB,OAAO,EAAE;MACvB;IACF;IACAc,WAAW,CAAC,IAAI,CAAC;IACjB3C,WAAW,CAAC6C,UAAU,CAAChB,OAAO,CAAC,CAC5B9D,IAAI,CAAC,MAAM;MACVgF,UAAU,CAACtF,SAAS,CAAC;MACrBkF,WAAW,CAAC,KAAK,CAAC;IACpB,CAAC,CAAC,CACDtD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACwD,UAAU,EAAE7C,WAAW,EAAEqC,aAAa,EAAEC,SAAS,EAAES,UAAU,CAAC,CAAC;EAEnE7G,SAAS,CAAC,MAAM;IACd,IAAIwB,OAAO,EAAE;MACX;IACF;IAEA,IAAIoF,UAAU,KAAK9G,cAAc,CAACiH,OAAO,IAAIH,UAAU,KAAK9G,cAAc,CAACkH,OAAO,EAAE;MAClFH,UAAU,CAACtF,SAAS,CAAC;IACvB,CAAC,MAAM;MACLkF,WAAW,CAAC,IAAI,CAAC;MACjB3C,WAAW,CAAC6C,UAAU,CAAChB,OAAO,IAAI,EAAE,CAAC,CAClC9D,IAAI,CAAC,MAAM;QACVgF,UAAU,CAACtF,SAAS,CAAC;QACrBkF,WAAW,CAAC,KAAK,CAAC;MACpB,CAAC,CAAC,CACDtD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpB;EACF,CAAC,EAAE,CAACW,WAAW,EAAEtC,OAAO,EAAEJ,OAAO,EAAEwF,UAAU,EAAEC,UAAU,CAAC,CAAC;EAE3D7G,SAAS,CAAC,MAAM;IACd,IACEwG,QAAQ,IACR,CAAChF,OAAO,IACRJ,OAAO,IACP,CAACkF,WAAW,IACZ,CAACD,gBAAgB,IACjB,CAACC,WAAW,CAACW,MAAM,CAACC,MAAM,IAC1B,CAACd,SAAS,IACVA,SAAS,CAACc,MAAM,KAAK,CAAC,EACtB;MACA;IACF;IAEA1C,WAAW,CAAC;MACV2C,QAAQ,EAAE3D,oBAAoB,CAAC4D,2BAA2B;MAC1DjB,aAAa;MACbC,SAAS;MACTiB,oBAAoB,EAAEf,WAAW,CAACW,MAAM,CAAC,CAAC,CAAC,CAACH;IAC9C,CAAC,CAAC,CACCjF,IAAI,CAAEiF,EAAE,IAAK;MACZD,UAAU,CAACC,EAAE,CAAC;IAChB,CAAC,CAAC,CACD3D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACgD,aAAa,EAAEG,WAAW,EAAED,gBAAgB,EAAE7B,WAAW,EAAEhD,OAAO,EAAE4E,SAAS,EAAEhF,OAAO,EAAEyF,UAAU,EAAEL,QAAQ,CAAC,CAAC;EAElH,OAAOA,QAAQ,GAAGjF,SAAS,GAAGH,OAAO;AACvC,CAAC;AAED,OAAO,MAAMkG,sBAAsB,GAAGA,CAAA,KAAM;EAC1C,MAAM;IAAEf,WAAW,EAAEzC;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEU,IAAI,EAAEgD;EAAO,CAAC,GAAGxD,SAAS,CAAC;IACjCK,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,GAAG;IACbmD,WAAW,EAAE,CAAC1H,cAAc,CAACiH,OAAO,EAAEjH,cAAc,CAACkH,OAAO;EAC9D,CAAC,CAAC;EACF,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAGvH,QAAQ,CAAC,KAAK,CAAC;EAE7CH,SAAS,CAAC,MAAM;IACd,IAAIyH,OAAO,IAAI,CAACF,MAAM,EAAE;MACtB;IACF;IACAG,UAAU,CAAC,IAAI,CAAC;IAChBH,MAAM,CAACN,MAAM,CAACU,OAAO,CAAE7F,KAAK,IAAKgC,WAAW,CAAChC,KAAK,CAACgF,EAAE,CAAC,CAAC;EACzD,CAAC,EAAE,CAACW,OAAO,EAAE3D,WAAW,EAAEyD,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,OAAO,MAAMK,aAAa,GAAGA,CAACC,aAA6C,EAAErG,OAAgB,KAAK;EAChG,MAAM;IAAE+E,WAAW,EAAEnE;EAAW,CAAC,GAAGH,WAAW,CAAC,CAAC;EACjD,MAAM;IAAEsC,IAAI,EAAEqC;EAAW,CAAC,GAAGjF,aAAa,CAACkG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEzG,OAAO,EAAEI,OAAO,CAAC;EAE3E,MAAM,CAACsG,WAAW,EAAEC,cAAc,CAAC,GAAG5H,QAAQ,CAI3C,CAAC;;EAEJ;EACAH,SAAS,CAAC,MAAM;IACd,IAAI,EAAC6H,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEzG,OAAO,KAAIwF,UAAU,KAAK9G,cAAc,CAACiH,OAAO,EAAE;MACpEgB,cAAc,CAACxG,SAAS,CAAC;IAC3B;EACF,CAAC,EAAE,CAACsG,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEzG,OAAO,EAAEwF,UAAU,CAAC,CAAC;EAExC5G,SAAS,CAAC,MAAM;IACd,IAAI,CAAC6H,aAAa,IAAI,CAACrG,OAAO,IAAIsG,WAAW,EAAE;MAC7C;IACF;IAEA1F,UAAU,CAACyF,aAAa,CAAC,CACtBhG,IAAI,CAAEQ,GAAG,IAAK;MACb0F,cAAc,CAAC;QACbC,kBAAkB,EAAE,KAAK;QACzB3F;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,CACDc,KAAK,CAAE8E,KAAc,IAAK;MAAA,IAAAC,YAAA;MACzB,IAAID,KAAK,YAAYpI,QAAQ,KAAAqI,YAAA,GAAID,KAAK,CAACE,KAAK,cAAAD,YAAA,eAAXA,YAAA,CAAapC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;QACjFiC,cAAc,CAAC;UACbC,kBAAkB,EAAE;QACtB,CAAC,CAAC;MACJ,CAAC,MAAM;QACLD,cAAc,CAAC;UAAEE,KAAK;UAAED,kBAAkB,EAAE;QAAM,CAAC,CAAC;MACtD;IACF,CAAC,CAAC;EACN,CAAC,EAAE,CAACxG,OAAO,EAAEqG,aAAa,EAAEzF,UAAU,EAAE0F,WAAW,CAAC,CAAC;EAErD,OAAOA,WAAW;AACpB,CAAC;AAED,OAAO,MAAMM,mBAAmB,GAAIhH,OAAgB,IAAK;EACvD,MAAMc,WAAW,GAAG5B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAAC,YAAYiB,IAAI,CAACgH,OAAO,CAAC,oBAAoB,CAAC,EAAE;IACjE/F,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,IAAIlB,OAAO,EAAE;QACX,MAAMc,WAAW,CAACoG,aAAa,CAAC,CAACtH,sBAAsB,EAAEI,OAAO,CAAC,CAAC;QAClE,MAAMc,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;MAC7D;IACF;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAM2H,kBAAkB,GAAInH,OAAe,IAAK;EACrD,MAAMc,WAAW,GAAG5B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEe;EAAK,CAAC,GAAGX,UAAU,CAAC,CAAC;EAE7B,OAAON,WAAW,CAAC,YAAYiB,IAAI,CAACmH,iBAAiB,CAACpH,OAAO,CAAC,EAAE;IAC9DkB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACoG,aAAa,CAAC,CAACtH,sBAAsB,EAAEI,OAAO,CAAC,CAAC;MAClE,MAAMc,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAM6H,sBAAsB,GAAIC,QAAgB,IAAK;EAC1D,MAAMxG,WAAW,GAAG5B,cAAc,CAAC,CAAC;EAEpC,MAAM;IAAEe,IAAI;IAAEqC;EAAe,CAAC,GAAGhD,UAAU,CAAC,CAAC;EAE7C,OAAON,WAAW,CAChB,YACEiB,IAAI,CACD8C,SAAS,CAAC;IACTT,cAAc;IACdU,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,IAAI;IACdsE,cAAc,EAAE,CAACD,QAAQ,CAAC;IAC1BlB,WAAW,EAAE,CAAC1H,cAAc,CAAC8I,QAAQ;EACvC,CAAC,CAAC,CACD/G,IAAI,CAAEgH,MAAM,IAAKC,OAAO,CAACC,GAAG,CAACF,MAAM,CAAC5B,MAAM,CAAC+B,OAAO,CAAC,CAAC,CAAClE,GAAG,CAAEhD,KAAK,IAAKT,IAAI,CAACmH,iBAAiB,CAAC1G,KAAK,CAACgF,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5G;IACExE,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMJ,WAAW,CAACK,iBAAiB,CAACvB,sBAAsB,CAAC;MAC3D,MAAMkB,WAAW,CAACK,iBAAiB,CAAC3B,sBAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -73,7 +73,13 @@ const spreadClaims = (claims, parentClaimPath = '') => {
73
73
  };
74
74
  const getDisplayedAttributes = (request, validityState, credential, selectiveDisclosureSupported, selectedFields) => {
75
75
  const claims = credential ? spreadClaims(credential.claims) : undefined;
76
- return request.fields.map(field => {
76
+ let fields = request.fields;
77
+ if (credential) {
78
+ const fieldsWithNoKeyMapping = request.fields.filter(field => !(credential.id in field.keyMap));
79
+ const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);
80
+ fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];
81
+ }
82
+ return fields.map(field => {
77
83
  const selected = !field.required && (selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(field.id));
78
84
  const claim = credential ? claims === null || claims === void 0 ? void 0 : claims.find(({
79
85
  key
@@ -90,6 +96,17 @@ const getDisplayedAttributes = (request, validityState, credential, selectiveDis
90
96
  };
91
97
  });
92
98
  };
99
+ const getFullyNestedFields = (fields, credentialId) => {
100
+ const allKeys = fields.filter(field => credentialId in field.keyMap).map(field => field.keyMap[credentialId]);
101
+ return fields.map(field => ({
102
+ field,
103
+ key: field.keyMap[credentialId]
104
+ })).filter(({
105
+ key
106
+ }) => key && allKeys.every(k => !k.startsWith(`${key}/`))).map(({
107
+ field
108
+ }) => field);
109
+ };
93
110
  export const shareCredentialCardAttributeFromClaim = (id, config, testID, labels, claim, field) => {
94
111
  var _field$name$split$pop, _field$name, _field$name2;
95
112
  if (claim) {
@@ -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","parentClaimPath","reduce","acc","result","Array","isArray","value","claimPath","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","fields","map","includes","find","keyMap","status","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","split","pop","path","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","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 Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialDetailsCardProps,\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 detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetail,\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'> => {\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: PresentationDefinitionRequestedCredential,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style'> => {\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?: Claim;\n field?: PresentationDefinitionField;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionField,\n validityState: ValidityState,\n credential?: CredentialDetail,\n claim?: Claim,\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\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: Claim[], parentClaimPath = ''): Claim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const claimPath = parentClaimPath ? `${parentClaimPath}/${claim.key}` : claim.key;\n result.push(...spreadClaims(claim.value, claimPath));\n }\n return [...acc, ...result];\n }, [] as Claim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredential,\n validityState: ValidityState,\n credential?: CredentialDetail,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n\n return request.fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim =\n credential ?\n claims?.find(({ key }) => {\n return key === field.keyMap[credential.id];\n }) : undefined;\n const status = selectiveDisclosureSupported === false ? SelectorStatus.Required : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return { ...detailsCardAttributeFromClaim(claim, config, testID), id };\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: CredentialDetail | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredential,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\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(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\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?: Claim,\n field?: PresentationDefinitionField,\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: CredentialDetail,\n selected: boolean,\n request: PresentationDefinitionRequestedCredential,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\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[] = request.fields.map((field) => {\n const claim = spreadClaims(credential.claims).find(({ key }) => {\n return key === 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
+ {"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","parentClaimPath","reduce","acc","result","Array","isArray","value","claimPath","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","map","includes","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","split","pop","path","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","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 Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\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: CredentialDetail,\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: PresentationDefinitionRequestedCredential,\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?: Claim;\n field?: PresentationDefinitionField;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionField,\n validityState: ValidityState,\n credential?: CredentialDetail,\n claim?: Claim,\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\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: Claim[], parentClaimPath = ''): Claim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const claimPath = parentClaimPath ? `${parentClaimPath}/${claim.key}` : claim.key;\n result.push(...spreadClaims(claim.value, claimPath));\n }\n return [...acc, ...result];\n }, [] as Claim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredential,\n validityState: ValidityState,\n credential?: CredentialDetail,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields.filter((field) => !(credential.id in field.keyMap));\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(({ key }) => {\n return key === 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: PresentationDefinitionRequestedCredential['fields'],\n credentialId: CredentialDetail['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?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return { ...detailsCardAttributeFromClaim(claim, config, testID), id };\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: CredentialDetail | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredential,\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(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\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?: Claim,\n field?: PresentationDefinitionField,\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: CredentialDetail,\n selected: boolean,\n request: PresentationDefinitionRequestedCredential,\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[] = request.fields.map((field) => {\n const claim = spreadClaims(credential.claims).find(({ key }) => {\n return key === 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,UAA4B,EAC5BC,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,OAAkD,EAClDd,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,KAAkC,EAClCC,aAA4B,EAC5B9B,UAA6B,EAC7B+B,KAAa,EACbC,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;;AAED;AACA,MAAMC,YAAY,GAAGA,CAACxB,MAAe,EAAEyB,eAAe,GAAG,EAAE,KAAc;EACvE,OAAOzB,MAAM,CAAC0B,MAAM,CAAC,CAACC,GAAG,EAAEZ,KAAK,KAAK;IACnC,MAAMa,MAAM,GAAG,CAACb,KAAK,CAAC;IACtB,IAAIc,KAAK,CAACC,OAAO,CAACf,KAAK,CAACgB,KAAK,CAAC,EAAE;MAC9B,MAAMC,SAAS,GAAGP,eAAe,GAAG,GAAGA,eAAe,IAAIV,KAAK,CAACkB,GAAG,EAAE,GAAGlB,KAAK,CAACkB,GAAG;MACjFL,MAAM,CAACM,IAAI,CAAC,GAAGV,YAAY,CAACT,KAAK,CAACgB,KAAK,EAAEC,SAAS,CAAC,CAAC;IACtD;IACA,OAAO,CAAC,GAAGL,GAAG,EAAE,GAAGC,MAAM,CAAC;EAC5B,CAAC,EAAE,EAAa,CAAC;AACnB,CAAC;AAED,MAAMO,sBAAsB,GAAGA,CAC7BhC,OAAkD,EAClDW,aAA4B,EAC5B9B,UAA6B,EAC7BoD,4BAAsC,EACtCC,cAAyB,KACA;EACzB,MAAMrC,MAAM,GAAGhB,UAAU,GAAGwC,YAAY,CAACxC,UAAU,CAACgB,MAAM,CAAC,GAAGM,SAAS;EAEvE,IAAIgC,MAAM,GAAGnC,OAAO,CAACmC,MAAM;EAC3B,IAAItD,UAAU,EAAE;IACd,MAAMuD,sBAAsB,GAAGpC,OAAO,CAACmC,MAAM,CAACE,MAAM,CAAE3B,KAAK,IAAK,EAAE7B,UAAU,CAAC2B,EAAE,IAAIE,KAAK,CAAC4B,MAAM,CAAC,CAAC;IACjG,MAAMC,iBAAiB,GAAGC,oBAAoB,CAACxC,OAAO,CAACmC,MAAM,EAAEtD,UAAU,CAAC2B,EAAE,CAAC;IAE7E2B,MAAM,GAAG,CAAC,GAAGC,sBAAsB,EAAE,GAAGG,iBAAiB,CAAC;EAC5D;EAEA,OAAOJ,MAAM,CAACM,GAAG,CAAE/B,KAAK,IAAK;IAC3B,MAAMG,QAAQ,GAAG,CAACH,KAAK,CAACM,QAAQ,KAAIkB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEQ,QAAQ,CAAChC,KAAK,CAACF,EAAE,CAAC;IACtE,MAAMI,KAAK,GAAG/B,UAAU,GACpBgB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE8C,IAAI,CAAC,CAAC;MAAEb;IAAI,CAAC,KAAK;MAC1B,OAAOA,GAAG,KAAKpB,KAAK,CAAC4B,MAAM,CAACzD,UAAU,CAAC2B,EAAE,CAAC;IAC1C,CAAC,CAAC,GACFL,SAAS;IACb,MAAMyC,MAAM,GACVX,4BAA4B,KAAK,KAAK,GAClChE,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;MAAE+B;IAAO,CAAC;EACzD,CAAC,CAAC;AACJ,CAAC;AAED,MAAMJ,oBAAoB,GAAGA,CAC3BL,MAA2D,EAC3DU,YAAoC,KACjC;EACH,MAAMC,OAAO,GAAGX,MAAM,CAACE,MAAM,CAAE3B,KAAK,IAAKmC,YAAY,IAAInC,KAAK,CAAC4B,MAAM,CAAC,CAACG,GAAG,CAAE/B,KAAK,IAAKA,KAAK,CAAC4B,MAAM,CAACO,YAAY,CAAC,CAAC;EAEjH,OAAOV,MAAM,CACVM,GAAG,CAAE/B,KAAK,KAAM;IAAEA,KAAK;IAAEoB,GAAG,EAAEpB,KAAK,CAAC4B,MAAM,CAACO,YAAY;EAAE,CAAC,CAAC,CAAC,CAC5DR,MAAM,CAAC,CAAC;IAAEP;EAAI,CAAC,KAAKA,GAAG,IAAIgB,OAAO,CAACC,KAAK,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,UAAU,CAAC,GAAGnB,GAAG,GAAG,CAAC,CAAC,CAAC,CAC1EW,GAAG,CAAC,CAAC;IAAE/B;EAAM,CAAC,KAAKA,KAAK,CAAC;AAC9B,CAAC;AAED,OAAO,MAAMwC,qCAAqC,GAAGA,CACnD1C,EAAU,EACVvB,MAAc,EACdE,MAAc,EACdC,MAAiC,EACjCwB,KAAa,EACbF,KAAmC,KACX;EAAA,IAAAyC,qBAAA,EAAAC,WAAA,EAAAC,YAAA;EACxB,IAAIzC,KAAK,EAAE;IACT,OAAO;MAAE,GAAGtC,6BAA6B,CAACsC,KAAK,EAAE3B,MAAM,EAAEE,MAAM,CAAC;MAAEqB;IAAG,CAAC;EACxE;EACA,OAAO;IACLA,EAAE;IACFD,IAAI,GAAA4C,qBAAA,GAAEzC,KAAK,aAALA,KAAK,gBAAA0C,WAAA,GAAL1C,KAAK,CAAEH,IAAI,cAAA6C,WAAA,uBAAXA,WAAA,CAAaE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI3C,EAAE;IACzCgD,IAAI,GAAAH,YAAA,GAAE3C,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEH,IAAI,cAAA8C,YAAA,cAAAA,YAAA,GAAI7C,EAAE;IACvBoB,KAAK,EAAExC,MAAM,CAACqE,gBAAgB;IAC9BC,eAAe,EAAE;EACnB,CAAC;AACH,CAAC;;AAED;AACA;AACA,MAAMC,qCAAqC,GAAGA,CAC5CC,SAA8B,EAC9BhB,MAAuB,EACvBiB,QAAkB,KACf;EACH,MAAMC,SAAS,GAAGlB,MAAM,iBAAI7E,KAAA,CAAAgG,aAAA,CAAC/F,QAAQ;IAAC4E,MAAM,EAAEA;EAAO,CAAE,CAAC;EACxD,MAAMoB,QAAQ,GAAGJ,SAAS,CAACK,UAAU,IAAIL,SAAS,CAACK,UAAU,CAACC,MAAM,GAAG,CAAC;EACxE,MAAMvC,OAAO,GAAGiC,SAAS,CAACO,MAAM,IAAIP,SAAS,CAACO,MAAM,CAACD,MAAM,GAAG,CAAC;;EAE/D;EACA,IAAI,CAACF,QAAQ,IAAI,CAACrC,OAAO,EAAE;IACzBiC,SAAS,CAACQ,cAAc,GAAGN,SAAS;IACpCF,SAAS,CAACC,QAAQ,GAAGA,QAAQ;IAC7B,OAAOD,SAAS;EAClB;;EAEA;EACA,IAAIhB,MAAM,KAAK3E,cAAc,CAACkD,iBAAiB,IAAIyB,MAAM,KAAK3E,cAAc,CAACmD,KAAK,EAAE;IAClF;IACA;IACAwC,SAAS,CAACQ,cAAc,GAAGN,SAAS;IACpCH,qCAAqC,CAACC,SAAS,EAAEzD,SAAS,EAAE,IAAI,CAAC;EACnE,CAAC,MAAM;IAAA,IAAAkE,qBAAA;IACL,MAAMC,MAAM,IAAAD,qBAAA,GAAGT,SAAS,CAACK,UAAU,cAAAI,qBAAA,cAAAA,qBAAA,GAAIT,SAAS,CAACO,MAAM;IACvD;IACA;IACA,KAAK,MAAMI,eAAe,IAAID,MAAM,EAAE;MACpCX,qCAAqC,CAACY,eAAe,EAAE3B,MAAM,EAAE,IAAI,CAAC;IACtE;EACF;AACF,CAAC;AASD,OAAO,MAAM4B,iCAAiC,GAAGA,CAC/C3F,UAAwC,EACxCC,WAAoB,EACpBC,QAAiB,EACjBC,4BAAqC,EACrCgB,OAAkD,EAClDkC,cAAoC,EACpCjD,MAAc,EACdE,MAAc,EACdC,MAAiC,KACU;EAAA,IAAAqF,kBAAA,EAAAC,mBAAA;EAC3C,MAAMzC,4BAA4B,GAAGvD,2BAA2B,CAC9DG,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAE8F,MAAM,GAAAF,kBAAA,GAAE5F,UAAU,CAAC8F,MAAM,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBjE;EAAG,CAAC,GAAGL,SAAS,EACzElB,MACF,CAAC;EACD,MAAMC,MAAwC,GAC5C+C,4BAA4B,KAAK,KAAK,GAClC;IACA2C,IAAI,EAAExF,MAAM,CAACyF,yBAAyB;IACtCC,UAAU,EAAE5G;EACd,CAAC,GACCiC,SAAS;EACf,MAAM4E,UAAU,GAAG1G,YAAY,CAACc,MAAM,EAAE,MAAM,CAAC;EAC/C,MAAMS,IAAI,GAAGf,UAAU,GACnBD,iCAAiC,CACjCC,UAAU,EACVC,WAAW,EACXC,QAAQ,EACRC,4BAA4B,EAC5BC,MAAM,EACNC,MAAM,EACN6F,UAAU,EACV3F,MACF,CAAC,GACCW,gCAAgC,CAACC,OAAO,EAAEd,MAAM,EAAE6F,UAAU,EAAE3F,MAAM,CAAC;EACzE,MAAMuB,aAAa,GAAGnC,gBAAgB,CACpCK,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAE8F,MAAM,GAAAD,mBAAA,GAAE7F,UAAU,CAAC8F,MAAM,cAAAD,mBAAA,uBAAjBA,mBAAA,CAAmBlE;EAAG,CAAC,GAAGL,SAClE,CAAC;EACD,MAAM6E,mBAAmB,GAAGhD,sBAAsB,CAChDhC,OAAO,EACPW,aAAa,EACb9B,UAAU,EACVoD,4BAA4B,EAC5BC,cACF,CAAC;EAED,MAAM+B,UAAiC,GAAGe,mBAAmB,CAACvC,GAAG,CAAC,CAAC;IAAE7B,KAAK;IAAEF,KAAK;IAAEF,EAAE;IAAEK,QAAQ;IAAE+B;EAAO,CAAC,EAAEqC,KAAK,KAAK;IACnH,MAAMpB,QAAQ,GAAG,CAAChF,UAAU,IAAI,CAAC6B,KAAK,IAAIA,KAAK,CAACM,QAAQ,IAAI,CAACJ,KAAK;IAClE,MAAMgD,SAA8B,GAAG;MACrC,GAAGV,qCAAqC,CACtC1C,EAAE,EACFvB,MAAM,EACNZ,YAAY,CAACc,MAAM,EAAE,WAAW,EAAE,GAAG8F,KAAK,EAAE,CAAC,EAC7C7F,MAAM,EACNwB,KAAK,EACLF,KACF,CAAC;MACDG;IACF,CAAC;IAED8C,qCAAqC,CAACC,SAAS,EAAEhB,MAAM,EAAEiB,QAAQ,CAAC;IAClE,OAAOD,SAAS;EAClB,CAAC,CAAC;EACF,OAAO;IACLK,UAAU,EAAExF,cAAc,CAACwF,UAAU,CAAC;IACtCrE;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMsF,sCAAsC,GAAGA,CACpD1E,EAAU,EACVvB,MAAc,EACdE,MAAc,EACdC,MAAiC,EACjCwB,KAAa,EACbF,KAAmC,KACX;EACxB,MAAMkD,SAAS,GAAGV,qCAAqC,CAAC1C,EAAE,EAAEvB,MAAM,EAAEE,MAAM,EAAEC,MAAM,EAAEwB,KAAK,EAAEF,KAAK,CAAC;EACjG,IAAI,CAACE,KAAK,EAAE;IACV,OAAOgD,SAAS;EAClB;EACA,OAAO;IACL,GAAGA,SAAS;IACZQ,cAAc,EAAEhG;EAClB,CAAC;AACH,CAAC;AAED,OAAO,MAAM+G,kCAAkC,GAAGA,CAChDtG,UAA4B,EAC5BgC,QAAiB,EACjBb,OAAkD,EAClDf,MAAc,EACdE,MAAc,EACdC,MAAiC,KACU;EAAA,IAAAgG,mBAAA;EAC3C,MAAMnD,4BAA4B,GAAGvD,2BAA2B,CAC9DG,UAAU,GAAG;IAAE,GAAGA,UAAU;IAAE8F,MAAM,GAAAS,mBAAA,GAAEvG,UAAU,CAAC8F,MAAM,cAAAS,mBAAA,uBAAjBA,mBAAA,CAAmB5E;EAAG,CAAC,GAAGL,SAAS,EACzElB,MACF,CAAC;EACD,MAAMmF,cAAc,gBAAGrG,KAAA,CAAAgG,aAAA,CAAC/F,QAAQ;IAAC4E,MAAM,EAAE/B,QAAQ,GAAG5C,cAAc,CAACoH,aAAa,GAAGpH,cAAc,CAACmD;EAAM,CAAE,CAAC;EAC3G,MAAMlC,MAAwC,GAC5C+C,4BAA4B,KAAK,KAAK,GAClC;IACA2C,IAAI,EAAExF,MAAM,CAACyF,yBAAyB;IACtCC,UAAU,EAAE5G;EACd,CAAC,GACCiC,SAAS;EACf,MAAM;IAAEL,MAAM;IAAE,GAAGwF;EAAU,CAAC,GAAG/G,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;MACTgE,SAAS,EAAEM;IACb,CAAC;IACD,GAAGkB;EACL,CAAC;EACD,MAAMrB,UAAiC,GAAGjE,OAAO,CAACmC,MAAM,CAACM,GAAG,CAAE/B,KAAK,IAAK;IACtE,MAAME,KAAK,GAAGS,YAAY,CAACxC,UAAU,CAACgB,MAAM,CAAC,CAAC8C,IAAI,CAAC,CAAC;MAAEb;IAAI,CAAC,KAAK;MAC9D,OAAOA,GAAG,KAAKpB,KAAK,CAAC4B,MAAM,CAACzD,UAAU,CAAC2B,EAAE,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAMoD,SAAS,GAAGsB,sCAAsC,CAACxE,KAAK,CAACF,EAAE,EAAEvB,MAAM,EAAEE,MAAM,EAAEC,MAAM,EAAEwB,KAAK,EAAEF,KAAK,CAAC;IACxG,OAAO;MACL,GAAGkD,SAAS;MACZQ,cAAc,eACZrG,KAAA,CAAAgG,aAAA,CAAC/F,QAAQ;QAAC4E,MAAM,EAAElC,KAAK,CAACM,QAAQ,IAAI,CAACJ,KAAK,GAAG3C,cAAc,CAAC8C,QAAQ,GAAG9C,cAAc,CAACgD;MAAS,CAAE;IAErG,CAAC;EACH,CAAC,CAAC;EACF,OAAO;IACLgD,UAAU,EAAExF,cAAc,CAACwF,UAAU,CAAC;IACtCrE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["CredentialStateEnum","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","findClaimByPathParts","path","claims","length","first","second","rest","claim","find","c","key","dataType","Object","value","findClaimByPath","split","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","mdocMsoValidity","mdocMsoValidityIssue","nextUpdate","Date","cardHeaderFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","credentialDetailPrimary","issuanceDate","createdDate","credentialDetailSecondary","credentialDetailErrorColor","credentialDetailTestID","statusIcon","layoutProperties","suspendEndDate","suspendedUntil","suspended","revoked","validityIssues","primary","primaryAttribute","secondary","secondaryAttribute","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","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Array","isArray","attributes","nestedClaim","_formatDateLocalized","String","date","File","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","push","parent","a","insertAttributeInObject","join","nestAttributeInDummyObject","pathParts","disabled","object","_object$attributes","nextParent","_object$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n CredentialListItem,\n CredentialSchema,\n CredentialStateEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\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: CredentialListItem | undefined) => {\n if (credential?.state === CredentialStateEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (credential: CredentialListItem | undefined, config: Config | undefined) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nconst findClaimByPathParts = (path: string[], claims?: Claim[]): Claim | undefined => {\n if (!claims?.length) {\n return undefined;\n }\n const [first, second, ...rest] = path;\n const claim = claims.find((c) => c.key === first);\n if (claim === undefined || second === undefined || claim.dataType !== DataTypeEnum.Object) {\n return claim;\n }\n\n return findClaimByPathParts([`${first}/${second}`, ...rest], claim.value as Claim[]);\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[] | undefined) =>\n path ? findClaimByPathParts(path.split('/'), claims) : undefined;\n\nconst formatCredentialDetail = (claim: Claim, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): boolean => {\n const mdocMsoValidity: { nextUpdate: string } | undefined =\n 'mdocMsoValidity' in credential ? (credential.mdocMsoValidity as { nextUpdate: string }) : undefined;\n\n const mdocMsoValidityIssue = Boolean(\n mdocMsoValidity?.nextUpdate && new Date(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\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n\n let credentialDetailSecondary: string | undefined;\n let credentialDetailErrorColor: boolean | undefined;\n let credentialDetailTestID: string | undefined;\n let statusIcon;\n\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateEnum.SUSPENDED:\n credentialDetailPrimary = credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended;\n credentialDetailTestID = concatTestID(testID, 'suspended');\n statusIcon = CredentialWarningIcon;\n break;\n case CredentialStateEnum.REVOKED:\n credentialDetailPrimary = labels.revoked;\n credentialDetailErrorColor = true;\n credentialDetailTestID = concatTestID(testID, 'revoked');\n statusIcon = CredentialErrorIcon;\n break;\n default: {\n if (hasMsoValidityIssues(credential)) {\n credentialDetailPrimary = labels.validityIssues;\n credentialDetailTestID = concatTestID(testID, 'validity-issue');\n statusIcon = CredentialWarningIcon;\n } else {\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 credentialDetailTestID = concatTestID(testID, 'detail');\n }\n break;\n }\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: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style'> => {\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'> = {\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 = (claim: Claim, config: Config, testID: string): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.id,\n name: claim.key.split('/').pop(),\n path: claim.key,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.dataType];\n\n if (claim.array) {\n return {\n values: (claim.value || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(\n {\n ...arrayValue,\n id: `${arrayValue.id}/${index}`,\n },\n config,\n concatTestID(testID, index.toString()),\n );\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (!Array.isArray(claim.value)) {\n return { attributes: [] };\n }\n return {\n attributes: (claim.value as Claim[]).map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value) };\n }\n const date = claim.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.File: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.value) };\n }\n }\n};\n\nexport const detailsCardFromCredential = (\n credential: CredentialDetail,\n config: Config,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetail,\n claims: Claim[],\n config: Config,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\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 insertAttributeInObject({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyObject(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 nestAttributeInDummyObject = (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 return {\n attributes: [nestAttributeInDummyObject({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: attribute.path,\n };\n};\n\n// Recursively insert an attribute into an object\n// Will create nested objects if necessary\nconst insertAttributeInObject = (attribute: CredentialAttribute, object: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = object.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n object.attributes?.push(nestAttributeInDummyObject(attribute));\n } else {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchema) {\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":["CredentialStateEnum","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","findClaimByPathParts","path","claims","length","first","second","rest","claim","find","c","key","dataType","Object","value","findClaimByPath","split","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","mdocMsoValidity","mdocMsoValidityIssue","nextUpdate","Date","cardHeaderFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","credentialDetailPrimary","issuanceDate","createdDate","credentialDetailSecondary","credentialDetailErrorColor","credentialDetailTestID","statusIcon","layoutProperties","suspendEndDate","suspendedUntil","suspended","revoked","validityIssues","primary","primaryAttribute","secondary","secondaryAttribute","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","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Array","isArray","attributes","nestedClaim","_formatDateLocalized","String","date","File","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","push","parent","a","insertAttributeInObject","join","nestAttributeInDummyObject","pathParts","disabled","object","_object$attributes","nextParent","_object$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n CredentialListItem,\n CredentialSchema,\n CredentialStateEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\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: CredentialListItem | undefined) => {\n if (credential?.state === CredentialStateEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (credential: CredentialListItem | undefined, config: Config | undefined) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nconst findClaimByPathParts = (path: string[], claims?: Claim[]): Claim | undefined => {\n if (!claims?.length) {\n return undefined;\n }\n const [first, second, ...rest] = path;\n const claim = claims.find((c) => c.key === first);\n if (claim === undefined || second === undefined || claim.dataType !== DataTypeEnum.Object) {\n return claim;\n }\n\n return findClaimByPathParts([`${first}/${second}`, ...rest], claim.value as Claim[]);\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[] | undefined) =>\n path ? findClaimByPathParts(path.split('/'), claims) : undefined;\n\nconst formatCredentialDetail = (claim: Claim, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): boolean => {\n const mdocMsoValidity: { nextUpdate: string } | undefined =\n 'mdocMsoValidity' in credential ? (credential.mdocMsoValidity as { nextUpdate: string }) : undefined;\n\n const mdocMsoValidityIssue = Boolean(\n mdocMsoValidity?.nextUpdate && new Date(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\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n\n let credentialDetailSecondary: string | undefined;\n let credentialDetailErrorColor: boolean | undefined;\n let credentialDetailTestID: string | undefined;\n let statusIcon;\n\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateEnum.SUSPENDED:\n credentialDetailPrimary = credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended;\n credentialDetailTestID = concatTestID(testID, 'suspended');\n statusIcon = CredentialWarningIcon;\n break;\n case CredentialStateEnum.REVOKED:\n credentialDetailPrimary = labels.revoked;\n credentialDetailErrorColor = true;\n credentialDetailTestID = concatTestID(testID, 'revoked');\n statusIcon = CredentialErrorIcon;\n break;\n default: {\n if (hasMsoValidityIssues(credential)) {\n credentialDetailPrimary = labels.validityIssues;\n credentialDetailTestID = concatTestID(testID, 'validity-issue');\n statusIcon = CredentialWarningIcon;\n } else {\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 credentialDetailTestID = concatTestID(testID, 'detail');\n }\n break;\n }\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: CredentialDetail,\n claims: Claim[] = [],\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 = (claim: Claim, config: Config, testID: string): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.id,\n name: claim.key.split('/').pop(),\n path: claim.key,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.dataType];\n\n if (claim.array) {\n return {\n values: (claim.value || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(\n {\n ...arrayValue,\n id: `${arrayValue.id}/${index}`,\n },\n config,\n concatTestID(testID, index.toString()),\n );\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (!Array.isArray(claim.value)) {\n return { attributes: [] };\n }\n return {\n attributes: (claim.value as Claim[]).map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value) };\n }\n const date = claim.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.File: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.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: 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: CredentialDetail,\n claims: Claim[],\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 insertAttributeInObject({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyObject(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 nestAttributeInDummyObject = (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 return {\n attributes: [nestAttributeInDummyObject({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: attribute.path,\n };\n};\n\n// Recursively insert an attribute into an object\n// Will create nested objects if necessary\nconst insertAttributeInObject = (attribute: CredentialAttribute, object: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = object.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n object.attributes?.push(nestAttributeInDummyObject(attribute));\n } else {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchema) {\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,17 +1,16 @@
1
- import { CredentialListItem, PresentationDefinitionField, PresentationDefinitionRequestedCredential } from '@procivis/react-native-one-core';
1
+ import { CredentialDetail, CredentialListItem, PresentationDefinitionField, PresentationDefinitionRequestedCredential } from '@procivis/react-native-one-core';
2
2
  import { FunctionComponent } from 'react';
3
3
  import { ImageSourcePropType, StyleProp, ViewStyle } from 'react-native';
4
4
  import { ShareCredentialCardLabels } from '../../utils/parsers/credential-sharing';
5
5
  export type ShareCredentialLabels = ShareCredentialCardLabels & {
6
- revokedCredentialNotice: string;
7
- suspendedCredentialNotice: string;
8
6
  invalidCredentialNotice: string;
9
7
  multipleCredentialsNotice: string;
10
8
  multipleCredentialsSelect: string;
9
+ revokedCredentialNotice: string;
10
+ suspendedCredentialNotice: string;
11
11
  };
12
12
  export declare const ShareCredential: FunctionComponent<{
13
- allCredentials: CredentialListItem[];
14
- credentialId: string;
13
+ allCredentials: CredentialDetail[];
15
14
  expanded?: boolean;
16
15
  labels: ShareCredentialLabels;
17
16
  lastItem?: boolean;
@@ -20,6 +20,7 @@ export type CredentialCardProps = {
20
20
  onHeaderPress?: (credentialId?: string) => void;
21
21
  style?: StyleProp<ViewStyle>;
22
22
  testID?: string;
23
+ width: number;
23
24
  };
24
25
  declare const CredentialCard: FC<CredentialCardProps>;
25
26
  export default CredentialCard;
@@ -2,7 +2,7 @@ import { FC, ReactNode } from 'react';
2
2
  import { StyleProp, ViewProps, ViewStyle } from 'react-native';
3
3
  export interface HeaderProps extends ViewProps {
4
4
  onBack?: () => void;
5
- rightButton?: ReactNode;
5
+ rightButtons?: ReactNode[];
6
6
  style?: StyleProp<ViewStyle>;
7
7
  titleRowStyle?: StyleProp<ViewStyle>;
8
8
  title: ReactNode;
@@ -12,3 +12,7 @@ export declare const LinkIcon: FC<SvgProps>;
12
12
  export declare const ImportIcon: FC<SvgProps>;
13
13
  export declare const FilterIcon: FC<SvgProps>;
14
14
  export declare const PlusIcon: FC<SvgProps>;
15
+ export declare const WalletUnitAttestationIcon: FC<SvgProps>;
16
+ export declare const StatusErrorIcon: FC<SvgProps>;
17
+ export declare const StatusSuccessIcon: FC<SvgProps>;
18
+ export declare const StatusWarningIcon: FC<SvgProps>;
@@ -2,9 +2,9 @@ import React, { ReactNode } from 'react';
2
2
  import { SearchBarProps } from './search-bar';
3
3
  export type AnimatedSearchBarProps = {
4
4
  collapsed: boolean;
5
- rightButton?: ReactNode;
5
+ rightButtons?: ReactNode[];
6
6
  rightButtonAlwaysVisible?: boolean;
7
7
  searchBarProps: SearchBarProps;
8
8
  };
9
- declare const AnimatedSearchBar: ({ collapsed, rightButtonAlwaysVisible, searchBarProps, rightButton, }: AnimatedSearchBarProps) => React.JSX.Element;
9
+ declare const AnimatedSearchBar: ({ collapsed, rightButtonAlwaysVisible, searchBarProps, rightButtons, }: AnimatedSearchBarProps) => React.JSX.Element;
10
10
  export default AnimatedSearchBar;
@@ -15,4 +15,4 @@ export declare const useRollbackImport: () => import("react-query").UseMutationR
15
15
  * @param {IdentifiersInitializationConfig} config Select desired keys/dids to be restored/created
16
16
  * @returns [hwIdentifierId, swIdentifierId]
17
17
  */
18
- export declare const useBackupFinalizeImportProcedure: ({ generateHwKey, generateSwKey }: IdentifiersInitializationConfig) => () => Promise<[string | null, string | undefined]>;
18
+ export declare const useBackupFinalizeImportProcedure: ({ generateHwKey, generateSwKey, generateAttestationKey: shouldGenerateAttestationKey, }: IdentifiersInitializationConfig) => () => Promise<[string | null, string | undefined, string | null]>;
@@ -1,15 +1,18 @@
1
1
  import { ONECore } from '@procivis/react-native-one-core';
2
2
  export declare const SW_DID_NAME_PREFIX = "holder-did-sw-key";
3
3
  export declare const HW_DID_NAME_PREFIX = "holder-did-hw-key";
4
+ export declare const ATTESTATION_DID_NAME_PREFIX = "holder-did-attestation-key";
4
5
  export declare const generateHwIdentifier: (core: ONECore, organisationId: string) => Promise<string | null>;
5
6
  export declare const generateSwIdentifier: (core: ONECore, organisationId: string) => Promise<string>;
7
+ export declare const generateAttestationKey: (core: ONECore, organisationId: string) => Promise<string | null>;
6
8
  export interface IdentifiersInitializationConfig {
7
9
  generateHwKey: boolean;
8
10
  generateSwKey: boolean;
11
+ generateAttestationKey: boolean;
9
12
  }
10
13
  /**
11
14
  * Create base local identifiers
12
15
  * @param {IdentifiersInitializationConfig} config Select desired keys/dids to be created
13
16
  * @returns [hwIdentifierId, swIdentifierId]
14
17
  */
15
- export declare const useInitializeONECoreIdentifiers: ({ generateHwKey, generateSwKey }: IdentifiersInitializationConfig) => () => Promise<[string | null, string | null]>;
18
+ export declare const useInitializeONECoreIdentifiers: ({ generateHwKey, generateSwKey, generateAttestationKey: shouldGenerateAttestationKey, }: IdentifiersInitializationConfig) => () => Promise<[string | null, string | null, string | null]>;
@@ -1,15 +1,11 @@
1
- import { CredentialListQuery, InitiateIssuanceRequest, InvitationResult } from '@procivis/react-native-one-core';
2
- import { Transport } from '../connectivity/connectivity';
1
+ import { CredentialListQuery, HandleInvitationRequest, InitiateIssuanceRequest, InvitationResult } from '@procivis/react-native-one-core';
3
2
  export declare const CREDENTIAL_LIST_QUERY_KEY = "credential-list";
4
3
  export declare const CREDENTIAL_LIST_PAGED_QUERY_KEY = "credential-list-paged";
5
4
  export declare const CREDENTIAL_DETAIL_QUERY_KEY = "credential-detail";
6
5
  export declare const useCredentials: (queryParams?: Partial<CredentialListQuery>) => import("react-query").UseQueryResult<import("@procivis/react-native-one-core").CredentialListItem[], unknown>;
7
6
  export declare const usePagedCredentials: (queryParams?: Partial<CredentialListQuery>) => import("react-query").UseInfiniteQueryResult<import("@procivis/react-native-one-core").ItemList<import("@procivis/react-native-one-core").CredentialListItem>, unknown>;
8
7
  export declare const useCredentialDetail: (credentialId: string | undefined, active?: boolean) => import("react-query").UseQueryResult<import("@procivis/react-native-one-core").CredentialDetail | undefined, unknown>;
9
- export declare const useInvitationHandler: () => import("react-query").UseMutationResult<InvitationResult, unknown, {
10
- invitationUrl: string;
11
- transport: Transport;
12
- }, unknown>;
8
+ export declare const useInvitationHandler: () => import("react-query").UseMutationResult<InvitationResult, unknown, Omit<HandleInvitationRequest, "organisationId">, unknown>;
13
9
  export declare const useCredentialAccept: () => import("react-query").UseMutationResult<void, unknown, {
14
10
  didId?: string | undefined;
15
11
  identifierId?: string | undefined;
@@ -1,9 +1,9 @@
1
1
  import { Claim, Config, CredentialDetail, PresentationDefinitionField, PresentationDefinitionRequestedCredential } from '@procivis/react-native-one-core';
2
- import { CredentialAttribute, CredentialCardProps, CredentialDetailsCardProps } from '../../ui-components/credential';
2
+ import { CredentialAttribute, CredentialCardProps } from '../../ui-components/credential';
3
3
  import { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';
4
- import { CardLabels } from './credential';
5
- export declare const validityCheckedCardFromCredential: (credential: CredentialDetail, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID'>;
6
- export declare const missingCredentialCardFromRequest: (request: PresentationDefinitionRequestedCredential, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style'>;
4
+ import { CardLabels, CredentialDetailsCardPropsWithoutWidth } from './credential';
5
+ export declare const validityCheckedCardFromCredential: (credential: CredentialDetail, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'>;
6
+ export declare const missingCredentialCardFromRequest: (request: PresentationDefinitionRequestedCredential, notice: CredentialCardNotice | undefined, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'>;
7
7
  export declare const shareCredentialCardAttributeFromClaim: (id: string, config: Config, testID: string, labels: ShareCredentialCardLabels, claim?: Claim, field?: PresentationDefinitionField) => CredentialAttribute;
8
8
  export type ShareCredentialCardLabels = CardLabels & {
9
9
  selectiveDisclosureNotice: string;
@@ -11,6 +11,6 @@ export type ShareCredentialCardLabels = CardLabels & {
11
11
  missingCredential: string;
12
12
  multipleCredentials: string;
13
13
  };
14
- export declare const shareCredentialCardFromCredential: (credential: CredentialDetail | undefined, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, request: PresentationDefinitionRequestedCredential, selectedFields: string[] | undefined, config: Config, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialDetailsCardProps, 'expanded'>;
14
+ export declare const shareCredentialCardFromCredential: (credential: CredentialDetail | undefined, invalidLVVC: boolean, expanded: boolean, multipleCredentialsAvailable: boolean, request: PresentationDefinitionRequestedCredential, selectedFields: string[] | undefined, config: Config, testID: string, labels: ShareCredentialCardLabels) => CredentialDetailsCardPropsWithoutWidth;
15
15
  export declare const selectCredentialCardAttributeFromClaim: (id: string, config: Config, testID: string, labels: ShareCredentialCardLabels, claim?: Claim, field?: PresentationDefinitionField) => CredentialAttribute;
16
- export declare const selectCredentialCardFromCredential: (credential: CredentialDetail, selected: boolean, request: PresentationDefinitionRequestedCredential, config: Config, testID: string, labels: ShareCredentialCardLabels) => Omit<CredentialDetailsCardProps, 'expanded'>;
16
+ export declare const selectCredentialCardFromCredential: (credential: CredentialDetail, selected: boolean, request: PresentationDefinitionRequestedCredential, config: Config, testID: string, labels: ShareCredentialCardLabels) => CredentialDetailsCardPropsWithoutWidth;
@@ -41,10 +41,13 @@ export declare const cardHeaderFromCredential: (credential: CredentialDetail, cl
41
41
  export type CardLabels = CardHeaderLabels & {
42
42
  validityIssuesNotice: string;
43
43
  };
44
- export declare const getCredentialCardPropsFromCredential: (credential: CredentialDetail, claims: Claim[] | undefined, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: CardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style'>;
44
+ export declare const getCredentialCardPropsFromCredential: (credential: CredentialDetail, claims: Claim[] | undefined, config: Config, notice: CredentialCardNotice | undefined, testID: string, labels: CardLabels) => Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'>;
45
45
  export declare const detailsCardAttributeFromClaim: (claim: Claim, config: Config, testID: string) => CredentialAttribute;
46
- export declare const detailsCardFromCredential: (credential: CredentialDetail, config: Config, testID: string, labels: CardLabels) => Omit<CredentialDetailsCardProps, 'expanded'>;
47
- export declare const detailsCardFromCredentialWithClaims: (credential: CredentialDetail, claims: Claim[], config: Config, testID: string, labels: CardLabels) => Omit<CredentialDetailsCardProps, 'expanded'>;
46
+ export type CredentialDetailsCardPropsWithoutWidth = Omit<CredentialDetailsCardProps, 'expanded' | 'card'> & {
47
+ card: Omit<CredentialCardProps, 'width'>;
48
+ };
49
+ export declare const detailsCardFromCredential: (credential: CredentialDetail, config: Config, testID: string, labels: CardLabels) => CredentialDetailsCardPropsWithoutWidth;
50
+ export declare const detailsCardFromCredentialWithClaims: (credential: CredentialDetail, claims: Claim[], config: Config, testID: string, labels: CardLabels) => CredentialDetailsCardPropsWithoutWidth;
48
51
  export declare const nestAttributes: (attributes: CredentialAttribute[]) => CredentialAttribute[];
49
52
  export declare function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchema): {
50
53
  layoutProperties: {