@procivis/one-react-native-components 0.3.99 → 0.3.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/history/history-list-item-icon.js +5 -3
- package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
- package/lib/commonjs/components/history/history-list-screen.js +1 -0
- package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
- package/lib/commonjs/components/proof-request/v1/share-credential.js +2 -14
- package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/connectivity-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/connectivity-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/filter-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/filter-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/ghost-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/ghost-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/hold-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/scan-button.js +3 -0
- package/lib/commonjs/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/share-button.js +1 -0
- package/lib/commonjs/ui-components/buttons/share-button.js.map +1 -1
- package/lib/commonjs/ui-components/control/checkbox.js +1 -0
- package/lib/commonjs/ui-components/control/checkbox.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-card.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-header.js +1 -0
- package/lib/commonjs/ui-components/credential/card/credential-header.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js +2 -0
- package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js +1 -0
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js +2 -1
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/commonjs/ui-components/credential/selector.js +1 -0
- package/lib/commonjs/ui-components/credential/selector.js.map +1 -1
- package/lib/commonjs/ui-components/entity/avatar.js +1 -0
- package/lib/commonjs/ui-components/entity/avatar.js.map +1 -1
- package/lib/commonjs/ui-components/header/foldable-header.js +26 -16
- package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
- package/lib/commonjs/ui-components/header/navigation-header.js +1 -0
- package/lib/commonjs/ui-components/header/navigation-header.js.map +1 -1
- package/lib/commonjs/ui-components/history/history-details.js +3 -1
- package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
- package/lib/commonjs/ui-components/icons/history.js +1 -0
- package/lib/commonjs/ui-components/icons/history.js.map +1 -1
- package/lib/commonjs/ui-components/index.js +11 -0
- package/lib/commonjs/ui-components/index.js.map +1 -1
- package/lib/commonjs/ui-components/notice/index.js +14 -0
- package/lib/commonjs/ui-components/notice/index.js.map +1 -0
- package/lib/commonjs/ui-components/notice/wallet-notice.js +80 -0
- package/lib/commonjs/ui-components/notice/wallet-notice.js.map +1 -0
- package/lib/commonjs/ui-components/pin/keypad.js +1 -0
- package/lib/commonjs/ui-components/pin/keypad.js.map +1 -1
- package/lib/commonjs/ui-components/pin/pins.js +1 -0
- package/lib/commonjs/ui-components/pin/pins.js.map +1 -1
- package/lib/commonjs/ui-components/settings/setting-item.js +1 -0
- package/lib/commonjs/ui-components/settings/setting-item.js.map +1 -1
- package/lib/commonjs/ui-components/settings/settings-button.js +1 -0
- package/lib/commonjs/ui-components/settings/settings-button.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/proofs.js +12 -2
- package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-images.js +1 -1
- package/lib/commonjs/utils/parsers/credential-images.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing.js +4 -10
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/module/components/history/history-list-item-icon.js +5 -3
- package/lib/module/components/history/history-list-item-icon.js.map +1 -1
- package/lib/module/components/history/history-list-screen.js +1 -0
- package/lib/module/components/history/history-list-screen.js.map +1 -1
- package/lib/module/components/proof-request/v1/share-credential.js +2 -14
- package/lib/module/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2.js +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/module/ui-components/buttons/connectivity-button.js +1 -0
- package/lib/module/ui-components/buttons/connectivity-button.js.map +1 -1
- package/lib/module/ui-components/buttons/filter-button.js +1 -0
- package/lib/module/ui-components/buttons/filter-button.js.map +1 -1
- package/lib/module/ui-components/buttons/ghost-button.js +1 -0
- package/lib/module/ui-components/buttons/ghost-button.js.map +1 -1
- package/lib/module/ui-components/buttons/hold-button.js +1 -0
- package/lib/module/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/module/ui-components/buttons/scan-button.js +3 -0
- package/lib/module/ui-components/buttons/scan-button.js.map +1 -1
- package/lib/module/ui-components/buttons/share-button.js +1 -0
- package/lib/module/ui-components/buttons/share-button.js.map +1 -1
- package/lib/module/ui-components/control/checkbox.js +1 -0
- package/lib/module/ui-components/control/checkbox.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-card.js +1 -0
- package/lib/module/ui-components/credential/card/credential-card.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-list-item.js +1 -0
- package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-header.js +1 -0
- package/lib/module/ui-components/credential/card/credential-header.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-image-carousel.js +2 -0
- package/lib/module/ui-components/credential/card/credential-image-carousel.js.map +1 -1
- package/lib/module/ui-components/credential/credential-attribute-item.js +1 -0
- package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/module/ui-components/credential/credential-carousel-images.js +2 -1
- package/lib/module/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/module/ui-components/credential/selector.js +1 -0
- package/lib/module/ui-components/credential/selector.js.map +1 -1
- package/lib/module/ui-components/entity/avatar.js +1 -0
- package/lib/module/ui-components/entity/avatar.js.map +1 -1
- package/lib/module/ui-components/header/foldable-header.js +26 -16
- package/lib/module/ui-components/header/foldable-header.js.map +1 -1
- package/lib/module/ui-components/header/navigation-header.js +1 -0
- package/lib/module/ui-components/header/navigation-header.js.map +1 -1
- package/lib/module/ui-components/history/history-details.js +3 -1
- package/lib/module/ui-components/history/history-details.js.map +1 -1
- package/lib/module/ui-components/icons/history.js +1 -0
- package/lib/module/ui-components/icons/history.js.map +1 -1
- package/lib/module/ui-components/index.js +1 -0
- package/lib/module/ui-components/index.js.map +1 -1
- package/lib/module/ui-components/notice/index.js +3 -0
- package/lib/module/ui-components/notice/index.js.map +1 -0
- package/lib/module/ui-components/notice/wallet-notice.js +72 -0
- package/lib/module/ui-components/notice/wallet-notice.js.map +1 -0
- package/lib/module/ui-components/pin/keypad.js +1 -0
- package/lib/module/ui-components/pin/keypad.js.map +1 -1
- package/lib/module/ui-components/pin/pins.js +1 -0
- package/lib/module/ui-components/pin/pins.js.map +1 -1
- package/lib/module/ui-components/settings/setting-item.js +1 -0
- package/lib/module/ui-components/settings/setting-item.js.map +1 -1
- package/lib/module/ui-components/settings/settings-button.js +1 -0
- package/lib/module/ui-components/settings/settings-button.js.map +1 -1
- package/lib/module/utils/hooks/core/proofs.js +12 -2
- package/lib/module/utils/hooks/core/proofs.js.map +1 -1
- package/lib/module/utils/parsers/credential-images.js +1 -1
- package/lib/module/utils/parsers/credential-images.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing.js +4 -10
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/typescript/ui-components/index.d.ts +1 -0
- package/lib/typescript/ui-components/notice/index.d.ts +2 -0
- package/lib/typescript/ui-components/notice/wallet-notice.d.ts +11 -0
- package/lib/typescript/utils/hooks/core/proofs.d.ts +5 -3
- package/lib/typescript/utils/parsers/credential-sharing.d.ts +2 -2
- package/lib/typescript/utils/parsers/credential.d.ts +2 -29
- package/package.json +3 -3
- package/src/components/history/history-list-item-icon.tsx +4 -2
- package/src/components/history/history-list-screen.tsx +1 -0
- package/src/components/proof-request/v1/share-credential.tsx +1 -18
- package/src/components/proof-request/v2/share-credential-v2-group.tsx +1 -0
- package/src/components/proof-request/v2/share-credential-v2.tsx +1 -0
- package/src/ui-components/buttons/connectivity-button.tsx +1 -0
- package/src/ui-components/buttons/filter-button.tsx +1 -0
- package/src/ui-components/buttons/ghost-button.tsx +1 -0
- package/src/ui-components/buttons/hold-button.tsx +1 -0
- package/src/ui-components/buttons/scan-button.tsx +3 -0
- package/src/ui-components/buttons/share-button.tsx +1 -0
- package/src/ui-components/control/checkbox.tsx +1 -0
- package/src/ui-components/credential/card/credential-card.tsx +1 -0
- package/src/ui-components/credential/card/credential-details-card.tsx +2 -0
- package/src/ui-components/credential/card/credential-details-list-item.tsx +1 -0
- package/src/ui-components/credential/card/credential-header.tsx +1 -0
- package/src/ui-components/credential/card/credential-image-carousel.tsx +2 -2
- package/src/ui-components/credential/credential-attribute-item.tsx +1 -0
- package/src/ui-components/credential/credential-carousel-images.tsx +1 -0
- package/src/ui-components/credential/selector.tsx +1 -0
- package/src/ui-components/entity/avatar.tsx +1 -0
- package/src/ui-components/header/foldable-header.tsx +27 -20
- package/src/ui-components/header/navigation-header.tsx +1 -0
- package/src/ui-components/history/history-details.tsx +2 -0
- package/src/ui-components/icons/history.tsx +1 -0
- package/src/ui-components/index.ts +1 -0
- package/src/ui-components/notice/index.ts +3 -0
- package/src/ui-components/notice/wallet-notice.tsx +82 -0
- package/src/ui-components/pin/keypad.tsx +1 -0
- package/src/ui-components/pin/pins.tsx +1 -0
- package/src/ui-components/settings/setting-item.tsx +1 -0
- package/src/ui-components/settings/settings-button.tsx +1 -0
- package/src/utils/hooks/core/proofs.ts +10 -2
- package/src/utils/parsers/credential-images.tsx +1 -1
- package/src/utils/parsers/credential-sharing-v2.tsx +0 -1
- package/src/utils/parsers/credential-sharing.tsx +1 -10
- package/src/utils/parsers/credential.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","StyleSheet","Animated","LinearTransition","BlurView","CredentialCardShadow","DownIcon","Selector","SelectorStatus","TouchableOpacity","UpIcon","CredentialGroupHeader","concatTestID","useCredentialListExpandedCard","GroupedShareCredentialV2Padding","ShareCredentialV2","multipleCredentialsSelected","selectedCredentials","credentialRequestId","Array","isArray","length","numberOfCardsForRequest","selection","heightForNumberOfCards","numberOfCards","ShareCredentialV2Group","labels","lastGroup","onGroupSelect","onImagePreview","onSelectCredential","onSelectField","presentationDefinition","requestGroup","selected","style","testID","valid","expandedCredential","onHeaderPress","reduce","acc","groupId","singleCredentialGroup","headerPressHandler","onNestedCardHeaderPress","credentialId","credentialCards","flatMap","credentialRequestIndex","credentialRequestsLength","lastQuery","credentialQuery","credentialQueries","credentialOrFailureHint","defaultSelection","type_","_credentialQuery$appl","applicableCredentials","id","userSelections","request","credentialSelections","credentialRequest","credentialIndex","credentialsLength","selectedFields","cardId","lastItem","cardExpanded","headerAccessory","createElement","status","SelectedRadio","Empty","expanded","grouped","key","selectedCredentialId","styles","requestedCredential","requestedCredentialLast","groupHeaderAccessory","View","layout","animatedWrapper","height","undefined","groupedCredentialsWrapper","blurStyle","darkMode","absoluteFill","onPress","accessory","name","groupHeader","header","create","borderRadius","overflow","paddingBottom","marginBottom"],"sources":["share-credential-v2-group.tsx"],"sourcesContent":["import {\n CredentialListItemBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n PresentationDefinitionV2ResponseBindingDto,\n PresentationSubmitV2CredentialRequestBindingDto,\n} from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport {\n BlurView,\n CredentialCardShadow,\n DownIcon,\n Selector,\n SelectorStatus,\n TouchableOpacity,\n UpIcon,\n} from '../../../ui-components';\nimport CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';\nimport { concatTestID, useCredentialListExpandedCard } from '../../../utils';\nimport { ShareCredentialLabels } from '../v1/share-credential';\nimport { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';\n\nexport type CredentialQuerySelection = Record<\n string,\n PresentationSubmitV2CredentialRequestBindingDto | PresentationSubmitV2CredentialRequestBindingDto[]\n>;\n\nexport type ShareCredentialGroupLabels = ShareCredentialLabels & {\n groupHeader: string;\n};\n\nexport type ShareCredentialV2GroupProps = {\n labels: ShareCredentialGroupLabels;\n lastGroup: boolean;\n onGroupSelect?: (selected: boolean) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential: (requestCredentialId: string) => () => void;\n onSelectField: (\n requestCredentialId: string,\n ) => (\n credentialId: CredentialListItemBindingDto['id'],\n fieldPath: PresentationDefinitionV2ClaimBindingDto['path'],\n selected: boolean,\n ) => void;\n presentationDefinition: PresentationDefinitionV2ResponseBindingDto;\n requestGroup: string[];\n selected?: boolean;\n selectedCredentials?: CredentialQuerySelection;\n style?: StyleProp<ViewStyle>;\n testID: string;\n valid: boolean;\n};\n\nconst multipleCredentialsSelected = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n return (\n selectedCredentials &&\n selectedCredentials[credentialRequestId] &&\n Array.isArray(selectedCredentials[credentialRequestId]) &&\n (selectedCredentials[credentialRequestId] as PresentationSubmitV2CredentialRequestBindingDto[]).length > 1\n );\n};\n\nconst numberOfCardsForRequest = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {\n return 1;\n }\n const selection = selectedCredentials[credentialRequestId];\n if (Array.isArray(selection)) {\n return selection.length;\n }\n return 1;\n};\n\nconst heightForNumberOfCards = (numberOfCards: number) => 60 * (numberOfCards + 1) + 12 * numberOfCards;\n\nexport const ShareCredentialV2Group: FC<ShareCredentialV2GroupProps> = ({\n labels,\n lastGroup,\n onGroupSelect,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n presentationDefinition,\n requestGroup,\n selected,\n selectedCredentials = {},\n style,\n testID,\n valid,\n}) => {\n const { expandedCredential, onHeaderPress } = useCredentialListExpandedCard();\n const numberOfCards = requestGroup.reduce(\n (acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId),\n 0,\n );\n const singleCredentialGroup =\n requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);\n\n const headerPressHandler = useCallback(() => {\n onGroupSelect?.(!selected);\n }, [selected, onGroupSelect]);\n\n const onNestedCardHeaderPress = useCallback(\n (credentialId: string) => () => {\n if (!selected) {\n onGroupSelect?.(true);\n }\n onHeaderPress(credentialId);\n },\n [selected, onGroupSelect, onHeaderPress],\n );\n\n const credentialCards = useMemo(() => {\n return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, { length: credentialRequestsLength }) => {\n const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;\n\n const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId].credentialOrFailureHint;\n let defaultSelection: PresentationSubmitV2CredentialRequestBindingDto;\n if (credentialQuery.type_ === 'APPLICABLE_CREDENTIALS') {\n defaultSelection = credentialQuery.applicableCredentials?.[0]\n ? {\n credentialId: credentialQuery.applicableCredentials[0].id,\n userSelections: [],\n }\n : {\n credentialId: '',\n userSelections: [],\n };\n } else {\n defaultSelection = {\n credentialId: '',\n userSelections: [],\n };\n }\n const request = selectedCredentials[credentialRequestId];\n const credentialSelections = request ? (Array.isArray(request) ? request : [request]) : [defaultSelection];\n\n return credentialSelections?.flatMap((credentialRequest, credentialIndex, { length: credentialsLength }) => {\n const selectedFields = credentialRequest.userSelections;\n const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;\n const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;\n const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);\n const headerAccessory =\n singleCredentialGroup && valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : cardExpanded ? (\n UpIcon\n ) : (\n DownIcon\n );\n return (\n <ShareCredentialV2\n credentialQuery={credentialQuery}\n credentialRequestId={credentialRequestId}\n expanded={cardExpanded}\n grouped={!singleCredentialGroup}\n headerAccessory={headerAccessory}\n key={credentialRequestId}\n labels={labels}\n lastItem={lastItem}\n onHeaderPress={singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId)}\n onImagePreview={onImagePreview}\n onSelectCredential={onSelectCredential?.(credentialRequestId)}\n onSelectField={onSelectField(credentialRequestId)}\n selectedCredentialId={credentialRequest.credentialId}\n selectedFields={selectedFields}\n style={[!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast]}\n testID={concatTestID(testID, credentialRequestId)}\n />\n );\n });\n });\n }, [\n expandedCredential,\n labels,\n lastGroup,\n headerPressHandler,\n onImagePreview,\n onNestedCardHeaderPress,\n onSelectCredential,\n onSelectField,\n presentationDefinition.credentialQueries,\n requestGroup,\n selected,\n selectedCredentials,\n singleCredentialGroup,\n testID,\n valid,\n ]);\n\n if (singleCredentialGroup) {\n return credentialCards[0];\n }\n\n const groupHeaderAccessory = valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : selected ? (\n UpIcon\n ) : (\n DownIcon\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards),\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper,\n !singleCredentialGroup && styles.requestedCredential,\n lastGroup && styles.requestedCredentialLast,\n style,\n ]}>\n <BlurView blurStyle=\"strong\" darkMode={true} style={StyleSheet.absoluteFill} />\n <TouchableOpacity onPress={headerPressHandler}>\n <CredentialGroupHeader accessory={groupHeaderAccessory} name={labels.groupHeader} style={styles.header} />\n </TouchableOpacity>\n {credentialCards}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n groupedCredentialsWrapper: {\n borderRadius: 10 + GroupedShareCredentialV2Padding,\n overflow: 'hidden',\n paddingBottom: GroupedShareCredentialV2Padding,\n },\n header: {\n marginBottom: GroupedShareCredentialV2Padding,\n },\n requestedCredential: {\n marginBottom: 12,\n },\n requestedCredentialLast: {\n marginBottom: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","StyleSheet","Animated","LinearTransition","BlurView","CredentialCardShadow","DownIcon","Selector","SelectorStatus","TouchableOpacity","UpIcon","CredentialGroupHeader","concatTestID","useCredentialListExpandedCard","GroupedShareCredentialV2Padding","ShareCredentialV2","multipleCredentialsSelected","selectedCredentials","credentialRequestId","Array","isArray","length","numberOfCardsForRequest","selection","heightForNumberOfCards","numberOfCards","ShareCredentialV2Group","labels","lastGroup","onGroupSelect","onImagePreview","onSelectCredential","onSelectField","presentationDefinition","requestGroup","selected","style","testID","valid","expandedCredential","onHeaderPress","reduce","acc","groupId","singleCredentialGroup","headerPressHandler","onNestedCardHeaderPress","credentialId","credentialCards","flatMap","credentialRequestIndex","credentialRequestsLength","lastQuery","credentialQuery","credentialQueries","credentialOrFailureHint","defaultSelection","type_","_credentialQuery$appl","applicableCredentials","id","userSelections","request","credentialSelections","credentialRequest","credentialIndex","credentialsLength","selectedFields","cardId","lastItem","cardExpanded","headerAccessory","createElement","status","SelectedRadio","Empty","expanded","grouped","key","selectedCredentialId","styles","requestedCredential","requestedCredentialLast","groupHeaderAccessory","View","layout","animatedWrapper","height","undefined","groupedCredentialsWrapper","blurStyle","darkMode","absoluteFill","onPress","accessory","name","groupHeader","header","create","borderRadius","borderWidth","overflow","paddingBottom","marginBottom"],"sources":["share-credential-v2-group.tsx"],"sourcesContent":["import {\n CredentialListItemBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n PresentationDefinitionV2ResponseBindingDto,\n PresentationSubmitV2CredentialRequestBindingDto,\n} from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport {\n BlurView,\n CredentialCardShadow,\n DownIcon,\n Selector,\n SelectorStatus,\n TouchableOpacity,\n UpIcon,\n} from '../../../ui-components';\nimport CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';\nimport { concatTestID, useCredentialListExpandedCard } from '../../../utils';\nimport { ShareCredentialLabels } from '../v1/share-credential';\nimport { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';\n\nexport type CredentialQuerySelection = Record<\n string,\n PresentationSubmitV2CredentialRequestBindingDto | PresentationSubmitV2CredentialRequestBindingDto[]\n>;\n\nexport type ShareCredentialGroupLabels = ShareCredentialLabels & {\n groupHeader: string;\n};\n\nexport type ShareCredentialV2GroupProps = {\n labels: ShareCredentialGroupLabels;\n lastGroup: boolean;\n onGroupSelect?: (selected: boolean) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential: (requestCredentialId: string) => () => void;\n onSelectField: (\n requestCredentialId: string,\n ) => (\n credentialId: CredentialListItemBindingDto['id'],\n fieldPath: PresentationDefinitionV2ClaimBindingDto['path'],\n selected: boolean,\n ) => void;\n presentationDefinition: PresentationDefinitionV2ResponseBindingDto;\n requestGroup: string[];\n selected?: boolean;\n selectedCredentials?: CredentialQuerySelection;\n style?: StyleProp<ViewStyle>;\n testID: string;\n valid: boolean;\n};\n\nconst multipleCredentialsSelected = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n return (\n selectedCredentials &&\n selectedCredentials[credentialRequestId] &&\n Array.isArray(selectedCredentials[credentialRequestId]) &&\n (selectedCredentials[credentialRequestId] as PresentationSubmitV2CredentialRequestBindingDto[]).length > 1\n );\n};\n\nconst numberOfCardsForRequest = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {\n return 1;\n }\n const selection = selectedCredentials[credentialRequestId];\n if (Array.isArray(selection)) {\n return selection.length;\n }\n return 1;\n};\n\nconst heightForNumberOfCards = (numberOfCards: number) => 60 * (numberOfCards + 1) + 12 * numberOfCards;\n\nexport const ShareCredentialV2Group: FC<ShareCredentialV2GroupProps> = ({\n labels,\n lastGroup,\n onGroupSelect,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n presentationDefinition,\n requestGroup,\n selected,\n selectedCredentials = {},\n style,\n testID,\n valid,\n}) => {\n const { expandedCredential, onHeaderPress } = useCredentialListExpandedCard();\n const numberOfCards = requestGroup.reduce(\n (acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId),\n 0,\n );\n const singleCredentialGroup =\n requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);\n\n const headerPressHandler = useCallback(() => {\n onGroupSelect?.(!selected);\n }, [selected, onGroupSelect]);\n\n const onNestedCardHeaderPress = useCallback(\n (credentialId: string) => () => {\n if (!selected) {\n onGroupSelect?.(true);\n }\n onHeaderPress(credentialId);\n },\n [selected, onGroupSelect, onHeaderPress],\n );\n\n const credentialCards = useMemo(() => {\n return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, { length: credentialRequestsLength }) => {\n const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;\n\n const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId].credentialOrFailureHint;\n let defaultSelection: PresentationSubmitV2CredentialRequestBindingDto;\n if (credentialQuery.type_ === 'APPLICABLE_CREDENTIALS') {\n defaultSelection = credentialQuery.applicableCredentials?.[0]\n ? {\n credentialId: credentialQuery.applicableCredentials[0].id,\n userSelections: [],\n }\n : {\n credentialId: '',\n userSelections: [],\n };\n } else {\n defaultSelection = {\n credentialId: '',\n userSelections: [],\n };\n }\n const request = selectedCredentials[credentialRequestId];\n const credentialSelections = request ? (Array.isArray(request) ? request : [request]) : [defaultSelection];\n\n return credentialSelections?.flatMap((credentialRequest, credentialIndex, { length: credentialsLength }) => {\n const selectedFields = credentialRequest.userSelections;\n const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;\n const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;\n const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);\n const headerAccessory =\n singleCredentialGroup && valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : cardExpanded ? (\n UpIcon\n ) : (\n DownIcon\n );\n return (\n <ShareCredentialV2\n credentialQuery={credentialQuery}\n credentialRequestId={credentialRequestId}\n expanded={cardExpanded}\n grouped={!singleCredentialGroup}\n headerAccessory={headerAccessory}\n key={credentialRequestId}\n labels={labels}\n lastItem={lastItem}\n onHeaderPress={singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId)}\n onImagePreview={onImagePreview}\n onSelectCredential={onSelectCredential?.(credentialRequestId)}\n onSelectField={onSelectField(credentialRequestId)}\n selectedCredentialId={credentialRequest.credentialId}\n selectedFields={selectedFields}\n style={[!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast]}\n testID={concatTestID(testID, credentialRequestId)}\n />\n );\n });\n });\n }, [\n expandedCredential,\n labels,\n lastGroup,\n headerPressHandler,\n onImagePreview,\n onNestedCardHeaderPress,\n onSelectCredential,\n onSelectField,\n presentationDefinition.credentialQueries,\n requestGroup,\n selected,\n selectedCredentials,\n singleCredentialGroup,\n testID,\n valid,\n ]);\n\n if (singleCredentialGroup) {\n return credentialCards[0];\n }\n\n const groupHeaderAccessory = valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : selected ? (\n UpIcon\n ) : (\n DownIcon\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards),\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper,\n !singleCredentialGroup && styles.requestedCredential,\n lastGroup && styles.requestedCredentialLast,\n style,\n ]}>\n <BlurView blurStyle=\"strong\" darkMode={true} style={StyleSheet.absoluteFill} />\n <TouchableOpacity onPress={headerPressHandler}>\n <CredentialGroupHeader accessory={groupHeaderAccessory} name={labels.groupHeader} style={styles.header} />\n </TouchableOpacity>\n {credentialCards}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n groupedCredentialsWrapper: {\n borderRadius: 10 + GroupedShareCredentialV2Padding,\n borderWidth: 0,\n overflow: 'hidden',\n paddingBottom: GroupedShareCredentialV2Padding,\n },\n header: {\n marginBottom: GroupedShareCredentialV2Padding,\n },\n requestedCredential: {\n marginBottom: 12,\n },\n requestedCredentialLast: {\n marginBottom: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","getValidityState","useCoreConfig","ValidityState","shareCredentialCardFromV2PresentationCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","GroupedShareCredentialV2Padding","ShareCredentialV2","credentialQuery","credentialRequestId","expanded","grouped","headerAccessory","labels","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","selectedCredentialId","selectedFields","style","testID","_applicableCredential","_credential$issuer","colorScheme","applicableCredentials","type_","undefined","failureHint","credential","find","c","id","data","config","cardWidth","get","width","multipleCredentialsAvailable","Boolean","length","validityState","issuer","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","reason","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","onAttributeSelected","fieldPath","selected","card","header","attributes","accessory","credentialId","styles","groupedCredential","bordered","borderColor","background","create","borderWidth","borderRadius","marginBottom","marginHorizontal"],"sources":["share-credential-v2.tsx"],"sourcesContent":["import {\n ApplicableCredentialOrFailureHintBindingEnum,\n CredentialListItemBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';\nimport { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\nimport { ShareCredentialLabels } from '../v1';\n\nexport type ShareCredentialV2Props = {\n credentialQuery: ApplicableCredentialOrFailureHintBindingEnum;\n credentialRequestId: string;\n expanded?: boolean;\n grouped?: boolean;\n headerAccessory?: React.ComponentType<any> | React.ReactElement;\n labels: ShareCredentialLabels;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (\n credentialId: CredentialListItemBindingDto['id'],\n fieldPath: PresentationDefinitionV2ClaimBindingDto['path'],\n selected: boolean,\n ) => void;\n selectedCredentialId?: CredentialListItemBindingDto['id'];\n selectedFields?: Array<PresentationDefinitionV2ClaimBindingDto['path']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n};\n\nexport const GroupedShareCredentialV2Padding = 4;\n\nexport const ShareCredentialV2: FunctionComponent<ShareCredentialV2Props> = ({\n credentialQuery,\n credentialRequestId,\n expanded,\n grouped,\n headerAccessory,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const applicableCredentials =\n credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.applicableCredentials : undefined;\n const failureHint = credentialQuery.type_ === 'FAILURE_HINT' ? credentialQuery.failureHint : undefined;\n const credential = applicableCredentials?.find((c) => c.id === selectedCredentialId) ?? applicableCredentials?.[0];\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(\n () => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0),\n [grouped],\n );\n\n const multipleCredentialsAvailable = Boolean(applicableCredentials?.length && applicableCredentials.length > 1);\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n }\n : undefined,\n );\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (failureHint?.reason === 'VALIDITY') {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [\n expanded,\n failureHint?.reason,\n labels.invalidCredentialNotice,\n labels.multipleCredentialsNotice,\n labels.multipleCredentialsSelect,\n labels.revokedCredentialNotice,\n labels.suspendedCredentialNotice,\n multipleCredentialsAvailable,\n onSelectCredential,\n testID,\n validityState,\n ]);\n\n const onAttributeSelected = useCallback(\n (fieldPath: PresentationDefinitionV2ClaimBindingDto['path'], selected: boolean) => {\n if (!selectedCredentialId) {\n return;\n }\n onSelectField(selectedCredentialId, fieldPath, selected);\n },\n [onSelectField, selectedCredentialId],\n );\n\n if (!config) {\n return null;\n }\n\n const {\n card: { header, ...card },\n attributes,\n } = shareCredentialCardFromV2PresentationCredential(\n credential,\n failureHint,\n Boolean(expanded),\n multipleCredentialsAvailable,\n selectedFields,\n config,\n testID,\n labels,\n );\n\n if (headerAccessory) {\n header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: credentialRequestId,\n header,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onAttributeSelected}\n onImagePreview={onImagePreview}\n style={[\n styles.credential,\n grouped ? styles.groupedCredential : styles.bordered,\n { borderColor: colorScheme.background },\n style,\n ]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n bordered: {\n borderWidth: 1,\n },\n credential: {\n borderRadius: 10,\n marginBottom: 8,\n },\n groupedCredential: {\n marginHorizontal: GroupedShareCredentialV2Padding,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","getValidityState","useCoreConfig","ValidityState","shareCredentialCardFromV2PresentationCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","GroupedShareCredentialV2Padding","ShareCredentialV2","credentialQuery","credentialRequestId","expanded","grouped","headerAccessory","labels","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","selectedCredentialId","selectedFields","style","testID","_applicableCredential","_credential$issuer","colorScheme","applicableCredentials","type_","undefined","failureHint","credential","find","c","id","data","config","cardWidth","get","width","multipleCredentialsAvailable","Boolean","length","validityState","issuer","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","reason","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","onAttributeSelected","fieldPath","selected","card","header","attributes","accessory","credentialId","styles","groupedCredential","bordered","borderColor","background","create","borderWidth","borderRadius","marginBottom","marginHorizontal"],"sources":["share-credential-v2.tsx"],"sourcesContent":["import {\n ApplicableCredentialOrFailureHintBindingEnum,\n CredentialListItemBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';\nimport { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\nimport { ShareCredentialLabels } from '../v1';\n\nexport type ShareCredentialV2Props = {\n credentialQuery: ApplicableCredentialOrFailureHintBindingEnum;\n credentialRequestId: string;\n expanded?: boolean;\n grouped?: boolean;\n headerAccessory?: React.ComponentType<any> | React.ReactElement;\n labels: ShareCredentialLabels;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (\n credentialId: CredentialListItemBindingDto['id'],\n fieldPath: PresentationDefinitionV2ClaimBindingDto['path'],\n selected: boolean,\n ) => void;\n selectedCredentialId?: CredentialListItemBindingDto['id'];\n selectedFields?: Array<PresentationDefinitionV2ClaimBindingDto['path']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n};\n\nexport const GroupedShareCredentialV2Padding = 4;\n\nexport const ShareCredentialV2: FunctionComponent<ShareCredentialV2Props> = ({\n credentialQuery,\n credentialRequestId,\n expanded,\n grouped,\n headerAccessory,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const applicableCredentials =\n credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.applicableCredentials : undefined;\n const failureHint = credentialQuery.type_ === 'FAILURE_HINT' ? credentialQuery.failureHint : undefined;\n const credential = applicableCredentials?.find((c) => c.id === selectedCredentialId) ?? applicableCredentials?.[0];\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(\n () => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0),\n [grouped],\n );\n\n const multipleCredentialsAvailable = Boolean(applicableCredentials?.length && applicableCredentials.length > 1);\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n }\n : undefined,\n );\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (failureHint?.reason === 'VALIDITY') {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [\n expanded,\n failureHint?.reason,\n labels.invalidCredentialNotice,\n labels.multipleCredentialsNotice,\n labels.multipleCredentialsSelect,\n labels.revokedCredentialNotice,\n labels.suspendedCredentialNotice,\n multipleCredentialsAvailable,\n onSelectCredential,\n testID,\n validityState,\n ]);\n\n const onAttributeSelected = useCallback(\n (fieldPath: PresentationDefinitionV2ClaimBindingDto['path'], selected: boolean) => {\n if (!selectedCredentialId) {\n return;\n }\n onSelectField(selectedCredentialId, fieldPath, selected);\n },\n [onSelectField, selectedCredentialId],\n );\n\n if (!config) {\n return null;\n }\n\n const {\n card: { header, ...card },\n attributes,\n } = shareCredentialCardFromV2PresentationCredential(\n credential,\n failureHint,\n Boolean(expanded),\n multipleCredentialsAvailable,\n selectedFields,\n config,\n testID,\n labels,\n );\n\n if (headerAccessory) {\n header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: credentialRequestId,\n header,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onAttributeSelected}\n onImagePreview={onImagePreview}\n style={[\n styles.credential,\n grouped ? styles.groupedCredential : styles.bordered,\n { borderColor: colorScheme.background },\n style,\n ]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n bordered: {\n borderWidth: 1,\n },\n credential: {\n borderRadius: 10,\n borderWidth: 0,\n marginBottom: 8,\n },\n groupedCredential: {\n marginHorizontal: GroupedShareCredentialV2Padding,\n },\n});\n"],"mappings":"AAKA,OAAOA,KAAK,IAAuBC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACtE,SAASC,UAAU,EAAkCC,UAAU,QAAmB,cAAc;AAEhG,SAASC,6BAA6B,EAAEC,iBAAiB,QAAQ,wBAAwB;AACzF,SAASC,YAAY,EAAEC,gBAAgB,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAgB;AAC7F,SAASC,+CAA+C,QAAQ,8CAA8C;AAC9G,SAASC,+BAA+B,QAAQ,wCAAwC;AACxF,SAASC,yBAAyB,QAAQ,iCAAiC;AAyB3E,OAAO,MAAMC,+BAA+B,GAAG,CAAC;AAEhD,OAAO,MAAMC,iBAA4D,GAAGA,CAAC;EAC3EC,eAAe;EACfC,mBAAmB;EACnBC,QAAQ;EACRC,OAAO;EACPC,eAAe;EACfC,MAAM;EACNC,QAAQ;EACRC,aAAa;EACbC,cAAc;EACdC,kBAAkB;EAClBC,aAAa;EACbC,oBAAoB;EACpBC,cAAc;EACdC,KAAK;EACLC;AACF,CAAC,KAAK;EAAA,IAAAC,qBAAA,EAAAC,kBAAA;EACJ,MAAMC,WAAW,GAAG3B,iBAAiB,CAAC,CAAC;EACvC,MAAM4B,qBAAqB,GACzBlB,eAAe,CAACmB,KAAK,KAAK,wBAAwB,GAAGnB,eAAe,CAACkB,qBAAqB,GAAGE,SAAS;EACxG,MAAMC,WAAW,GAAGrB,eAAe,CAACmB,KAAK,KAAK,cAAc,GAAGnB,eAAe,CAACqB,WAAW,GAAGD,SAAS;EACtG,MAAME,UAAU,IAAAP,qBAAA,GAAGG,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEK,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKd,oBAAoB,CAAC,cAAAI,qBAAA,cAAAA,qBAAA,GAAIG,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAG,CAAC,CAAC;EAClH,MAAM;IAAEQ,IAAI,EAAEC;EAAO,CAAC,GAAGlC,aAAa,CAAC,CAAC;EACxC,MAAMmC,SAAS,GAAG1C,OAAO,CACvB,MAAMC,UAAU,CAAC0C,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,GAAG,EAAE,IAAI3B,OAAO,GAAGL,+BAA+B,GAAG,CAAC,GAAG,CAAC,CAAC,EAC/F,CAACK,OAAO,CACV,CAAC;EAED,MAAM4B,4BAA4B,GAAGC,OAAO,CAAC,CAAAd,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEe,MAAM,KAAIf,qBAAqB,CAACe,MAAM,GAAG,CAAC,CAAC;EAE/G,MAAMC,aAAa,GAAG1C,gBAAgB,CACpC8B,UAAU,GACN;IACE,GAAGA,UAAU;IACba,MAAM,EAAEb,UAAU,aAAVA,UAAU,gBAAAN,kBAAA,GAAVM,UAAU,CAAEa,MAAM,cAAAnB,kBAAA,uBAAlBA,kBAAA,CAAoBS;EAC9B,CAAC,GACDL,SACN,CAAC;EAED,MAAMgB,MAAM,GAAGlD,OAAO,CAAC,MAAM;IAC3B,IAAI,CAACgB,QAAQ,EAAE;MACb;IACF;IACA,IAAIgC,aAAa,KAAKxC,aAAa,CAAC2C,OAAO,EAAE;MAC3C,oBACErD,KAAA,CAAAsD,aAAA,CAACzC,yBAAyB;QACxBiB,MAAM,EAAEvB,YAAY,CAACuB,MAAM,EAAE,gBAAgB,CAAE;QAC/CyB,IAAI,EAAElC,MAAM,CAACmC;MAAwB,CACtC,CAAC;IAEN;IACA,IAAIN,aAAa,KAAKxC,aAAa,CAAC+C,SAAS,EAAE;MAC7C,oBACEzD,KAAA,CAAAsD,aAAA,CAACzC,yBAAyB;QACxBiB,MAAM,EAAEvB,YAAY,CAACuB,MAAM,EAAE,kBAAkB,CAAE;QACjDyB,IAAI,EAAElC,MAAM,CAACqC;MAA0B,CACxC,CAAC;IAEN;IAEA,IAAI,CAAArB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEsB,MAAM,MAAK,UAAU,EAAE;MACtC,oBACE3D,KAAA,CAAAsD,aAAA,CAACzC,yBAAyB;QACxBiB,MAAM,EAAEvB,YAAY,CAACuB,MAAM,EAAE,gBAAgB,CAAE;QAC/CyB,IAAI,EAAElC,MAAM,CAACuC;MAAwB,CACtC,CAAC;IAEN;IAEA,IAAIb,4BAA4B,EAAE;MAChC,oBACE/C,KAAA,CAAAsD,aAAA,CAAC1C,+BAA+B;QAC9BiD,WAAW,EAAExC,MAAM,CAACyC,yBAA0B;QAC9CC,OAAO,EAAEtC,kBAAmB;QAC5BK,MAAM,EAAEvB,YAAY,CAACuB,MAAM,EAAE,iBAAiB,CAAE;QAChDyB,IAAI,EAAElC,MAAM,CAAC2C;MAA0B,CACxC,CAAC;IAEN;EACF,CAAC,EAAE,CACD9C,QAAQ,EACRmB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEsB,MAAM,EACnBtC,MAAM,CAACuC,uBAAuB,EAC9BvC,MAAM,CAAC2C,yBAAyB,EAChC3C,MAAM,CAACyC,yBAAyB,EAChCzC,MAAM,CAACmC,uBAAuB,EAC9BnC,MAAM,CAACqC,yBAAyB,EAChCX,4BAA4B,EAC5BtB,kBAAkB,EAClBK,MAAM,EACNoB,aAAa,CACd,CAAC;EAEF,MAAMe,mBAAmB,GAAGhE,WAAW,CACrC,CAACiE,SAA0D,EAAEC,QAAiB,KAAK;IACjF,IAAI,CAACxC,oBAAoB,EAAE;MACzB;IACF;IACAD,aAAa,CAACC,oBAAoB,EAAEuC,SAAS,EAAEC,QAAQ,CAAC;EAC1D,CAAC,EACD,CAACzC,aAAa,EAAEC,oBAAoB,CACtC,CAAC;EAED,IAAI,CAACgB,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EAEA,MAAM;IACJyB,IAAI,EAAE;MAAEC,MAAM;MAAE,GAAGD;IAAK,CAAC;IACzBE;EACF,CAAC,GAAG3D,+CAA+C,CACjD2B,UAAU,EACVD,WAAW,EACXW,OAAO,CAAC9B,QAAQ,CAAC,EACjB6B,4BAA4B,EAC5BnB,cAAc,EACde,MAAM,EACNb,MAAM,EACNT,MACF,CAAC;EAED,IAAID,eAAe,EAAE;IACnBiD,MAAM,CAACE,SAAS,GAAGnD,eAAe;EACpC;EAEA,oBACEpB,KAAA,CAAAsD,aAAA,CAACjD,6BAA6B;IAC5BiE,UAAU,EAAEA,UAAW;IACvBF,IAAI,EAAE;MACJ,GAAGA,IAAI;MACPI,YAAY,EAAEvD,mBAAmB;MACjCoD,MAAM;MACN9C,aAAa;MACbuB,KAAK,EAAEF;IACT,CAAE;IACF1B,QAAQ,EAAEA,QAAS;IACnBkC,MAAM,EAAEA,MAAO;IACf9B,QAAQ,EAAEA,QAAS;IACnB2C,mBAAmB,EAAEA,mBAAoB;IACzCzC,cAAc,EAAEA,cAAe;IAC/BK,KAAK,EAAE,CACL4C,MAAM,CAACnC,UAAU,EACjBnB,OAAO,GAAGsD,MAAM,CAACC,iBAAiB,GAAGD,MAAM,CAACE,QAAQ,EACpD;MAAEC,WAAW,EAAE3C,WAAW,CAAC4C;IAAW,CAAC,EACvChD,KAAK,CACL;IACFC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAED,MAAM2C,MAAM,GAAGrE,UAAU,CAAC0E,MAAM,CAAC;EAC/BH,QAAQ,EAAE;IACRI,WAAW,EAAE;EACf,CAAC;EACDzC,UAAU,EAAE;IACV0C,YAAY,EAAE,EAAE;IAChBD,WAAW,EAAE,CAAC;IACdE,YAAY,EAAE;EAChB,CAAC;EACDP,iBAAiB,EAAE;IACjBQ,gBAAgB,EAAEpE;EACpB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","ConnectivityBluetoothOffIcon","ConnectivityBluetoothOnIcon","ConnectivityInternetOffIcon","ConnectivityInternetOnIcon","ConnectivityStatusIcon","Typography","useAppColorScheme","ConnectivityTransport","ConnectivityButton","available","disabled","onPress","status","title","transport","testID","colorScheme","backgroundColor","undefined","grayDark","white","opacity","icons","createElement","style","styles","Bluetooth","Internet","button","container","color","text","preset","create","borderRadius","overflow","alignItems","flexDirection","height","paddingHorizontal","paddingVertical","gap"],"sources":["connectivity-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport {\n ConnectivityBluetoothOffIcon,\n ConnectivityBluetoothOnIcon,\n ConnectivityInternetOffIcon,\n ConnectivityInternetOnIcon,\n ConnectivityStatusIcon,\n} from '../icons/connectivity';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport enum ConnectivityTransport {\n Internet = 'Internet',\n Bluetooth = 'Bluetooth',\n All = 'All',\n}\n\nexport type ConnectivityButtonProps = {\n available: boolean;\n disabled?: boolean;\n onPress?: () => void;\n status?: boolean;\n title?: string;\n transport: ConnectivityTransport;\n testID?: string;\n};\n\nconst ConnectivityButton: FC<ConnectivityButtonProps> = ({\n available,\n disabled,\n onPress,\n status,\n title,\n transport,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n const backgroundColor = status === undefined ? colorScheme.grayDark : colorScheme.white;\n const opacity = disabled ? 0.7 : 1.0;\n const icons = (\n <View style={styles.icons}>\n {transport !== ConnectivityTransport.Bluetooth &&\n (available ? (\n <ConnectivityInternetOnIcon testID={concatTestID(testID, 'icon.on')} />\n ) : (\n <ConnectivityInternetOffIcon testID={concatTestID(testID, 'icon.off')} />\n ))}\n {transport !== ConnectivityTransport.Internet &&\n (available ? (\n <ConnectivityBluetoothOnIcon testID={concatTestID(testID, 'icon.on')} />\n ) : (\n <ConnectivityBluetoothOffIcon testID={concatTestID(testID, 'icon.off')} />\n ))}\n </View>\n );\n return (\n <TouchableHighlight onPress={onPress} style={styles.button} testID={testID}>\n <View style={[styles.container, { backgroundColor, opacity }]}>\n {icons}\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n {status !== undefined && <ConnectivityStatusIcon status={status} />}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 20,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 40,\n paddingHorizontal: 12,\n paddingVertical: 9,\n },\n icons: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n },\n});\n\nexport default ConnectivityButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SACEC,4BAA4B,EAC5BC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,sBAAsB,QACjB,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAE5C,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAgBjC,MAAMC,kBAA+C,GAAGA,CAAC;EACvDC,SAAS;EACTC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACNC,KAAK;EACLC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGV,iBAAiB,CAAC,CAAC;EAEvC,MAAMW,eAAe,GAAGL,MAAM,KAAKM,SAAS,GAAGF,WAAW,CAACG,QAAQ,GAAGH,WAAW,CAACI,KAAK;EACvF,MAAMC,OAAO,GAAGX,QAAQ,GAAG,GAAG,GAAG,GAAG;EACpC,MAAMY,KAAK,gBACT3B,KAAA,CAAA4B,aAAA,CAAC1B,IAAI;IAAC2B,KAAK,EAAEC,MAAM,CAACH;EAAM,GACvBR,SAAS,KAAKP,qBAAqB,CAACmB,SAAS,KAC3CjB,SAAS,gBACRd,KAAA,CAAA4B,aAAA,CAACpB,0BAA0B;IAACY,MAAM,EAAEjB,YAAY,CAACiB,MAAM,EAAE,SAAS;EAAE,CAAE,CAAC,gBAEvEpB,KAAA,CAAA4B,aAAA,CAACrB,2BAA2B;IAACa,MAAM,EAAEjB,YAAY,CAACiB,MAAM,EAAE,UAAU;EAAE,CAAE,CACzE,CAAC,EACHD,SAAS,KAAKP,qBAAqB,CAACoB,QAAQ,KAC1ClB,SAAS,gBACRd,KAAA,CAAA4B,aAAA,CAACtB,2BAA2B;IAACc,MAAM,EAAEjB,YAAY,CAACiB,MAAM,EAAE,SAAS;EAAE,CAAE,CAAC,gBAExEpB,KAAA,CAAA4B,aAAA,CAACvB,4BAA4B;IAACe,MAAM,EAAEjB,YAAY,CAACiB,MAAM,EAAE,UAAU;EAAE,CAAE,CAC1E,CACC,CACP;EACD,oBACEpB,KAAA,CAAA4B,aAAA,CAACxB,kBAAkB;IAACY,OAAO,EAAEA,OAAQ;IAACa,KAAK,EAAEC,MAAM,CAACG,MAAO;IAACb,MAAM,EAAEA;EAAO,gBACzEpB,KAAA,CAAA4B,aAAA,CAAC1B,IAAI;IAAC2B,KAAK,EAAE,CAACC,MAAM,CAACI,SAAS,EAAE;MAAEZ,eAAe;MAAEI;IAAQ,CAAC;EAAE,GAC3DC,KAAK,EACLT,KAAK,iBACJlB,KAAA,CAAA4B,aAAA,CAAClB,UAAU;IAACU,MAAM,EAAEjB,YAAY,CAACiB,MAAM,EAAE,OAAO,CAAE;IAACe,KAAK,EAAEd,WAAW,CAACe,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFnB,KACS,CACb,EACAD,MAAM,KAAKM,SAAS,iBAAIvB,KAAA,CAAA4B,aAAA,CAACnB,sBAAsB;IAACQ,MAAM,EAAEA;EAAO,CAAE,CAC9D,CACY,CAAC;AAEzB,CAAC;AAED,MAAMa,MAAM,GAAG7B,UAAU,CAACqC,MAAM,CAAC;EAC/BL,MAAM,EAAE;IACNM,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","ConnectivityBluetoothOffIcon","ConnectivityBluetoothOnIcon","ConnectivityInternetOffIcon","ConnectivityInternetOnIcon","ConnectivityStatusIcon","Typography","useAppColorScheme","ConnectivityTransport","ConnectivityButton","available","disabled","onPress","status","title","transport","testID","colorScheme","backgroundColor","undefined","grayDark","white","opacity","icons","createElement","style","styles","Bluetooth","Internet","button","container","color","text","preset","create","borderRadius","borderWidth","overflow","alignItems","flexDirection","height","paddingHorizontal","paddingVertical","gap"],"sources":["connectivity-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport {\n ConnectivityBluetoothOffIcon,\n ConnectivityBluetoothOnIcon,\n ConnectivityInternetOffIcon,\n ConnectivityInternetOnIcon,\n ConnectivityStatusIcon,\n} from '../icons/connectivity';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport enum ConnectivityTransport {\n Internet = 'Internet',\n Bluetooth = 'Bluetooth',\n All = 'All',\n}\n\nexport type ConnectivityButtonProps = {\n available: boolean;\n disabled?: boolean;\n onPress?: () => void;\n status?: boolean;\n title?: string;\n transport: ConnectivityTransport;\n testID?: string;\n};\n\nconst ConnectivityButton: FC<ConnectivityButtonProps> = ({\n available,\n disabled,\n onPress,\n status,\n title,\n transport,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n const backgroundColor = status === undefined ? colorScheme.grayDark : colorScheme.white;\n const opacity = disabled ? 0.7 : 1.0;\n const icons = (\n <View style={styles.icons}>\n {transport !== ConnectivityTransport.Bluetooth &&\n (available ? (\n <ConnectivityInternetOnIcon testID={concatTestID(testID, 'icon.on')} />\n ) : (\n <ConnectivityInternetOffIcon testID={concatTestID(testID, 'icon.off')} />\n ))}\n {transport !== ConnectivityTransport.Internet &&\n (available ? (\n <ConnectivityBluetoothOnIcon testID={concatTestID(testID, 'icon.on')} />\n ) : (\n <ConnectivityBluetoothOffIcon testID={concatTestID(testID, 'icon.off')} />\n ))}\n </View>\n );\n return (\n <TouchableHighlight onPress={onPress} style={styles.button} testID={testID}>\n <View style={[styles.container, { backgroundColor, opacity }]}>\n {icons}\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n {status !== undefined && <ConnectivityStatusIcon status={status} />}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 20,\n borderWidth: 0,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 40,\n paddingHorizontal: 12,\n paddingVertical: 9,\n },\n icons: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n },\n});\n\nexport default ConnectivityButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","TouchableOpacity","FilterIcon","useAppColorScheme","hitslop","bottom","left","right","top","FilterButton","active","style","props","colorScheme","createElement","_extends","accessibilityRole","accessibilityState","selected","hitSlop","styles","button","backgroundColor","accent","undefined","color","white","create","alignItems","borderRadius","height","justifyContent","width"],"sources":["filter-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps } from 'react-native';\n\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { FilterIcon } from '../icons/icons';\nimport { useAppColorScheme } from '../theme/color-scheme-context';\n\nexport type FilterButtonProps = TouchableOpacityProps & {\n active: boolean;\n};\n\nconst hitslop: Insets = { bottom: 10, left: 10, right: 10, top: 10 };\n\nconst FilterButton: FC<FilterButtonProps> = ({ active, style, ...props }) => {\n const colorScheme = useAppColorScheme();\n return (\n <TouchableOpacity\n accessibilityRole=\"button\"\n accessibilityState={{ selected: active }}\n hitSlop={hitslop}\n style={[styles.button, { backgroundColor: active ? colorScheme.accent : undefined }, style]}\n {...props}>\n <FilterIcon color={active ? colorScheme.white : colorScheme.accent} />\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n borderRadius: 20,\n height: 40,\n justifyContent: 'center',\n width: 40,\n },\n});\n\nexport default FilterButton;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAiBC,UAAU,QAA+B,cAAc;AAExE,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,iBAAiB,QAAQ,+BAA+B;AAMjE,MAAMC,OAAe,GAAG;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,KAAK,EAAE,EAAE;EAAEC,GAAG,EAAE;AAAG,CAAC;AAEpE,MAAMC,YAAmC,GAAGA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EAC3E,MAAMC,WAAW,GAAGV,iBAAiB,CAAC,CAAC;EACvC,oBACEJ,KAAA,CAAAe,aAAA,CAACb,gBAAgB,EAAAc,QAAA;IACfC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE;MAAEC,QAAQ,EAAER;IAAO,CAAE;IACzCS,OAAO,EAAEf,OAAQ;IACjBO,KAAK,EAAE,CAACS,MAAM,CAACC,MAAM,EAAE;MAAEC,eAAe,EAAEZ,MAAM,GAAGG,WAAW,CAACU,MAAM,GAAGC;IAAU,CAAC,EAAEb,KAAK;EAAE,GACxFC,KAAK,gBACTb,KAAA,CAAAe,aAAA,CAACZ,UAAU;IAACuB,KAAK,EAAEf,MAAM,GAAGG,WAAW,CAACa,KAAK,GAAGb,WAAW,CAACU;EAAO,CAAE,CACrD,CAAC;AAEvB,CAAC;AAED,MAAMH,MAAM,GAAGpB,UAAU,CAAC2B,MAAM,CAAC;EAC/BN,MAAM,EAAE;IACNO,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","TouchableOpacity","FilterIcon","useAppColorScheme","hitslop","bottom","left","right","top","FilterButton","active","style","props","colorScheme","createElement","_extends","accessibilityRole","accessibilityState","selected","hitSlop","styles","button","backgroundColor","accent","undefined","color","white","create","alignItems","borderRadius","borderWidth","height","justifyContent","width"],"sources":["filter-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps } from 'react-native';\n\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { FilterIcon } from '../icons/icons';\nimport { useAppColorScheme } from '../theme/color-scheme-context';\n\nexport type FilterButtonProps = TouchableOpacityProps & {\n active: boolean;\n};\n\nconst hitslop: Insets = { bottom: 10, left: 10, right: 10, top: 10 };\n\nconst FilterButton: FC<FilterButtonProps> = ({ active, style, ...props }) => {\n const colorScheme = useAppColorScheme();\n return (\n <TouchableOpacity\n accessibilityRole=\"button\"\n accessibilityState={{ selected: active }}\n hitSlop={hitslop}\n style={[styles.button, { backgroundColor: active ? colorScheme.accent : undefined }, style]}\n {...props}>\n <FilterIcon color={active ? colorScheme.white : colorScheme.accent} />\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n borderRadius: 20,\n borderWidth: 0,\n height: 40,\n justifyContent: 'center',\n width: 40,\n },\n});\n\nexport default FilterButton;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAiBC,UAAU,QAA+B,cAAc;AAExE,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,iBAAiB,QAAQ,+BAA+B;AAMjE,MAAMC,OAAe,GAAG;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,KAAK,EAAE,EAAE;EAAEC,GAAG,EAAE;AAAG,CAAC;AAEpE,MAAMC,YAAmC,GAAGA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EAC3E,MAAMC,WAAW,GAAGV,iBAAiB,CAAC,CAAC;EACvC,oBACEJ,KAAA,CAAAe,aAAA,CAACb,gBAAgB,EAAAc,QAAA;IACfC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE;MAAEC,QAAQ,EAAER;IAAO,CAAE;IACzCS,OAAO,EAAEf,OAAQ;IACjBO,KAAK,EAAE,CAACS,MAAM,CAACC,MAAM,EAAE;MAAEC,eAAe,EAAEZ,MAAM,GAAGG,WAAW,CAACU,MAAM,GAAGC;IAAU,CAAC,EAAEb,KAAK;EAAE,GACxFC,KAAK,gBACTb,KAAA,CAAAe,aAAA,CAACZ,UAAU;IAACuB,KAAK,EAAEf,MAAM,GAAGG,WAAW,CAACa,KAAK,GAAGb,WAAW,CAACU;EAAO,CAAE,CACrD,CAAC;AAEvB,CAAC;AAED,MAAMH,MAAM,GAAGpB,UAAU,CAAC2B,MAAM,CAAC;EAC/BN,MAAM,EAAE;IACNO,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,eAAexB,YAAY","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","StyleSheet","useAccessibleAfterTransition","TouchableOpacity","useAppColorScheme","hitSlop","top","left","bottom","right","GhostButton","accessibilityLabel","icon","onPress","style","props","colorScheme","accessible","iconElement","isValidElement","Icon","createElement","color","text","_extends","accessibilityRole","styles","button","create","alignItems","backgroundColor","borderRadius","height","justifyContent","overflow","width"],"sources":["ghost-button.tsx"],"sourcesContent":["import React, { FC, ReactNode, useMemo } from 'react';\nimport { Insets, StyleProp, StyleSheet, TouchableOpacityProps, ViewStyle } from 'react-native';\nimport type { SvgProps } from 'react-native-svg';\n\nimport { useAccessibleAfterTransition } from '../accessibility';\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAppColorScheme } from '../theme';\n\nexport type GhostButtonProps = TouchableOpacityProps & {\n accessibilityLabel: string;\n icon?: FC<SvgProps> | ReactNode;\n onPress: () => void;\n style?: StyleProp<ViewStyle>;\n};\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst GhostButton: FC<GhostButtonProps> = ({ accessibilityLabel, icon, onPress, style, ...props }) => {\n const colorScheme = useAppColorScheme();\n const accessible = useAccessibleAfterTransition();\n\n const iconElement = useMemo(() => {\n if (React.isValidElement(icon)) {\n return icon;\n }\n const Icon = icon as FC<SvgProps>;\n return <Icon color={colorScheme.text} />;\n }, [colorScheme.text, icon]);\n\n return (\n <TouchableOpacity\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"button\"\n accessible={accessible}\n hitSlop={hitSlop}\n onPress={onPress}\n style={[styles.button, style]}\n {...props}>\n {iconElement}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n backgroundColor: 'transparent',\n borderRadius: 12,\n height: 24,\n justifyContent: 'center',\n overflow: 'hidden',\n width: 24,\n },\n});\n\nexport default GhostButton;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAmBC,OAAO,QAAQ,OAAO;AACrD,SAA4BC,UAAU,QAA0C,cAAc;AAG9F,SAASC,4BAA4B,QAAQ,kBAAkB;AAC/D,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,WAAiC,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC,IAAI;EAAEC,OAAO;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EACpG,MAAMC,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,UAAU,GAAGf,4BAA4B,CAAC,CAAC;EAEjD,MAAMgB,WAAW,GAAGlB,OAAO,CAAC,MAAM;IAChC,iBAAID,KAAK,CAACoB,cAAc,CAACP,IAAI,CAAC,EAAE;MAC9B,OAAOA,IAAI;IACb;IACA,MAAMQ,IAAI,GAAGR,IAAoB;IACjC,oBAAOb,KAAA,CAAAsB,aAAA,CAACD,IAAI;MAACE,KAAK,EAAEN,WAAW,CAACO;IAAK,CAAE,CAAC;EAC1C,CAAC,EAAE,CAACP,WAAW,CAACO,IAAI,EAAEX,IAAI,CAAC,CAAC;EAE5B,oBACEb,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAqB,QAAA;IACfb,kBAAkB,EAAEA,kBAAmB;IACvCc,iBAAiB,EAAC,QAAQ;IAC1BR,UAAU,EAAEA,UAAW;IACvBZ,OAAO,EAAEA,OAAQ;IACjBQ,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAE,CAACY,MAAM,CAACC,MAAM,EAAEb,KAAK;EAAE,GAC1BC,KAAK,GACRG,WACe,CAAC;AAEvB,CAAC;AAED,MAAMQ,MAAM,GAAGzB,UAAU,CAAC2B,MAAM,CAAC;EAC/BD,MAAM,EAAE;IACNE,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,aAAa;IAC9BC,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE,QAAQ;IAClBC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"names":["React","useMemo","StyleSheet","useAccessibleAfterTransition","TouchableOpacity","useAppColorScheme","hitSlop","top","left","bottom","right","GhostButton","accessibilityLabel","icon","onPress","style","props","colorScheme","accessible","iconElement","isValidElement","Icon","createElement","color","text","_extends","accessibilityRole","styles","button","create","alignItems","backgroundColor","borderRadius","borderWidth","height","justifyContent","overflow","width"],"sources":["ghost-button.tsx"],"sourcesContent":["import React, { FC, ReactNode, useMemo } from 'react';\nimport { Insets, StyleProp, StyleSheet, TouchableOpacityProps, ViewStyle } from 'react-native';\nimport type { SvgProps } from 'react-native-svg';\n\nimport { useAccessibleAfterTransition } from '../accessibility';\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAppColorScheme } from '../theme';\n\nexport type GhostButtonProps = TouchableOpacityProps & {\n accessibilityLabel: string;\n icon?: FC<SvgProps> | ReactNode;\n onPress: () => void;\n style?: StyleProp<ViewStyle>;\n};\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst GhostButton: FC<GhostButtonProps> = ({ accessibilityLabel, icon, onPress, style, ...props }) => {\n const colorScheme = useAppColorScheme();\n const accessible = useAccessibleAfterTransition();\n\n const iconElement = useMemo(() => {\n if (React.isValidElement(icon)) {\n return icon;\n }\n const Icon = icon as FC<SvgProps>;\n return <Icon color={colorScheme.text} />;\n }, [colorScheme.text, icon]);\n\n return (\n <TouchableOpacity\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"button\"\n accessible={accessible}\n hitSlop={hitSlop}\n onPress={onPress}\n style={[styles.button, style]}\n {...props}>\n {iconElement}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n backgroundColor: 'transparent',\n borderRadius: 12,\n borderWidth: 0,\n height: 24,\n justifyContent: 'center',\n overflow: 'hidden',\n width: 24,\n },\n});\n\nexport default GhostButton;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAmBC,OAAO,QAAQ,OAAO;AACrD,SAA4BC,UAAU,QAA0C,cAAc;AAG9F,SAASC,4BAA4B,QAAQ,kBAAkB;AAC/D,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,WAAiC,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC,IAAI;EAAEC,OAAO;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EACpG,MAAMC,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,UAAU,GAAGf,4BAA4B,CAAC,CAAC;EAEjD,MAAMgB,WAAW,GAAGlB,OAAO,CAAC,MAAM;IAChC,iBAAID,KAAK,CAACoB,cAAc,CAACP,IAAI,CAAC,EAAE;MAC9B,OAAOA,IAAI;IACb;IACA,MAAMQ,IAAI,GAAGR,IAAoB;IACjC,oBAAOb,KAAA,CAAAsB,aAAA,CAACD,IAAI;MAACE,KAAK,EAAEN,WAAW,CAACO;IAAK,CAAE,CAAC;EAC1C,CAAC,EAAE,CAACP,WAAW,CAACO,IAAI,EAAEX,IAAI,CAAC,CAAC;EAE5B,oBACEb,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAqB,QAAA;IACfb,kBAAkB,EAAEA,kBAAmB;IACvCc,iBAAiB,EAAC,QAAQ;IAC1BR,UAAU,EAAEA,UAAW;IACvBZ,OAAO,EAAEA,OAAQ;IACjBQ,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAE,CAACY,MAAM,CAACC,MAAM,EAAEb,KAAK;EAAE,GAC1BC,KAAK,GACRG,WACe,CAAC;AAEvB,CAAC;AAED,MAAMQ,MAAM,GAAGzB,UAAU,CAAC2B,MAAM,CAAC;EAC/BD,MAAM,EAAE;IACNE,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,aAAa;IAC9BC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE,QAAQ;IAClBC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,eAAe1B,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","cancelAnimation","Easing","runOnJS","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","TouchableOpacity","Typography","useAppColorScheme","Content","title","subtitlePrefix","subtitleSuffix","width","height","textColor","progress","holdTimeoutSecs","disabled","nums","Array","from","length","map","_","index","subtitleHeight","setSubtitleHeight","onSubtitleLayout","nativeEvent","layout","translateY","value","movingUpStyle","transform","createElement","style","styles","contentWrapper","contentDisabled","pointerEvents","color","numberOfLines","subtitle","subtitleDisabled","onLayout","preset","subtitleSecsWrapper","subtitleSecs","val","key","HoldButtonLayouted","onFinished","ref","props","colorScheme","isFinished","setFinished","onLongPress","onPressIn","holdTimeout","duration","easing","linear","finished","onPressOut","translateX","movingRightStyle","movingLeftStyle","contentProps","Fragment","_extends","accent","movingLayer","backgroundColor","accentText","pressableLayer","accessibilityRole","undefined","activeOpacity","HoldButton","forwardRef","setLayout","onContainerLayout","container","white","background","borderColor","displayName","create","borderRadius","overflow","opacity","alignItems","justifyContent","paddingBottom","paddingHorizontal","paddingTop","borderWidth","position","flexDirection"],"sources":["hold-button.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ColorValue, LayoutChangeEvent, StyleSheet, TouchableWithoutFeedbackProps, View } from 'react-native';\nimport Animated, {\n cancelAnimation,\n Easing,\n runOnJS,\n SharedValue,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HoldButtonProps\n extends Omit<\n TouchableWithoutFeedbackProps,\n 'children' | 'onLayout' | 'onPress' | 'onLongPress' | 'onPressIn' | 'onPressOut'\n > {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n holdTimeoutSecs?: number;\n onFinished: () => void;\n}\n\ninterface ContentProps {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n width: number;\n height: number;\n textColor: ColorValue;\n progress: SharedValue<number>;\n holdTimeoutSecs: number;\n disabled?: boolean;\n}\n\nconst Content = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n width,\n height,\n textColor,\n progress,\n holdTimeoutSecs,\n disabled,\n}: ContentProps) => {\n const nums = useMemo(\n () => Array.from({ length: holdTimeoutSecs + 1 }).map((_, index) => holdTimeoutSecs - index),\n [holdTimeoutSecs],\n );\n\n const [subtitleHeight, setSubtitleHeight] = useState<number>(0);\n const onSubtitleLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setSubtitleHeight(nativeEvent.layout.height);\n }, []);\n\n const translateY = useDerivedValue(\n () => progress.value * subtitleHeight * holdTimeoutSecs,\n [subtitleHeight, holdTimeoutSecs],\n );\n const movingUpStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: -translateY.value }],\n }), [translateY]);\n\n return (\n <View style={[styles.contentWrapper, disabled && styles.contentDisabled, { width, height }]} pointerEvents=\"none\">\n <Typography color={textColor} numberOfLines={1}>\n {title}\n </Typography>\n\n <View style={[styles.subtitle, disabled && styles.subtitleDisabled]}>\n <Typography onLayout={onSubtitleLayout} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitlePrefix}\n </Typography>\n <View style={[styles.subtitleSecsWrapper, { height: subtitleHeight }]}>\n <Animated.View style={[styles.subtitleSecs, movingUpStyle]}>\n {nums.map((val) => (\n <Typography key={val} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {val}\n </Typography>\n ))}\n </Animated.View>\n </View>\n <Typography preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitleSuffix}\n </Typography>\n </View>\n </View>\n );\n};\n\ninterface HoldButtonLayoutedProps extends Omit<HoldButtonProps, 'style'> {\n ref: React.ForwardedRef<TouchableOpacityRef>;\n width: number;\n height: number;\n}\n\nconst HoldButtonLayouted = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n onFinished,\n holdTimeoutSecs = 3,\n width,\n height,\n disabled,\n ref,\n ...props\n}: HoldButtonLayoutedProps) => {\n const colorScheme = useAppColorScheme();\n\n const [isFinished, setFinished] = useState(false);\n useEffect(() => {\n if (isFinished) {\n onFinished();\n }\n }, [isFinished, onFinished]);\n\n const progress = useSharedValue(0);\n\n const onLongPress = useCallback(() => {\n // Fix for detox bug https://github.com/wix/Detox/issues/4754\n if (isFinished || progress.value !== 0) {\n return;\n }\n setFinished(true);\n }, [progress, isFinished]);\n\n const onPressIn = useCallback(() => {\n const holdTimeout = holdTimeoutSecs * 1000;\n\n // start moving forward\n progress.value = withTiming(\n 1,\n {\n duration: (1 - progress.value) * holdTimeout,\n easing: Easing.linear,\n },\n (finished) => {\n if (finished) {\n runOnJS(setFinished)(true);\n } else {\n // start moving back\n progress.value = withTiming(0, {\n duration: progress.value * holdTimeout,\n easing: Easing.linear,\n });\n }\n },\n );\n }, [holdTimeoutSecs, progress]);\n\n const onPressOut = useCallback(() => cancelAnimation(progress), [progress]);\n\n const translateX = useDerivedValue(() => progress.value * width, [width]);\n const movingRightStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n }), [translateX]);\n const movingLeftStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: -translateX.value }],\n }), [translateX]);\n\n const contentProps = useMemo(\n () => ({ title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height }),\n [title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height],\n );\n\n return (\n <>\n <Content textColor={colorScheme.accent} disabled={disabled} {...contentProps} />\n {!disabled && (\n <Animated.View style={[styles.movingLayer, { backgroundColor: colorScheme.accent }, movingRightStyle]}>\n <Animated.View style={movingLeftStyle}>\n <Content textColor={colorScheme.accentText} {...contentProps} />\n </Animated.View>\n </Animated.View>\n )}\n <View style={styles.pressableLayer}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n ref={ref}\n disabled={isFinished || disabled}\n onLongPress={onLongPress}\n onPressIn={isFinished ? undefined : onPressIn}\n onPressOut={isFinished ? undefined : onPressOut}\n activeOpacity={1}\n {...props}>\n <View style={{ width, height }} />\n </TouchableOpacity>\n </View>\n </>\n );\n};\n\n/**\n * Press and hold button component\n *\n * follows design: https://www.figma.com/design/cCmAyBQrQWCQZuDi85pJfe/Procivis-One-Wallet-Developments-2025?node-id=1-871\n */\nconst HoldButton = React.forwardRef<TouchableOpacityRef, HoldButtonProps>(\n ({ style, disabled, ...props }, ref) => {\n const colorScheme = useAppColorScheme();\n\n const [layout, setLayout] = useState<{ width: number; height: number }>();\n const onContainerLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setLayout({ width: nativeEvent.layout.width, height: nativeEvent.layout.height });\n }, []);\n\n return (\n <View\n onLayout={onContainerLayout}\n style={[\n styles.container,\n disabled && styles.disabled,\n {\n backgroundColor: disabled ? colorScheme.white : colorScheme.background,\n borderColor: colorScheme.background,\n },\n style,\n ]}>\n {layout && <HoldButtonLayouted ref={ref} disabled={disabled} {...props} {...layout} />}\n </View>\n );\n },\n);\n\nHoldButton.displayName = 'HoldButton';\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n height: 68,\n overflow: 'hidden',\n },\n contentDisabled: {\n opacity: 0.4,\n },\n contentWrapper: {\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 16,\n paddingHorizontal: 24,\n paddingTop: 12,\n },\n disabled: {\n borderWidth: 1,\n },\n movingLayer: {\n overflow: 'hidden',\n position: 'absolute',\n },\n pressableLayer: {\n position: 'absolute',\n },\n subtitle: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n opacity: 0.8,\n },\n subtitleDisabled: {\n opacity: 1,\n },\n subtitleSecs: {\n alignItems: 'center',\n },\n subtitleSecsWrapper: {\n overflow: 'hidden',\n },\n});\n\nexport default HoldButton;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","cancelAnimation","Easing","runOnJS","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","TouchableOpacity","Typography","useAppColorScheme","Content","title","subtitlePrefix","subtitleSuffix","width","height","textColor","progress","holdTimeoutSecs","disabled","nums","Array","from","length","map","_","index","subtitleHeight","setSubtitleHeight","onSubtitleLayout","nativeEvent","layout","translateY","value","movingUpStyle","transform","createElement","style","styles","contentWrapper","contentDisabled","pointerEvents","color","numberOfLines","subtitle","subtitleDisabled","onLayout","preset","subtitleSecsWrapper","subtitleSecs","val","key","HoldButtonLayouted","onFinished","ref","props","colorScheme","isFinished","setFinished","onLongPress","onPressIn","holdTimeout","duration","easing","linear","finished","onPressOut","translateX","movingRightStyle","movingLeftStyle","contentProps","Fragment","_extends","accent","movingLayer","backgroundColor","accentText","pressableLayer","accessibilityRole","undefined","activeOpacity","HoldButton","forwardRef","setLayout","onContainerLayout","container","white","background","borderColor","displayName","create","borderRadius","borderWidth","overflow","opacity","alignItems","justifyContent","paddingBottom","paddingHorizontal","paddingTop","position","flexDirection"],"sources":["hold-button.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ColorValue, LayoutChangeEvent, StyleSheet, TouchableWithoutFeedbackProps, View } from 'react-native';\nimport Animated, {\n cancelAnimation,\n Easing,\n runOnJS,\n SharedValue,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HoldButtonProps\n extends Omit<\n TouchableWithoutFeedbackProps,\n 'children' | 'onLayout' | 'onPress' | 'onLongPress' | 'onPressIn' | 'onPressOut'\n > {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n holdTimeoutSecs?: number;\n onFinished: () => void;\n}\n\ninterface ContentProps {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n width: number;\n height: number;\n textColor: ColorValue;\n progress: SharedValue<number>;\n holdTimeoutSecs: number;\n disabled?: boolean;\n}\n\nconst Content = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n width,\n height,\n textColor,\n progress,\n holdTimeoutSecs,\n disabled,\n}: ContentProps) => {\n const nums = useMemo(\n () => Array.from({ length: holdTimeoutSecs + 1 }).map((_, index) => holdTimeoutSecs - index),\n [holdTimeoutSecs],\n );\n\n const [subtitleHeight, setSubtitleHeight] = useState<number>(0);\n const onSubtitleLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setSubtitleHeight(nativeEvent.layout.height);\n }, []);\n\n const translateY = useDerivedValue(\n () => progress.value * subtitleHeight * holdTimeoutSecs,\n [subtitleHeight, holdTimeoutSecs],\n );\n const movingUpStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: -translateY.value }],\n }), [translateY]);\n\n return (\n <View style={[styles.contentWrapper, disabled && styles.contentDisabled, { width, height }]} pointerEvents=\"none\">\n <Typography color={textColor} numberOfLines={1}>\n {title}\n </Typography>\n\n <View style={[styles.subtitle, disabled && styles.subtitleDisabled]}>\n <Typography onLayout={onSubtitleLayout} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitlePrefix}\n </Typography>\n <View style={[styles.subtitleSecsWrapper, { height: subtitleHeight }]}>\n <Animated.View style={[styles.subtitleSecs, movingUpStyle]}>\n {nums.map((val) => (\n <Typography key={val} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {val}\n </Typography>\n ))}\n </Animated.View>\n </View>\n <Typography preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitleSuffix}\n </Typography>\n </View>\n </View>\n );\n};\n\ninterface HoldButtonLayoutedProps extends Omit<HoldButtonProps, 'style'> {\n ref: React.ForwardedRef<TouchableOpacityRef>;\n width: number;\n height: number;\n}\n\nconst HoldButtonLayouted = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n onFinished,\n holdTimeoutSecs = 3,\n width,\n height,\n disabled,\n ref,\n ...props\n}: HoldButtonLayoutedProps) => {\n const colorScheme = useAppColorScheme();\n\n const [isFinished, setFinished] = useState(false);\n useEffect(() => {\n if (isFinished) {\n onFinished();\n }\n }, [isFinished, onFinished]);\n\n const progress = useSharedValue(0);\n\n const onLongPress = useCallback(() => {\n // Fix for detox bug https://github.com/wix/Detox/issues/4754\n if (isFinished || progress.value !== 0) {\n return;\n }\n setFinished(true);\n }, [progress, isFinished]);\n\n const onPressIn = useCallback(() => {\n const holdTimeout = holdTimeoutSecs * 1000;\n\n // start moving forward\n progress.value = withTiming(\n 1,\n {\n duration: (1 - progress.value) * holdTimeout,\n easing: Easing.linear,\n },\n (finished) => {\n if (finished) {\n runOnJS(setFinished)(true);\n } else {\n // start moving back\n progress.value = withTiming(0, {\n duration: progress.value * holdTimeout,\n easing: Easing.linear,\n });\n }\n },\n );\n }, [holdTimeoutSecs, progress]);\n\n const onPressOut = useCallback(() => cancelAnimation(progress), [progress]);\n\n const translateX = useDerivedValue(() => progress.value * width, [width]);\n const movingRightStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n }), [translateX]);\n const movingLeftStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: -translateX.value }],\n }), [translateX]);\n\n const contentProps = useMemo(\n () => ({ title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height }),\n [title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height],\n );\n\n return (\n <>\n <Content textColor={colorScheme.accent} disabled={disabled} {...contentProps} />\n {!disabled && (\n <Animated.View style={[styles.movingLayer, { backgroundColor: colorScheme.accent }, movingRightStyle]}>\n <Animated.View style={movingLeftStyle}>\n <Content textColor={colorScheme.accentText} {...contentProps} />\n </Animated.View>\n </Animated.View>\n )}\n <View style={styles.pressableLayer}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n ref={ref}\n disabled={isFinished || disabled}\n onLongPress={onLongPress}\n onPressIn={isFinished ? undefined : onPressIn}\n onPressOut={isFinished ? undefined : onPressOut}\n activeOpacity={1}\n {...props}>\n <View style={{ width, height }} />\n </TouchableOpacity>\n </View>\n </>\n );\n};\n\n/**\n * Press and hold button component\n *\n * follows design: https://www.figma.com/design/cCmAyBQrQWCQZuDi85pJfe/Procivis-One-Wallet-Developments-2025?node-id=1-871\n */\nconst HoldButton = React.forwardRef<TouchableOpacityRef, HoldButtonProps>(\n ({ style, disabled, ...props }, ref) => {\n const colorScheme = useAppColorScheme();\n\n const [layout, setLayout] = useState<{ width: number; height: number }>();\n const onContainerLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setLayout({ width: nativeEvent.layout.width, height: nativeEvent.layout.height });\n }, []);\n\n return (\n <View\n onLayout={onContainerLayout}\n style={[\n styles.container,\n disabled && styles.disabled,\n {\n backgroundColor: disabled ? colorScheme.white : colorScheme.background,\n borderColor: colorScheme.background,\n },\n style,\n ]}>\n {layout && <HoldButtonLayouted ref={ref} disabled={disabled} {...props} {...layout} />}\n </View>\n );\n },\n);\n\nHoldButton.displayName = 'HoldButton';\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 0,\n height: 68,\n overflow: 'hidden',\n },\n contentDisabled: {\n opacity: 0.4,\n },\n contentWrapper: {\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 16,\n paddingHorizontal: 24,\n paddingTop: 12,\n },\n disabled: {\n borderWidth: 1,\n },\n movingLayer: {\n overflow: 'hidden',\n position: 'absolute',\n },\n pressableLayer: {\n position: 'absolute',\n },\n subtitle: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n opacity: 0.8,\n },\n subtitleDisabled: {\n opacity: 1,\n },\n subtitleSecs: {\n alignItems: 'center',\n },\n subtitleSecsWrapper: {\n overflow: 'hidden',\n },\n});\n\nexport default HoldButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -44,12 +44,14 @@ export default ScanButton;
|
|
|
44
44
|
const styles = StyleSheet.create({
|
|
45
45
|
blurWrapper: {
|
|
46
46
|
borderRadius: 28,
|
|
47
|
+
borderWidth: 0,
|
|
47
48
|
height: 80,
|
|
48
49
|
padding: 8,
|
|
49
50
|
width: 104
|
|
50
51
|
},
|
|
51
52
|
button: {
|
|
52
53
|
borderRadius: 28,
|
|
54
|
+
borderWidth: 0,
|
|
53
55
|
height: 80,
|
|
54
56
|
left: '50%',
|
|
55
57
|
marginLeft: -52,
|
|
@@ -66,6 +68,7 @@ const styles = StyleSheet.create({
|
|
|
66
68
|
iconWrapper: {
|
|
67
69
|
alignItems: 'center',
|
|
68
70
|
borderRadius: 20,
|
|
71
|
+
borderWidth: 0,
|
|
69
72
|
height: '100%',
|
|
70
73
|
justifyContent: 'center',
|
|
71
74
|
width: '100%'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","ScanIcon","useAppColorScheme","hitSlop","top","left","bottom","right","ScanButton","forwardRef","style","props","ref","t","colorScheme","insets","createElement","_extends","accessibilityLabel","accessibilityRole","styles","button","Math","max","blurStyle","blurWrapper","iconWrapper","backgroundColor","accent","color","white","displayName","create","borderRadius","height","padding","width","marginLeft","position","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","justifyContent"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { ScanIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = TouchableOpacityProps;\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(({ style, ...props }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n\n return (\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={[styles.button, { bottom: Math.max(24, insets.bottom) }, style]}\n {...props}>\n <BlurView blurStyle=\"soft\" style={styles.blurWrapper}>\n <View style={[styles.iconWrapper, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n );\n});\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n blurWrapper: {\n borderRadius: 28,\n height: 80,\n padding: 8,\n width: 104,\n },\n button: {\n borderRadius: 28,\n height: 80,\n left: '50%',\n marginLeft: -52,\n position: 'absolute',\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n width: 104,\n },\n iconWrapper: {\n alignItems: 'center',\n borderRadius: 20,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAiBC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,gBAAgB,QAA6B,+CAA+C;AACrG,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAI5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,UAAU,gBAAGd,KAAK,CAACe,UAAU,CAAuC,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACtG,MAAMC,CAAC,GAAGd,2BAA2B,CAAC,CAAC;EACvC,MAAMe,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,MAAM,GAAGlB,iBAAiB,CAAC,CAAC;EAElC,oBACEH,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAmB,QAAA;IACfC,kBAAkB,EAAEL,CAAC,CAAC,yBAAyB,CAAE;IACjDM,iBAAiB,EAAC,QAAQ;IAC1BhB,OAAO,EAAEA,OAAQ;IACjBS,GAAG,EAAEA,GAAI;IACTF,KAAK,EAAE,CAACU,MAAM,CAACC,MAAM,EAAE;MAAEf,MAAM,EAAEgB,IAAI,CAACC,GAAG,CAAC,EAAE,EAAER,MAAM,CAACT,MAAM;IAAE,CAAC,EAAEI,KAAK;EAAE,GACnEC,KAAK,gBACTjB,KAAA,CAAAsB,aAAA,CAAChB,QAAQ;IAACwB,SAAS,EAAC,MAAM;IAACd,KAAK,EAAEU,MAAM,CAACK;EAAY,gBACnD/B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACc,KAAK,EAAE,CAACU,MAAM,CAACM,WAAW,EAAE;MAAEC,eAAe,EAAEb,WAAW,CAACc;IAAO,CAAC;EAAE,gBACzElC,KAAA,CAAAsB,aAAA,CAACf,QAAQ;IAAC4B,KAAK,EAAEf,WAAW,CAACgB;EAAM,CAAE,CACjC,CACE,CACM,CAAC;AAEvB,CAAC,CAAC;AAEFtB,UAAU,CAACuB,WAAW,GAAG,YAAY;AACrC,eAAevB,UAAU;AAEzB,MAAMY,MAAM,GAAGzB,UAAU,CAACqC,MAAM,CAAC;EAC/BP,WAAW,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT,CAAC;
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","ScanIcon","useAppColorScheme","hitSlop","top","left","bottom","right","ScanButton","forwardRef","style","props","ref","t","colorScheme","insets","createElement","_extends","accessibilityLabel","accessibilityRole","styles","button","Math","max","blurStyle","blurWrapper","iconWrapper","backgroundColor","accent","color","white","displayName","create","borderRadius","borderWidth","height","padding","width","marginLeft","position","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","justifyContent"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { ScanIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = TouchableOpacityProps;\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(({ style, ...props }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n\n return (\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={[styles.button, { bottom: Math.max(24, insets.bottom) }, style]}\n {...props}>\n <BlurView blurStyle=\"soft\" style={styles.blurWrapper}>\n <View style={[styles.iconWrapper, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n );\n});\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n blurWrapper: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n padding: 8,\n width: 104,\n },\n button: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n left: '50%',\n marginLeft: -52,\n position: 'absolute',\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n width: 104,\n },\n iconWrapper: {\n alignItems: 'center',\n borderRadius: 20,\n borderWidth: 0,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAiBC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,gBAAgB,QAA6B,+CAA+C;AACrG,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAI5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,UAAU,gBAAGd,KAAK,CAACe,UAAU,CAAuC,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACtG,MAAMC,CAAC,GAAGd,2BAA2B,CAAC,CAAC;EACvC,MAAMe,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,MAAM,GAAGlB,iBAAiB,CAAC,CAAC;EAElC,oBACEH,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAmB,QAAA;IACfC,kBAAkB,EAAEL,CAAC,CAAC,yBAAyB,CAAE;IACjDM,iBAAiB,EAAC,QAAQ;IAC1BhB,OAAO,EAAEA,OAAQ;IACjBS,GAAG,EAAEA,GAAI;IACTF,KAAK,EAAE,CAACU,MAAM,CAACC,MAAM,EAAE;MAAEf,MAAM,EAAEgB,IAAI,CAACC,GAAG,CAAC,EAAE,EAAER,MAAM,CAACT,MAAM;IAAE,CAAC,EAAEI,KAAK;EAAE,GACnEC,KAAK,gBACTjB,KAAA,CAAAsB,aAAA,CAAChB,QAAQ;IAACwB,SAAS,EAAC,MAAM;IAACd,KAAK,EAAEU,MAAM,CAACK;EAAY,gBACnD/B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACc,KAAK,EAAE,CAACU,MAAM,CAACM,WAAW,EAAE;MAAEC,eAAe,EAAEb,WAAW,CAACc;IAAO,CAAC;EAAE,gBACzElC,KAAA,CAAAsB,aAAA,CAACf,QAAQ;IAAC4B,KAAK,EAAEf,WAAW,CAACgB;EAAM,CAAE,CACjC,CACE,CACM,CAAC;AAEvB,CAAC,CAAC;AAEFtB,UAAU,CAACuB,WAAW,GAAG,YAAY;AACrC,eAAevB,UAAU;AAEzB,MAAMY,MAAM,GAAGzB,UAAU,CAACqC,MAAM,CAAC;EAC/BP,WAAW,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT,CAAC;EACDhB,MAAM,EAAE;IACNY,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACV9B,IAAI,EAAE,KAAK;IACXiC,UAAU,EAAE,CAAC,EAAE;IACfC,QAAQ,EAAE,UAAU;IACpBC,WAAW,EAAE,SAAS;IACtBC,YAAY,EAAE;MAAEN,MAAM,EAAE,CAAC;MAAEE,KAAK,EAAE;IAAE,CAAC;IACrCK,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,EAAE;IAChBN,KAAK,EAAE;EACT,CAAC;EACDX,WAAW,EAAE;IACXkB,UAAU,EAAE,QAAQ;IACpBX,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,MAAM;IACdU,cAAc,EAAE,QAAQ;IACxBR,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","LinkIcon","Typography","useAppColorScheme","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { LinkIcon } from '../icons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGN,iBAAiB,CAAC,CAAC;EAEvC,oBACEP,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACT,QAAQ;IAACe,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACR,UAAU;IAACM,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,QAAQ,EAAE;EACZ,CAAC;
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","LinkIcon","Typography","useAppColorScheme","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","borderWidth","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { LinkIcon } from '../icons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n borderWidth: 0,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGN,iBAAiB,CAAC,CAAC;EAEvC,oBACEP,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACT,QAAQ;IAACe,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACR,UAAU;IAACM,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE;EACZ,CAAC;EACDT,SAAS,EAAE;IACTU,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAezB,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","StyleSheet","View","TouchableOpacity","useAccessibilityTranslation","CheckedIcon","Typography","useAppColorScheme","Checkbox","style","text","value","disabled","onValueChanged","props","t","colorScheme","onPress","createElement","_extends","activeOpacity","accessibilityRole","accessibilityState","accessibilityValue","undefined","styles","container","backgroundColor","background","unchecked","borderColor","grayDark","white","preset","color","create","alignItems","borderRadius","flexDirection","padding","opacity","flex","marginLeft","
|
|
1
|
+
{"version":3,"names":["React","useCallback","StyleSheet","View","TouchableOpacity","useAccessibilityTranslation","CheckedIcon","Typography","useAppColorScheme","Checkbox","style","text","value","disabled","onValueChanged","props","t","colorScheme","onPress","createElement","_extends","activeOpacity","accessibilityRole","accessibilityState","accessibilityValue","undefined","styles","container","backgroundColor","background","unchecked","borderColor","grayDark","white","preset","color","create","alignItems","borderRadius","borderWidth","flexDirection","padding","opacity","flex","marginLeft","height","width"],"sources":["checkbox.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacityProps, View } from 'react-native';\n\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport { CheckedIcon } from '../icons/selector';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface CheckboxProps extends TouchableOpacityProps {\n value: boolean;\n text: ReactNode;\n onValueChanged: (value: boolean) => void;\n disabled?: boolean;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({ style, text, value, disabled, onValueChanged, ...props }) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n\n const onPress = useCallback(() => onValueChanged(!value), [onValueChanged, value]);\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ disabled }}\n accessibilityValue={\n disabled ? undefined : { text: t(value ? 'accessibility.control.checked' : 'accessibility.control.unchecked') }\n }\n disabled={disabled}\n style={[styles.container, { backgroundColor: colorScheme.background }, style]}\n onPress={onPress}\n {...props}>\n {value ? (\n <CheckedIcon style={disabled && styles.disabled} />\n ) : (\n <View\n style={[\n styles.unchecked,\n {\n borderColor: colorScheme.grayDark,\n backgroundColor: disabled ? colorScheme.background : colorScheme.white,\n },\n ]}\n />\n )}\n <View style={[styles.text, disabled && styles.disabled]}>\n {typeof text === 'string' ? (\n <Typography preset=\"xs/line-height-small\" color={colorScheme.text}>\n {text}\n </Typography>\n ) : (\n text\n )}\n </View>\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n borderWidth: 0,\n flexDirection: 'row',\n padding: 12,\n },\n disabled: {\n opacity: 0.4,\n },\n text: {\n flex: 1,\n marginLeft: 12,\n },\n unchecked: {\n borderRadius: 12,\n borderWidth: 1,\n height: 24,\n width: 24,\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,IAAmBC,WAAW,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAEtE,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,OAAO,MAAMC,QAA2B,GAAGA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,cAAc;EAAE,GAAGC;AAAM,CAAC,KAAK;EACzG,MAAMC,CAAC,GAAGX,2BAA2B,CAAC,CAAC;EACvC,MAAMY,WAAW,GAAGT,iBAAiB,CAAC,CAAC;EAEvC,MAAMU,OAAO,GAAGjB,WAAW,CAAC,MAAMa,cAAc,CAAC,CAACF,KAAK,CAAC,EAAE,CAACE,cAAc,EAAEF,KAAK,CAAC,CAAC;EAElF,oBACEZ,KAAA,CAAAmB,aAAA,CAACf,gBAAgB,EAAAgB,QAAA;IACfC,aAAa,EAAE,GAAI;IACnBC,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEV;IAAS,CAAE;IACjCW,kBAAkB,EAChBX,QAAQ,GAAGY,SAAS,GAAG;MAAEd,IAAI,EAAEK,CAAC,CAACJ,KAAK,GAAG,+BAA+B,GAAG,iCAAiC;IAAE,CAC/G;IACDC,QAAQ,EAAEA,QAAS;IACnBH,KAAK,EAAE,CAACgB,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAEX,WAAW,CAACY;IAAW,CAAC,EAAEnB,KAAK,CAAE;IAC9EQ,OAAO,EAAEA;EAAQ,GACbH,KAAK,GACRH,KAAK,gBACJZ,KAAA,CAAAmB,aAAA,CAACb,WAAW;IAACI,KAAK,EAAEG,QAAQ,IAAIa,MAAM,CAACb;EAAS,CAAE,CAAC,gBAEnDb,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IACHO,KAAK,EAAE,CACLgB,MAAM,CAACI,SAAS,EAChB;MACEC,WAAW,EAAEd,WAAW,CAACe,QAAQ;MACjCJ,eAAe,EAAEf,QAAQ,GAAGI,WAAW,CAACY,UAAU,GAAGZ,WAAW,CAACgB;IACnE,CAAC;EACD,CACH,CACF,eACDjC,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IAACO,KAAK,EAAE,CAACgB,MAAM,CAACf,IAAI,EAAEE,QAAQ,IAAIa,MAAM,CAACb,QAAQ;EAAE,GACrD,OAAOF,IAAI,KAAK,QAAQ,gBACvBX,KAAA,CAAAmB,aAAA,CAACZ,UAAU;IAAC2B,MAAM,EAAC,sBAAsB;IAACC,KAAK,EAAElB,WAAW,CAACN;EAAK,GAC/DA,IACS,CAAC,GAEbA,IAEE,CACU,CAAC;AAEvB,CAAC;AAED,MAAMe,MAAM,GAAGxB,UAAU,CAACkC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,aAAa,EAAE,KAAK;IACpBC,OAAO,EAAE;EACX,CAAC;EACD5B,QAAQ,EAAE;IACR6B,OAAO,EAAE;EACX,CAAC;EACD/B,IAAI,EAAE;IACJgC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACDd,SAAS,EAAE;IACTQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdM,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","Image","StyleSheet","View","concatTestID","TouchableOpacity","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","CarouselComponent","CredentialCardShadow","shadowColor","shadowOffset","height","width","shadowOpacity","shadowRadius","CredentialCardRatio","CredentialCard","cardCarouselImages","cardImage","color","credentialId","header","notice","onCardPress","onHeaderPress","style","testID","_header$color","colorScheme","cardSize","Math","ceil","headerPressHandler","cardPressHandler","noticeIconView","noticeIcon","undefined","isValidElement","NoticeIconComponent","createElement","shouldShowCarousel","styles","card","source","imageSource","image","String","backgroundColor","cardButton","onPress","carousel","imagesToRender","carouselSize","activeOpacity","disabled","_extends","blurStyle","noticeTextWrapper","text","preset","noticeText","create","borderRadius","overflow","position","marginTop","top","bottom","columnGap","flexDirection","justifyContent","paddingBottom","paddingHorizontal","paddingTop","marginVertical","flex"],"sources":["credential-card.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport { ColorValue, Image, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { TouchableOpacity } from '../../accessibility/accessibilityHistoryWrappers';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialHeader, { CredentialHeaderProps } from './credential-header';\nimport CarouselComponent, { CarouselImage } from './credential-image-carousel';\n\nexport const CredentialCardShadow: Pick<ViewStyle, 'shadowColor' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'> =\n {\n shadowColor: '#10274226',\n shadowOffset: {\n height: 5,\n width: 0,\n },\n shadowOpacity: 1,\n shadowRadius: 7,\n };\n\nexport const CredentialCardRatio = 18 / 11;\n\nexport type CredentialCardNotice = {\n text: string;\n noticeIcon?: React.ComponentType<any> | React.ReactElement;\n};\n\nexport type CredentialCardProps = {\n cardCarouselImages?: CarouselImage[];\n cardImage?: ImageOrComponentSource;\n color?: ColorValue;\n credentialId?: string;\n header: CredentialHeaderProps;\n notice?: CredentialCardNotice;\n onCardPress?: (credentialId?: string) => void;\n onHeaderPress?: (credentialId?: string) => void;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n width: number;\n};\n\nconst CredentialCard: FC<CredentialCardProps> = ({\n cardCarouselImages = [],\n cardImage,\n color = '#5A69F3',\n credentialId,\n header,\n notice,\n onCardPress,\n onHeaderPress,\n style,\n testID,\n width,\n}) => {\n const colorScheme = useAppColorScheme();\n const cardSize = {\n width,\n height: Math.ceil(width / CredentialCardRatio),\n };\n\n const headerPressHandler = useCallback(() => {\n onHeaderPress?.(credentialId);\n }, [credentialId, onHeaderPress]);\n\n const cardPressHandler = useCallback(() => {\n onCardPress?.(credentialId);\n }, [credentialId, onCardPress]);\n\n const noticeIconView: React.ReactElement | undefined = useMemo(() => {\n if (!notice?.noticeIcon) {\n return undefined;\n }\n if (React.isValidElement(notice.noticeIcon)) {\n return notice.noticeIcon;\n } else {\n const NoticeIconComponent = notice.noticeIcon as React.ComponentType<any>;\n return <NoticeIconComponent />;\n }\n }, [notice?.noticeIcon]);\n\n const shouldShowCarousel = cardSize?.width && cardSize.height;\n return (\n <View style={[styles.card, cardSize, style]} testID={testID}>\n {cardImage ? (\n 'imageSource' in cardImage ? (\n <View style={cardSize}>\n <Image testID={concatTestID(testID, 'imageSource')} source={cardImage.imageSource} style={styles.image} />\n </View>\n ) : (\n <ImageOrComponent testID={concatTestID(testID, 'cardImage')} source={cardImage} style={cardSize} />\n )\n ) : (\n <View\n testID={concatTestID(testID, 'cardBackgroundColor', String(color))}\n style={[cardSize, { backgroundColor: color }]}\n />\n )}\n {onCardPress && <TouchableOpacity style={styles.cardButton} onPress={cardPressHandler} />}\n {shouldShowCarousel ? (\n <CarouselComponent\n style={styles.carousel}\n imagesToRender={cardCarouselImages ?? []}\n carouselSize={{\n width: cardSize.width,\n height: cardSize.height - 60,\n }}\n testID={concatTestID(testID, 'carousel')}\n />\n ) : null}\n <TouchableOpacity\n activeOpacity={0.9}\n disabled={!onHeaderPress}\n onPress={headerPressHandler}\n style={styles.header}>\n <CredentialHeader {...header} color={header.color ?? color} testID={concatTestID(testID, 'header')} />\n </TouchableOpacity>\n {notice && (\n <BlurView blurStyle=\"soft\" style={[styles.notice]} testID={concatTestID(testID, 'notice')}>\n {noticeIconView && <View style={styles.noticeIcon}>{noticeIconView}</View>}\n <View style={styles.noticeTextWrapper}>\n <Typography\n color={colorScheme.text}\n preset=\"xs/line-height-small\"\n style={styles.noticeText}\n testID={concatTestID(testID, 'notice.text')}>\n {notice.text}\n </Typography>\n </View>\n </BlurView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 10,\n overflow: 'hidden',\n },\n cardButton: {\n height: '100%',\n position: 'absolute',\n width: '100%',\n },\n carousel: {\n marginTop: 60,\n },\n header: {\n position: 'absolute',\n top: 0,\n width: '100%',\n },\n image: {\n height: '100%',\n width: '100%',\n },\n notice: {\n bottom: 0,\n columnGap: 6,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n paddingBottom: 6,\n paddingHorizontal: 12,\n paddingTop: 2,\n position: 'absolute',\n width: '100%',\n },\n noticeIcon: {\n marginTop: 4,\n },\n noticeText: {\n marginVertical: 5,\n },\n noticeTextWrapper: {\n flex: 1,\n },\n});\n\nexport default CredentialCard;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","Image","StyleSheet","View","concatTestID","TouchableOpacity","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","CarouselComponent","CredentialCardShadow","shadowColor","shadowOffset","height","width","shadowOpacity","shadowRadius","CredentialCardRatio","CredentialCard","cardCarouselImages","cardImage","color","credentialId","header","notice","onCardPress","onHeaderPress","style","testID","_header$color","colorScheme","cardSize","Math","ceil","headerPressHandler","cardPressHandler","noticeIconView","noticeIcon","undefined","isValidElement","NoticeIconComponent","createElement","shouldShowCarousel","styles","card","source","imageSource","image","String","backgroundColor","cardButton","onPress","carousel","imagesToRender","carouselSize","activeOpacity","disabled","_extends","blurStyle","noticeTextWrapper","text","preset","noticeText","create","borderRadius","borderWidth","overflow","position","marginTop","top","bottom","columnGap","flexDirection","justifyContent","paddingBottom","paddingHorizontal","paddingTop","marginVertical","flex"],"sources":["credential-card.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport { ColorValue, Image, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { TouchableOpacity } from '../../accessibility/accessibilityHistoryWrappers';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialHeader, { CredentialHeaderProps } from './credential-header';\nimport CarouselComponent, { CarouselImage } from './credential-image-carousel';\n\nexport const CredentialCardShadow: Pick<ViewStyle, 'shadowColor' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'> =\n {\n shadowColor: '#10274226',\n shadowOffset: {\n height: 5,\n width: 0,\n },\n shadowOpacity: 1,\n shadowRadius: 7,\n };\n\nexport const CredentialCardRatio = 18 / 11;\n\nexport type CredentialCardNotice = {\n text: string;\n noticeIcon?: React.ComponentType<any> | React.ReactElement;\n};\n\nexport type CredentialCardProps = {\n cardCarouselImages?: CarouselImage[];\n cardImage?: ImageOrComponentSource;\n color?: ColorValue;\n credentialId?: string;\n header: CredentialHeaderProps;\n notice?: CredentialCardNotice;\n onCardPress?: (credentialId?: string) => void;\n onHeaderPress?: (credentialId?: string) => void;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n width: number;\n};\n\nconst CredentialCard: FC<CredentialCardProps> = ({\n cardCarouselImages = [],\n cardImage,\n color = '#5A69F3',\n credentialId,\n header,\n notice,\n onCardPress,\n onHeaderPress,\n style,\n testID,\n width,\n}) => {\n const colorScheme = useAppColorScheme();\n const cardSize = {\n width,\n height: Math.ceil(width / CredentialCardRatio),\n };\n\n const headerPressHandler = useCallback(() => {\n onHeaderPress?.(credentialId);\n }, [credentialId, onHeaderPress]);\n\n const cardPressHandler = useCallback(() => {\n onCardPress?.(credentialId);\n }, [credentialId, onCardPress]);\n\n const noticeIconView: React.ReactElement | undefined = useMemo(() => {\n if (!notice?.noticeIcon) {\n return undefined;\n }\n if (React.isValidElement(notice.noticeIcon)) {\n return notice.noticeIcon;\n } else {\n const NoticeIconComponent = notice.noticeIcon as React.ComponentType<any>;\n return <NoticeIconComponent />;\n }\n }, [notice?.noticeIcon]);\n\n const shouldShowCarousel = cardSize?.width && cardSize.height;\n return (\n <View style={[styles.card, cardSize, style]} testID={testID}>\n {cardImage ? (\n 'imageSource' in cardImage ? (\n <View style={cardSize}>\n <Image testID={concatTestID(testID, 'imageSource')} source={cardImage.imageSource} style={styles.image} />\n </View>\n ) : (\n <ImageOrComponent testID={concatTestID(testID, 'cardImage')} source={cardImage} style={cardSize} />\n )\n ) : (\n <View\n testID={concatTestID(testID, 'cardBackgroundColor', String(color))}\n style={[cardSize, { backgroundColor: color }]}\n />\n )}\n {onCardPress && <TouchableOpacity style={styles.cardButton} onPress={cardPressHandler} />}\n {shouldShowCarousel ? (\n <CarouselComponent\n style={styles.carousel}\n imagesToRender={cardCarouselImages ?? []}\n carouselSize={{\n width: cardSize.width,\n height: cardSize.height - 60,\n }}\n testID={concatTestID(testID, 'carousel')}\n />\n ) : null}\n <TouchableOpacity\n activeOpacity={0.9}\n disabled={!onHeaderPress}\n onPress={headerPressHandler}\n style={styles.header}>\n <CredentialHeader {...header} color={header.color ?? color} testID={concatTestID(testID, 'header')} />\n </TouchableOpacity>\n {notice && (\n <BlurView blurStyle=\"soft\" style={[styles.notice]} testID={concatTestID(testID, 'notice')}>\n {noticeIconView && <View style={styles.noticeIcon}>{noticeIconView}</View>}\n <View style={styles.noticeTextWrapper}>\n <Typography\n color={colorScheme.text}\n preset=\"xs/line-height-small\"\n style={styles.noticeText}\n testID={concatTestID(testID, 'notice.text')}>\n {notice.text}\n </Typography>\n </View>\n </BlurView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n cardButton: {\n height: '100%',\n position: 'absolute',\n width: '100%',\n },\n carousel: {\n marginTop: 60,\n },\n header: {\n position: 'absolute',\n top: 0,\n width: '100%',\n },\n image: {\n height: '100%',\n width: '100%',\n },\n notice: {\n bottom: 0,\n columnGap: 6,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n paddingBottom: 6,\n paddingHorizontal: 12,\n paddingTop: 2,\n position: 'absolute',\n width: '100%',\n },\n noticeIcon: {\n marginTop: 4,\n },\n noticeText: {\n marginVertical: 5,\n },\n noticeTextWrapper: {\n flex: 1,\n },\n});\n\nexport default CredentialCard;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -166,10 +166,12 @@ const styles = StyleSheet.create({
|
|
|
166
166
|
width: '100%'
|
|
167
167
|
},
|
|
168
168
|
card: {
|
|
169
|
-
borderRadius: 0
|
|
169
|
+
borderRadius: 0,
|
|
170
|
+
borderWidth: 0
|
|
170
171
|
},
|
|
171
172
|
detailsCard: {
|
|
172
173
|
borderRadius: 10,
|
|
174
|
+
borderWidth: 0,
|
|
173
175
|
overflow: 'hidden'
|
|
174
176
|
},
|
|
175
177
|
footer: {
|