@unif/react-native-camera 2.6.0 → 2.7.0
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/README.md +14 -0
- package/lib/module/camera/Camera.js +96 -27
- package/lib/module/camera/Camera.js.map +1 -1
- package/lib/module/camera/CaptureFlash.js +38 -0
- package/lib/module/camera/CaptureFlash.js.map +1 -0
- package/lib/module/camera/CaptureFlash.test.js +19 -0
- package/lib/module/camera/CaptureFlash.test.js.map +1 -0
- package/lib/module/camera/Container.js +166 -64
- package/lib/module/camera/Container.js.map +1 -1
- package/lib/module/camera/FocusIndicator.js +99 -23
- package/lib/module/camera/FocusIndicator.js.map +1 -1
- package/lib/module/camera/FocusIndicator.test.js +27 -0
- package/lib/module/camera/FocusIndicator.test.js.map +1 -0
- package/lib/module/camera/colors/dark.js +22 -0
- package/lib/module/camera/colors/dark.js.map +1 -0
- package/lib/module/camera/colors/dark.test.js +10 -0
- package/lib/module/camera/colors/dark.test.js.map +1 -0
- package/lib/module/camera/footer/ActionRow.js +65 -0
- package/lib/module/camera/footer/ActionRow.js.map +1 -0
- package/lib/module/camera/footer/ActionRow.test.js +53 -0
- package/lib/module/camera/footer/ActionRow.test.js.map +1 -0
- package/lib/module/camera/footer/FlipButton.js +31 -0
- package/lib/module/camera/footer/FlipButton.js.map +1 -0
- package/lib/module/camera/footer/FlipButton.test.js +16 -0
- package/lib/module/camera/footer/FlipButton.test.js.map +1 -0
- package/lib/module/camera/footer/ModeSwitcherPill.js +89 -0
- package/lib/module/camera/footer/ModeSwitcherPill.js.map +1 -0
- package/lib/module/camera/footer/ModeSwitcherPill.test.js +43 -0
- package/lib/module/camera/footer/ModeSwitcherPill.test.js.map +1 -0
- package/lib/module/camera/footer/RecordingTimer.js +66 -0
- package/lib/module/camera/footer/RecordingTimer.js.map +1 -0
- package/lib/module/camera/footer/RecordingTimer.test.js +20 -0
- package/lib/module/camera/footer/RecordingTimer.test.js.map +1 -0
- package/lib/module/camera/footer/Shutter.js +70 -0
- package/lib/module/camera/footer/Shutter.js.map +1 -0
- package/lib/module/camera/footer/Shutter.test.js +42 -0
- package/lib/module/camera/footer/Shutter.test.js.map +1 -0
- package/lib/module/camera/footer/ThumbnailStack.js +71 -0
- package/lib/module/camera/footer/ThumbnailStack.js.map +1 -0
- package/lib/module/camera/footer/ThumbnailStack.test.js +30 -0
- package/lib/module/camera/footer/ThumbnailStack.test.js.map +1 -0
- package/lib/module/camera/footer/ZoomChips.js +57 -0
- package/lib/module/camera/footer/ZoomChips.js.map +1 -0
- package/lib/module/camera/footer/ZoomChips.test.js +17 -0
- package/lib/module/camera/footer/ZoomChips.test.js.map +1 -0
- package/lib/module/camera/footer/index.js +7 -1
- package/lib/module/camera/footer/index.js.map +1 -1
- package/lib/module/camera/icons/VolumeIcon.js +44 -0
- package/lib/module/camera/icons/VolumeIcon.js.map +1 -0
- package/lib/module/camera/icons/VolumeIcon.test.js +18 -0
- package/lib/module/camera/icons/VolumeIcon.test.js.map +1 -0
- package/lib/module/camera/index.js +3 -1
- package/lib/module/camera/index.js.map +1 -1
- package/lib/module/camera/preview/PreviewBottomBar.js +69 -0
- package/lib/module/camera/preview/PreviewBottomBar.js.map +1 -0
- package/lib/module/camera/preview/PreviewBottomBar.test.js +46 -0
- package/lib/module/camera/preview/PreviewBottomBar.test.js.map +1 -0
- package/lib/module/camera/preview/PreviewOverlay.js +89 -0
- package/lib/module/camera/preview/PreviewOverlay.js.map +1 -0
- package/lib/module/camera/preview/PreviewOverlay.test.js +45 -0
- package/lib/module/camera/preview/PreviewOverlay.test.js.map +1 -0
- package/lib/module/camera/preview/PreviewTopBar.js +96 -0
- package/lib/module/camera/preview/PreviewTopBar.js.map +1 -0
- package/lib/module/camera/preview/PreviewTopBar.test.js +44 -0
- package/lib/module/camera/preview/PreviewTopBar.test.js.map +1 -0
- package/lib/module/camera/preview/groupTypes.js +11 -0
- package/lib/module/camera/preview/groupTypes.js.map +1 -0
- package/lib/module/camera/preview/groupTypes.test.js +25 -0
- package/lib/module/camera/preview/groupTypes.test.js.map +1 -0
- package/lib/module/camera/preview/index.js +3 -4
- package/lib/module/camera/preview/index.js.map +1 -1
- package/lib/module/camera/setup/SideRail.js +138 -0
- package/lib/module/camera/setup/SideRail.js.map +1 -0
- package/lib/module/camera/setup/SideRail.test.js +49 -0
- package/lib/module/camera/setup/SideRail.test.js.map +1 -0
- package/lib/module/camera/setup/index.js +1 -1
- package/lib/module/camera/setup/index.js.map +1 -1
- package/lib/module/components/Carousel/SlideItem.js +5 -3
- package/lib/module/components/Carousel/SlideItem.js.map +1 -1
- package/lib/module/components/Carousel/SlideItem.test.js +39 -0
- package/lib/module/components/Carousel/SlideItem.test.js.map +1 -0
- package/lib/module/components/VideoPlayer.js +34 -0
- package/lib/module/components/VideoPlayer.js.map +1 -0
- package/lib/module/components/VideoPlayer.test.js +15 -0
- package/lib/module/components/VideoPlayer.test.js.map +1 -0
- package/lib/module/components/index.js +0 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/hooks/index.js +0 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/typescript/src/camera/Camera.d.ts +3 -0
- package/lib/typescript/src/camera/Camera.d.ts.map +1 -1
- package/lib/typescript/src/camera/CaptureFlash.d.ts +6 -0
- package/lib/typescript/src/camera/CaptureFlash.d.ts.map +1 -0
- package/lib/typescript/src/camera/CaptureFlash.test.d.ts +2 -0
- package/lib/typescript/src/camera/CaptureFlash.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/Container.d.ts.map +1 -1
- package/lib/typescript/src/camera/FocusIndicator.d.ts.map +1 -1
- package/lib/typescript/src/camera/FocusIndicator.test.d.ts +2 -0
- package/lib/typescript/src/camera/FocusIndicator.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/colors/dark.d.ts +18 -0
- package/lib/typescript/src/camera/colors/dark.d.ts.map +1 -0
- package/lib/typescript/src/camera/colors/dark.test.d.ts +2 -0
- package/lib/typescript/src/camera/colors/dark.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ActionRow.d.ts +14 -0
- package/lib/typescript/src/camera/footer/ActionRow.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ActionRow.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/ActionRow.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/FlipButton.d.ts +4 -0
- package/lib/typescript/src/camera/footer/FlipButton.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/FlipButton.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/FlipButton.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ModeSwitcherPill.d.ts +10 -0
- package/lib/typescript/src/camera/footer/ModeSwitcherPill.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ModeSwitcherPill.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/ModeSwitcherPill.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/RecordingTimer.d.ts +5 -0
- package/lib/typescript/src/camera/footer/RecordingTimer.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/RecordingTimer.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/RecordingTimer.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/Shutter.d.ts +9 -0
- package/lib/typescript/src/camera/footer/Shutter.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/Shutter.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/Shutter.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ThumbnailStack.d.ts +8 -0
- package/lib/typescript/src/camera/footer/ThumbnailStack.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ThumbnailStack.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/ThumbnailStack.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ZoomChips.d.ts +5 -0
- package/lib/typescript/src/camera/footer/ZoomChips.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/ZoomChips.test.d.ts +2 -0
- package/lib/typescript/src/camera/footer/ZoomChips.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/footer/index.d.ts +7 -1
- package/lib/typescript/src/camera/footer/index.d.ts.map +1 -1
- package/lib/typescript/src/camera/icons/VolumeIcon.d.ts +8 -0
- package/lib/typescript/src/camera/icons/VolumeIcon.d.ts.map +1 -0
- package/lib/typescript/src/camera/icons/VolumeIcon.test.d.ts +2 -0
- package/lib/typescript/src/camera/icons/VolumeIcon.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/index.d.ts +3 -1
- package/lib/typescript/src/camera/index.d.ts.map +1 -1
- package/lib/typescript/src/camera/preview/PreviewBottomBar.d.ts +12 -0
- package/lib/typescript/src/camera/preview/PreviewBottomBar.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/PreviewBottomBar.test.d.ts +2 -0
- package/lib/typescript/src/camera/preview/PreviewBottomBar.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/PreviewOverlay.d.ts +12 -0
- package/lib/typescript/src/camera/preview/PreviewOverlay.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/PreviewOverlay.test.d.ts +2 -0
- package/lib/typescript/src/camera/preview/PreviewOverlay.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/PreviewTopBar.d.ts +10 -0
- package/lib/typescript/src/camera/preview/PreviewTopBar.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/PreviewTopBar.test.d.ts +2 -0
- package/lib/typescript/src/camera/preview/PreviewTopBar.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/groupTypes.d.ts +4 -0
- package/lib/typescript/src/camera/preview/groupTypes.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/groupTypes.test.d.ts +2 -0
- package/lib/typescript/src/camera/preview/groupTypes.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/preview/index.d.ts +3 -4
- package/lib/typescript/src/camera/preview/index.d.ts.map +1 -1
- package/lib/typescript/src/camera/setup/SideRail.d.ts +15 -0
- package/lib/typescript/src/camera/setup/SideRail.d.ts.map +1 -0
- package/lib/typescript/src/camera/setup/SideRail.test.d.ts +2 -0
- package/lib/typescript/src/camera/setup/SideRail.test.d.ts.map +1 -0
- package/lib/typescript/src/camera/setup/index.d.ts +2 -1
- package/lib/typescript/src/camera/setup/index.d.ts.map +1 -1
- package/lib/typescript/src/components/Carousel/SlideItem.d.ts.map +1 -1
- package/lib/typescript/src/components/Carousel/SlideItem.test.d.ts +2 -0
- package/lib/typescript/src/components/Carousel/SlideItem.test.d.ts.map +1 -0
- package/lib/typescript/src/components/VideoPlayer.d.ts +4 -0
- package/lib/typescript/src/components/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/components/VideoPlayer.test.d.ts +2 -0
- package/lib/typescript/src/components/VideoPlayer.test.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +0 -1
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/index.d.ts +0 -1
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/package.json +7 -3
- package/src/camera/Camera.tsx +117 -26
- package/src/camera/CaptureFlash.test.tsx +11 -0
- package/src/camera/CaptureFlash.tsx +42 -0
- package/src/camera/Container.tsx +158 -64
- package/src/camera/FocusIndicator.test.tsx +17 -0
- package/src/camera/FocusIndicator.tsx +111 -27
- package/src/camera/colors/dark.test.ts +8 -0
- package/src/camera/colors/dark.ts +19 -0
- package/src/camera/footer/ActionRow.test.tsx +44 -0
- package/src/camera/footer/ActionRow.tsx +80 -0
- package/src/camera/footer/FlipButton.test.tsx +9 -0
- package/src/camera/footer/FlipButton.tsx +22 -0
- package/src/camera/footer/ModeSwitcherPill.test.tsx +29 -0
- package/src/camera/footer/ModeSwitcherPill.tsx +97 -0
- package/src/camera/footer/RecordingTimer.test.tsx +14 -0
- package/src/camera/footer/RecordingTimer.tsx +58 -0
- package/src/camera/footer/Shutter.test.tsx +26 -0
- package/src/camera/footer/Shutter.tsx +71 -0
- package/src/camera/footer/ThumbnailStack.test.tsx +19 -0
- package/src/camera/footer/ThumbnailStack.tsx +58 -0
- package/src/camera/footer/ZoomChips.test.tsx +9 -0
- package/src/camera/footer/ZoomChips.tsx +53 -0
- package/src/camera/footer/index.tsx +7 -1
- package/src/camera/icons/VolumeIcon.test.tsx +9 -0
- package/src/camera/icons/VolumeIcon.tsx +39 -0
- package/src/camera/index.tsx +11 -1
- package/src/camera/preview/PreviewBottomBar.test.tsx +43 -0
- package/src/camera/preview/PreviewBottomBar.tsx +79 -0
- package/src/camera/preview/PreviewOverlay.test.tsx +45 -0
- package/src/camera/preview/PreviewOverlay.tsx +99 -0
- package/src/camera/preview/PreviewTopBar.test.tsx +46 -0
- package/src/camera/preview/PreviewTopBar.tsx +91 -0
- package/src/camera/preview/groupTypes.test.ts +34 -0
- package/src/camera/preview/groupTypes.ts +15 -0
- package/src/camera/preview/index.tsx +3 -4
- package/src/camera/setup/SideRail.test.tsx +37 -0
- package/src/camera/setup/SideRail.tsx +161 -0
- package/src/camera/setup/index.tsx +2 -1
- package/src/components/Carousel/SlideItem.test.tsx +27 -0
- package/src/components/Carousel/SlideItem.tsx +11 -7
- package/src/components/VideoPlayer.test.tsx +8 -0
- package/src/components/VideoPlayer.tsx +30 -0
- package/src/components/index.tsx +0 -1
- package/src/hooks/index.ts +0 -1
- package/lib/module/camera/footer/Footer.js +0 -94
- package/lib/module/camera/footer/Footer.js.map +0 -1
- package/lib/module/camera/preview/PreView.js +0 -43
- package/lib/module/camera/preview/PreView.js.map +0 -1
- package/lib/module/camera/preview/PreViewContainer.js +0 -33
- package/lib/module/camera/preview/PreViewContainer.js.map +0 -1
- package/lib/module/camera/preview/PreviewFooter.js +0 -36
- package/lib/module/camera/preview/PreviewFooter.js.map +0 -1
- package/lib/module/camera/preview/SinglePre.js +0 -32
- package/lib/module/camera/preview/SinglePre.js.map +0 -1
- package/lib/module/camera/setup/SetUp.js +0 -74
- package/lib/module/camera/setup/SetUp.js.map +0 -1
- package/lib/module/components/PreviewThumbnail.js +0 -39
- package/lib/module/components/PreviewThumbnail.js.map +0 -1
- package/lib/module/hooks/useConfirm.js +0 -16
- package/lib/module/hooks/useConfirm.js.map +0 -1
- package/lib/typescript/src/camera/footer/Footer.d.ts +0 -14
- package/lib/typescript/src/camera/footer/Footer.d.ts.map +0 -1
- package/lib/typescript/src/camera/preview/PreView.d.ts +0 -7
- package/lib/typescript/src/camera/preview/PreView.d.ts.map +0 -1
- package/lib/typescript/src/camera/preview/PreViewContainer.d.ts +0 -9
- package/lib/typescript/src/camera/preview/PreViewContainer.d.ts.map +0 -1
- package/lib/typescript/src/camera/preview/PreviewFooter.d.ts +0 -7
- package/lib/typescript/src/camera/preview/PreviewFooter.d.ts.map +0 -1
- package/lib/typescript/src/camera/preview/SinglePre.d.ts +0 -7
- package/lib/typescript/src/camera/preview/SinglePre.d.ts.map +0 -1
- package/lib/typescript/src/camera/setup/SetUp.d.ts +0 -13
- package/lib/typescript/src/camera/setup/SetUp.d.ts.map +0 -1
- package/lib/typescript/src/components/PreviewThumbnail.d.ts +0 -9
- package/lib/typescript/src/components/PreviewThumbnail.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useConfirm.d.ts +0 -2
- package/lib/typescript/src/hooks/useConfirm.d.ts.map +0 -1
- package/src/camera/footer/Footer.tsx +0 -113
- package/src/camera/preview/PreView.tsx +0 -32
- package/src/camera/preview/PreViewContainer.tsx +0 -30
- package/src/camera/preview/PreviewFooter.tsx +0 -38
- package/src/camera/preview/SinglePre.tsx +0 -30
- package/src/camera/setup/SetUp.tsx +0 -93
- package/src/components/PreviewThumbnail.tsx +0 -45
- package/src/hooks/useConfirm.tsx +0 -11
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
4
|
-
import { Button, Segmented, r, useThemedStyles } from '@unif/react-native-design';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
const labelMap = {
|
|
7
|
-
single: '拍照',
|
|
8
|
-
continuous: '连拍',
|
|
9
|
-
video: '视频'
|
|
10
|
-
};
|
|
11
|
-
export function Footer({
|
|
12
|
-
modes,
|
|
13
|
-
currentIndex,
|
|
14
|
-
recording,
|
|
15
|
-
onShutter,
|
|
16
|
-
onSelectMode,
|
|
17
|
-
onCancel,
|
|
18
|
-
onFinishBurst,
|
|
19
|
-
burstCount
|
|
20
|
-
}) {
|
|
21
|
-
const styles = useThemedStyles(makeStyles);
|
|
22
|
-
const modeItems = modes.map((m, i) => ({
|
|
23
|
-
id: String(i),
|
|
24
|
-
label: labelMap[m.mode],
|
|
25
|
-
testID: `mode-${m.mode}`
|
|
26
|
-
}));
|
|
27
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
28
|
-
style: styles.root,
|
|
29
|
-
children: [!recording && modeItems.length > 0 && /*#__PURE__*/_jsx(View, {
|
|
30
|
-
style: styles.modesRow,
|
|
31
|
-
children: /*#__PURE__*/_jsx(Segmented, {
|
|
32
|
-
items: modeItems,
|
|
33
|
-
value: String(currentIndex),
|
|
34
|
-
onChange: v => onSelectMode(Number(v)),
|
|
35
|
-
testID: "mode-segmented"
|
|
36
|
-
})
|
|
37
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
38
|
-
style: styles.actions,
|
|
39
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
40
|
-
variant: "ghost",
|
|
41
|
-
label: "\u53D6\u6D88",
|
|
42
|
-
onPress: onCancel,
|
|
43
|
-
testID: "cancel-btn",
|
|
44
|
-
disabled: recording
|
|
45
|
-
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
46
|
-
onPress: onShutter,
|
|
47
|
-
testID: "shutter-btn",
|
|
48
|
-
style: [styles.shutter, recording && styles.shutterRecording]
|
|
49
|
-
}), onFinishBurst && burstCount && burstCount > 0 ? /*#__PURE__*/_jsx(Button, {
|
|
50
|
-
variant: "primary",
|
|
51
|
-
label: `完成 (${burstCount})`,
|
|
52
|
-
onPress: onFinishBurst,
|
|
53
|
-
testID: "finish-burst-btn"
|
|
54
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
55
|
-
style: styles.placeholder
|
|
56
|
-
})]
|
|
57
|
-
})]
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
const makeStyles = c => StyleSheet.create({
|
|
61
|
-
root: {
|
|
62
|
-
position: 'absolute',
|
|
63
|
-
bottom: r(30),
|
|
64
|
-
left: 0,
|
|
65
|
-
right: 0,
|
|
66
|
-
alignItems: 'center'
|
|
67
|
-
},
|
|
68
|
-
modesRow: {
|
|
69
|
-
marginBottom: r(16)
|
|
70
|
-
},
|
|
71
|
-
actions: {
|
|
72
|
-
flexDirection: 'row',
|
|
73
|
-
width: '100%',
|
|
74
|
-
justifyContent: 'space-around',
|
|
75
|
-
alignItems: 'center'
|
|
76
|
-
},
|
|
77
|
-
// shutter 圆形快门:相机 UX 惯例,沿用白底高对比度.
|
|
78
|
-
// 录制态切换为 c.error 红底标识"录制中".
|
|
79
|
-
shutter: {
|
|
80
|
-
width: r(64),
|
|
81
|
-
height: r(64),
|
|
82
|
-
borderRadius: r(32),
|
|
83
|
-
backgroundColor: c.surface,
|
|
84
|
-
borderWidth: r(4),
|
|
85
|
-
borderColor: c.outline
|
|
86
|
-
},
|
|
87
|
-
shutterRecording: {
|
|
88
|
-
backgroundColor: c.error
|
|
89
|
-
},
|
|
90
|
-
placeholder: {
|
|
91
|
-
width: r(60)
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
//# sourceMappingURL=Footer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","TouchableOpacity","View","Button","Segmented","r","useThemedStyles","jsx","_jsx","jsxs","_jsxs","labelMap","single","continuous","video","Footer","modes","currentIndex","recording","onShutter","onSelectMode","onCancel","onFinishBurst","burstCount","styles","makeStyles","modeItems","map","m","i","id","String","label","mode","testID","style","root","children","length","modesRow","items","value","onChange","v","Number","actions","variant","onPress","disabled","shutter","shutterRecording","placeholder","c","create","position","bottom","left","right","alignItems","marginBottom","flexDirection","width","justifyContent","height","borderRadius","backgroundColor","surface","borderWidth","borderColor","outline","error"],"sourceRoot":"../../../../src","sources":["camera/footer/Footer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { StyleSheet, View } from 'react-native';
|
|
5
|
-
import { r } from '@unif/react-native-design';
|
|
6
|
-
import { Carousel } from "../../components/Carousel/index.js";
|
|
7
|
-
import { PreviewThumbnail } from "../../components/PreviewThumbnail.js";
|
|
8
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
-
export function PreView({
|
|
10
|
-
files
|
|
11
|
-
}) {
|
|
12
|
-
const [index, setIndex] = useState(0);
|
|
13
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
14
|
-
style: styles.root,
|
|
15
|
-
testID: "multi-pre",
|
|
16
|
-
children: [/*#__PURE__*/_jsx(Carousel, {
|
|
17
|
-
data: files,
|
|
18
|
-
onIndexChange: setIndex
|
|
19
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
20
|
-
style: styles.thumbWrap,
|
|
21
|
-
children: /*#__PURE__*/_jsx(PreviewThumbnail, {
|
|
22
|
-
files: files,
|
|
23
|
-
currentIndex: index,
|
|
24
|
-
onTap: setIndex
|
|
25
|
-
})
|
|
26
|
-
})]
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
const styles = StyleSheet.create({
|
|
30
|
-
// 多图预览容器固定黑底:相机 UX 惯例,与 SinglePre / PreViewContainer 一致.
|
|
31
|
-
root: {
|
|
32
|
-
flex: 1,
|
|
33
|
-
backgroundColor: '#000'
|
|
34
|
-
},
|
|
35
|
-
thumbWrap: {
|
|
36
|
-
position: 'absolute',
|
|
37
|
-
bottom: r(100),
|
|
38
|
-
left: 0,
|
|
39
|
-
right: 0,
|
|
40
|
-
alignItems: 'center'
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=PreView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useState","StyleSheet","View","r","Carousel","PreviewThumbnail","jsx","_jsx","jsxs","_jsxs","PreView","files","index","setIndex","style","styles","root","testID","children","data","onIndexChange","thumbWrap","currentIndex","onTap","create","flex","backgroundColor","position","bottom","left","right","alignItems"],"sourceRoot":"../../../../src","sources":["camera/preview/PreView.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,CAAC,QAAQ,2BAA2B;AAE7C,SAASC,QAAQ,QAAQ,oCAA2B;AACpD,SAASC,gBAAgB,QAAQ,sCAAmC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAIrE,OAAO,SAASC,OAAOA,CAAC;EAAEC;AAAa,CAAC,EAAE;EACxC,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAC,CAAC,CAAC;EACrC,oBACES,KAAA,CAACP,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,MAAM,EAAC,WAAW;IAAAC,QAAA,gBAC1CX,IAAA,CAACH,QAAQ;MAACe,IAAI,EAAER,KAAM;MAACS,aAAa,EAAEP;IAAS,CAAE,CAAC,eAClDN,IAAA,CAACL,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACM,SAAU;MAAAH,QAAA,eAC5BX,IAAA,CAACF,gBAAgB;QAACM,KAAK,EAAEA,KAAM;QAACW,YAAY,EAAEV,KAAM;QAACW,KAAK,EAAEV;MAAS,CAAE;IAAC,CACpE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAME,MAAM,GAAGd,UAAU,CAACuB,MAAM,CAAC;EAC/B;EACAR,IAAI,EAAE;IAAES,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO,CAAC;EAC1CL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAEzB,CAAC,CAAC,GAAG,CAAC;IACd0B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { StyleSheet, View } from 'react-native';
|
|
4
|
-
import { SinglePre } from "./SinglePre.js";
|
|
5
|
-
import { PreView } from "./PreView.js";
|
|
6
|
-
import { PreviewFooter } from "./PreviewFooter.js";
|
|
7
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
export function PreViewContainer({
|
|
9
|
-
files,
|
|
10
|
-
onRetake,
|
|
11
|
-
onConfirm
|
|
12
|
-
}) {
|
|
13
|
-
const first = files[0];
|
|
14
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
15
|
-
style: styles.root,
|
|
16
|
-
children: [files.length === 1 && first != null ? /*#__PURE__*/_jsx(SinglePre, {
|
|
17
|
-
file: first
|
|
18
|
-
}) : files.length > 1 ? /*#__PURE__*/_jsx(PreView, {
|
|
19
|
-
files: files
|
|
20
|
-
}) : null, /*#__PURE__*/_jsx(PreviewFooter, {
|
|
21
|
-
onRetake: onRetake,
|
|
22
|
-
onConfirm: onConfirm
|
|
23
|
-
})]
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
const styles = StyleSheet.create({
|
|
27
|
-
// 预览容器固定黑底:相机 UX 惯例,与 SinglePre / PreView / SlideItem 一致.
|
|
28
|
-
root: {
|
|
29
|
-
flex: 1,
|
|
30
|
-
backgroundColor: '#000'
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=PreViewContainer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","SinglePre","PreView","PreviewFooter","jsx","_jsx","jsxs","_jsxs","PreViewContainer","files","onRetake","onConfirm","first","style","styles","root","children","length","file","create","flex","backgroundColor"],"sourceRoot":"../../../../src","sources":["camera/preview/PreViewContainer.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,OAAO,QAAQ,cAAW;AACnC,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQhD,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EACtE,MAAMC,KAAK,GAAGH,KAAK,CAAC,CAAC,CAAC;EACtB,oBACEF,KAAA,CAACP,IAAI;IAACa,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,GACtBP,KAAK,CAACQ,MAAM,KAAK,CAAC,IAAIL,KAAK,IAAI,IAAI,gBAClCP,IAAA,CAACJ,SAAS;MAACiB,IAAI,EAAEN;IAAM,CAAE,CAAC,GACxBH,KAAK,CAACQ,MAAM,GAAG,CAAC,gBAClBZ,IAAA,CAACH,OAAO;MAACO,KAAK,EAAEA;IAAM,CAAE,CAAC,GACvB,IAAI,eACRJ,IAAA,CAACF,aAAa;MAACO,QAAQ,EAAEA,QAAS;MAACC,SAAS,EAAEA;IAAU,CAAE,CAAC;EAAA,CACvD,CAAC;AAEX;AAEA,MAAMG,MAAM,GAAGf,UAAU,CAACoB,MAAM,CAAC;EAC/B;EACAJ,IAAI,EAAE;IAAEK,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO;AAC3C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { StyleSheet, View } from 'react-native';
|
|
4
|
-
import { Button, r } from '@unif/react-native-design';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
export function PreviewFooter({
|
|
7
|
-
onRetake,
|
|
8
|
-
onConfirm
|
|
9
|
-
}) {
|
|
10
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
11
|
-
style: styles.root,
|
|
12
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
13
|
-
variant: "ghost",
|
|
14
|
-
label: "\u91CD\u62CD",
|
|
15
|
-
onPress: onRetake,
|
|
16
|
-
testID: "retake-btn"
|
|
17
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
18
|
-
variant: "primary",
|
|
19
|
-
label: "\u4F7F\u7528\u7167\u7247",
|
|
20
|
-
onPress: onConfirm,
|
|
21
|
-
testID: "confirm-btn"
|
|
22
|
-
})]
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const styles = StyleSheet.create({
|
|
26
|
-
root: {
|
|
27
|
-
position: 'absolute',
|
|
28
|
-
bottom: r(40),
|
|
29
|
-
left: 0,
|
|
30
|
-
right: 0,
|
|
31
|
-
flexDirection: 'row',
|
|
32
|
-
justifyContent: 'space-around',
|
|
33
|
-
alignItems: 'center'
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=PreviewFooter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","Button","r","jsx","_jsx","jsxs","_jsxs","PreviewFooter","onRetake","onConfirm","style","styles","root","children","variant","label","onPress","testID","create","position","bottom","left","right","flexDirection","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["camera/preview/PreviewFooter.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,MAAM,EAAEC,CAAC,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EAC5D,oBACEH,KAAA,CAACN,IAAI;IAACU,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,gBACvBT,IAAA,CAACH,MAAM;MACLa,OAAO,EAAC,OAAO;MACfC,KAAK,EAAC,cAAI;MACVC,OAAO,EAAER,QAAS;MAClBS,MAAM,EAAC;IAAY,CACpB,CAAC,eACFb,IAAA,CAACH,MAAM;MACLa,OAAO,EAAC,SAAS;MACjBC,KAAK,EAAC,0BAAM;MACZC,OAAO,EAAEP,SAAU;MACnBQ,MAAM,EAAC;IAAa,CACrB,CAAC;EAAA,CACE,CAAC;AAEX;AAEA,MAAMN,MAAM,GAAGZ,UAAU,CAACmB,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJO,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAElB,CAAC,CAAC,EAAE,CAAC;IACbmB,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,cAAc;IAC9BC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Image, StyleSheet, View } from 'react-native';
|
|
4
|
-
import { Empty } from '@unif/react-native-design';
|
|
5
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
export function SinglePre({
|
|
7
|
-
file
|
|
8
|
-
}) {
|
|
9
|
-
return /*#__PURE__*/_jsx(View, {
|
|
10
|
-
style: styles.root,
|
|
11
|
-
testID: "single-pre",
|
|
12
|
-
children: file.mime === 'video/mp4' ? /*#__PURE__*/_jsx(Empty, {
|
|
13
|
-
title: `视频 · ${file.duration?.toFixed(1) ?? '0.0'}s`,
|
|
14
|
-
desc: file.path
|
|
15
|
-
}) : /*#__PURE__*/_jsx(Image, {
|
|
16
|
-
source: {
|
|
17
|
-
uri: file.uri
|
|
18
|
-
},
|
|
19
|
-
style: StyleSheet.absoluteFill,
|
|
20
|
-
resizeMode: "contain"
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
const styles = StyleSheet.create({
|
|
25
|
-
// 相机预览容器固定黑底:相机 UX 惯例(任何主题下都需要让照片 / 视频在纯黑上凸显),
|
|
26
|
-
// 不走 c.background token.
|
|
27
|
-
root: {
|
|
28
|
-
flex: 1,
|
|
29
|
-
backgroundColor: '#000'
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=SinglePre.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Image","StyleSheet","View","Empty","jsx","_jsx","SinglePre","file","style","styles","root","testID","children","mime","title","duration","toFixed","desc","path","source","uri","absoluteFill","resizeMode","create","flex","backgroundColor"],"sourceRoot":"../../../../src","sources":["camera/preview/SinglePre.tsx"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACtD,SAASC,KAAK,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAKlD,OAAO,SAASC,SAASA,CAAC;EAAEC;AAAY,CAAC,EAAE;EACzC,oBACEF,IAAA,CAACH,IAAI;IAACM,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,MAAM,EAAC,YAAY;IAAAC,QAAA,EAC1CL,IAAI,CAACM,IAAI,KAAK,WAAW,gBACxBR,IAAA,CAACF,KAAK;MACJW,KAAK,EAAE,QAAQP,IAAI,CAACQ,QAAQ,EAAEC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,GAAI;MACrDC,IAAI,EAAEV,IAAI,CAACW;IAAK,CACjB,CAAC,gBAEFb,IAAA,CAACL,KAAK;MACJmB,MAAM,EAAE;QAAEC,GAAG,EAAEb,IAAI,CAACa;MAAI,CAAE;MAC1BZ,KAAK,EAAEP,UAAU,CAACoB,YAAa;MAC/BC,UAAU,EAAC;IAAS,CACrB;EACF,CACG,CAAC;AAEX;AAEA,MAAMb,MAAM,GAAGR,UAAU,CAACsB,MAAM,CAAC;EAC/B;EACA;EACAb,IAAI,EAAE;IAAEc,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO;AAC3C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { StyleSheet, View } from 'react-native';
|
|
4
|
-
import { Chip, Icon, r, useColors } from '@unif/react-native-design';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
const flashLabel = {
|
|
7
|
-
off: '闪关',
|
|
8
|
-
on: '闪开',
|
|
9
|
-
auto: '自动'
|
|
10
|
-
};
|
|
11
|
-
const flashOrder = ['off', 'auto', 'on'];
|
|
12
|
-
const flashIconMap = {
|
|
13
|
-
off: 'flash-off',
|
|
14
|
-
on: 'flash-on',
|
|
15
|
-
auto: 'flash-auto'
|
|
16
|
-
};
|
|
17
|
-
export function SetUp({
|
|
18
|
-
flash,
|
|
19
|
-
aspectRatio,
|
|
20
|
-
onChangeFlash,
|
|
21
|
-
onChangeAspectRatio,
|
|
22
|
-
onToggleLens,
|
|
23
|
-
lensLabel
|
|
24
|
-
}) {
|
|
25
|
-
const c = useColors();
|
|
26
|
-
const nextFlash = () => {
|
|
27
|
-
const i = flashOrder.indexOf(flash);
|
|
28
|
-
const next = flashOrder[(i + 1) % flashOrder.length];
|
|
29
|
-
onChangeFlash(next);
|
|
30
|
-
};
|
|
31
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
32
|
-
style: styles.root,
|
|
33
|
-
children: [/*#__PURE__*/_jsx(Chip, {
|
|
34
|
-
label: flashLabel[flash],
|
|
35
|
-
leading: /*#__PURE__*/_jsx(Icon, {
|
|
36
|
-
name: flashIconMap[flash],
|
|
37
|
-
size: r(14),
|
|
38
|
-
color: c.foreground
|
|
39
|
-
}),
|
|
40
|
-
onPress: nextFlash,
|
|
41
|
-
selected: flash !== 'off',
|
|
42
|
-
testID: "flash-btn"
|
|
43
|
-
}), /*#__PURE__*/_jsx(Chip, {
|
|
44
|
-
label: aspectRatio,
|
|
45
|
-
leading: /*#__PURE__*/_jsx(Icon, {
|
|
46
|
-
name: aspectRatio === '4:3' ? 'aspect-4-3' : 'aspect-16-9',
|
|
47
|
-
size: r(14),
|
|
48
|
-
color: c.foreground
|
|
49
|
-
}),
|
|
50
|
-
onPress: () => onChangeAspectRatio(aspectRatio === '4:3' ? '16:9' : '4:3'),
|
|
51
|
-
testID: "aspect-btn"
|
|
52
|
-
}), /*#__PURE__*/_jsx(Chip, {
|
|
53
|
-
label: lensLabel,
|
|
54
|
-
leading: /*#__PURE__*/_jsx(Icon, {
|
|
55
|
-
name: "lens-flip",
|
|
56
|
-
size: r(14),
|
|
57
|
-
color: c.foreground
|
|
58
|
-
}),
|
|
59
|
-
onPress: onToggleLens,
|
|
60
|
-
testID: "lens-btn"
|
|
61
|
-
})]
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
const styles = StyleSheet.create({
|
|
65
|
-
root: {
|
|
66
|
-
position: 'absolute',
|
|
67
|
-
top: r(60),
|
|
68
|
-
left: r(16),
|
|
69
|
-
right: r(16),
|
|
70
|
-
flexDirection: 'row',
|
|
71
|
-
justifyContent: 'space-between'
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
//# sourceMappingURL=SetUp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","Chip","Icon","r","useColors","jsx","_jsx","jsxs","_jsxs","flashLabel","off","on","auto","flashOrder","flashIconMap","SetUp","flash","aspectRatio","onChangeFlash","onChangeAspectRatio","onToggleLens","lensLabel","c","nextFlash","i","indexOf","next","length","style","styles","root","children","label","leading","name","size","color","foreground","onPress","selected","testID","create","position","top","left","right","flexDirection","justifyContent"],"sourceRoot":"../../../../src","sources":["camera/setup/SetUp.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,IAAI,EACJC,IAAI,EACJC,CAAC,EACDC,SAAS,QAEJ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAcnC,MAAMC,UAAqC,GAAG;EAC5CC,GAAG,EAAE,IAAI;EACTC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE;AACR,CAAC;AACD,MAAMC,UAAuB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AAErD,MAAMC,YAAyC,GAAG;EAChDJ,GAAG,EAAE,WAAW;EAChBC,EAAE,EAAE,UAAU;EACdC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,SAASG,KAAKA,CAAC;EACpBC,KAAK;EACLC,WAAW;EACXC,aAAa;EACbC,mBAAmB;EACnBC,YAAY;EACZC;AACK,CAAC,EAAE;EACR,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGA,CAAA,KAAM;IACtB,MAAMC,CAAC,GAAGX,UAAU,CAACY,OAAO,CAACT,KAAK,CAAC;IACnC,MAAMU,IAAI,GAAGb,UAAU,CAAC,CAACW,CAAC,GAAG,CAAC,IAAIX,UAAU,CAACc,MAAM,CAAc;IACjET,aAAa,CAACQ,IAAI,CAAC;EACrB,CAAC;EACD,oBACElB,KAAA,CAACR,IAAI;IAAC4B,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,gBACvBzB,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEvB,UAAU,CAACO,KAAK,CAAE;MACzBiB,OAAO,eACL3B,IAAA,CAACJ,IAAI;QAACgC,IAAI,EAAEpB,YAAY,CAACE,KAAK,CAAE;QAACmB,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QAACiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CAAE,CACrE;MACDC,OAAO,EAAEf,SAAU;MACnBgB,QAAQ,EAAEvB,KAAK,KAAK,KAAM;MAC1BwB,MAAM,EAAC;IAAW,CACnB,CAAC,eACFlC,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEf,WAAY;MACnBgB,OAAO,eACL3B,IAAA,CAACJ,IAAI;QACHgC,IAAI,EAAEjB,WAAW,KAAK,KAAK,GAAG,YAAY,GAAG,aAAc;QAC3DkB,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QACZiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CACrB,CACF;MACDC,OAAO,EAAEA,CAAA,KACPnB,mBAAmB,CAACF,WAAW,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAC3D;MACDuB,MAAM,EAAC;IAAY,CACpB,CAAC,eACFlC,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEX,SAAU;MACjBY,OAAO,eAAE3B,IAAA,CAACJ,IAAI;QAACgC,IAAI,EAAC,WAAW;QAACC,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QAACiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CAAE,CAAE;MACrEC,OAAO,EAAElB,YAAa;MACtBoB,MAAM,EAAC;IAAU,CAClB,CAAC;EAAA,CACE,CAAC;AAEX;AAEA,MAAMX,MAAM,GAAG9B,UAAU,CAAC0C,MAAM,CAAC;EAC/BX,IAAI,EAAE;IACJY,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAExC,CAAC,CAAC,EAAE,CAAC;IACVyC,IAAI,EAAEzC,CAAC,CAAC,EAAE,CAAC;IACX0C,KAAK,EAAE1C,CAAC,CAAC,EAAE,CAAC;IACZ2C,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
4
|
-
import { Thumbnail, r, useThemedStyles } from '@unif/react-native-design';
|
|
5
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
export function PreviewThumbnail({
|
|
7
|
-
files,
|
|
8
|
-
currentIndex,
|
|
9
|
-
onTap
|
|
10
|
-
}) {
|
|
11
|
-
const styles = useThemedStyles(makeStyles);
|
|
12
|
-
return /*#__PURE__*/_jsx(View, {
|
|
13
|
-
style: styles.row,
|
|
14
|
-
children: files.map((f, i) => /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
15
|
-
onPress: () => onTap(i),
|
|
16
|
-
style: [styles.thumbWrap, i === currentIndex && styles.thumbWrapActive],
|
|
17
|
-
children: /*#__PURE__*/_jsx(Thumbnail, {
|
|
18
|
-
uri: f.uri,
|
|
19
|
-
size: "sm"
|
|
20
|
-
})
|
|
21
|
-
}, `${f.path}-${i}`))
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
const makeStyles = c => StyleSheet.create({
|
|
25
|
-
row: {
|
|
26
|
-
flexDirection: 'row',
|
|
27
|
-
gap: r(6),
|
|
28
|
-
padding: r(8)
|
|
29
|
-
},
|
|
30
|
-
thumbWrap: {
|
|
31
|
-
borderRadius: r(4),
|
|
32
|
-
borderWidth: 2,
|
|
33
|
-
borderColor: 'transparent'
|
|
34
|
-
},
|
|
35
|
-
thumbWrapActive: {
|
|
36
|
-
borderColor: c.primary
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=PreviewThumbnail.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","TouchableOpacity","View","Thumbnail","r","useThemedStyles","jsx","_jsx","PreviewThumbnail","files","currentIndex","onTap","styles","makeStyles","style","row","children","map","f","i","onPress","thumbWrap","thumbWrapActive","uri","size","path","c","create","flexDirection","gap","padding","borderRadius","borderWidth","borderColor","primary"],"sourceRoot":"../../../src","sources":["components/PreviewThumbnail.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AACjE,SACEC,SAAS,EACTC,CAAC,EACDC,eAAe,QAEV,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASnC,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAa,CAAC,EAAE;EACtE,MAAMC,MAAM,GAAGP,eAAe,CAACQ,UAAU,CAAC;EAC1C,oBACEN,IAAA,CAACL,IAAI;IAACY,KAAK,EAAEF,MAAM,CAACG,GAAI;IAAAC,QAAA,EACrBP,KAAK,CAACQ,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACdZ,IAAA,CAACN,gBAAgB;MAEfmB,OAAO,EAAEA,CAAA,KAAMT,KAAK,CAACQ,CAAC,CAAE;MACxBL,KAAK,EAAE,CACLF,MAAM,CAACS,SAAS,EAChBF,CAAC,KAAKT,YAAY,IAAIE,MAAM,CAACU,eAAe,CAC5C;MAAAN,QAAA,eAEFT,IAAA,CAACJ,SAAS;QAACoB,GAAG,EAAEL,CAAC,CAACK,GAAI;QAACC,IAAI,EAAC;MAAI,CAAE;IAAC,GAP9B,GAAGN,CAAC,CAACO,IAAI,IAAIN,CAAC,EAQH,CACnB;EAAC,CACE,CAAC;AAEX;AAEA,MAAMN,UAAU,GAAIa,CAAc,IAChC1B,UAAU,CAAC2B,MAAM,CAAC;EAChBZ,GAAG,EAAE;IAAEa,aAAa,EAAE,KAAK;IAAEC,GAAG,EAAEzB,CAAC,CAAC,CAAC,CAAC;IAAE0B,OAAO,EAAE1B,CAAC,CAAC,CAAC;EAAE,CAAC;EACvDiB,SAAS,EAAE;IACTU,YAAY,EAAE3B,CAAC,CAAC,CAAC,CAAC;IAClB4B,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDX,eAAe,EAAE;IAAEW,WAAW,EAAEP,CAAC,CAACQ;EAAQ;AAC5C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Alert } from 'react-native';
|
|
4
|
-
export function useConfirm() {
|
|
5
|
-
return (title, message) => new Promise(resolve => {
|
|
6
|
-
Alert.alert(title, message, [{
|
|
7
|
-
text: '取消',
|
|
8
|
-
onPress: () => resolve(false),
|
|
9
|
-
style: 'cancel'
|
|
10
|
-
}, {
|
|
11
|
-
text: '确认',
|
|
12
|
-
onPress: () => resolve(true)
|
|
13
|
-
}]);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=useConfirm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Alert","useConfirm","title","message","Promise","resolve","alert","text","onPress","style"],"sourceRoot":"../../../src","sources":["hooks/useConfirm.tsx"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AAEpC,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,OAAO,CAACC,KAAa,EAAEC,OAAe,KACpC,IAAIC,OAAO,CAAWC,OAAO,IAAK;IAChCL,KAAK,CAACM,KAAK,CAACJ,KAAK,EAAEC,OAAO,EAAE,CAC1B;MAAEI,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAEA,CAAA,KAAMH,OAAO,CAAC,KAAK,CAAC;MAAEI,KAAK,EAAE;IAAS,CAAC,EAC9D;MAAEF,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAEA,CAAA,KAAMH,OAAO,CAAC,IAAI;IAAE,CAAC,CAC7C,CAAC;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { CameraMode } from '../../utils';
|
|
2
|
-
type Props = {
|
|
3
|
-
modes: CameraMode[];
|
|
4
|
-
currentIndex: number;
|
|
5
|
-
recording: boolean;
|
|
6
|
-
onShutter: () => void;
|
|
7
|
-
onSelectMode: (i: number) => void;
|
|
8
|
-
onCancel: () => void;
|
|
9
|
-
onFinishBurst?: () => void;
|
|
10
|
-
burstCount?: number;
|
|
11
|
-
};
|
|
12
|
-
export declare function Footer({ modes, currentIndex, recording, onShutter, onSelectMode, onCancel, onFinishBurst, burstCount, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../../src/camera/footer/Footer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAQF,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,GACX,EAAE,KAAK,2CA8CP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PreView.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAE1C,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,2CAUvC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CustomPhotoFile } from '../../utils';
|
|
2
|
-
type Props = {
|
|
3
|
-
files: CustomPhotoFile[];
|
|
4
|
-
onRetake: () => void;
|
|
5
|
-
onConfirm: () => void;
|
|
6
|
-
};
|
|
7
|
-
export declare function PreViewContainer({ files, onRetake, onConfirm }: Props): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=PreViewContainer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PreViewContainer.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreViewContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKnD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAYrE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewFooter.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreviewFooter.tsx"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAiB3D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SinglePre.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/SinglePre.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEvC,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAiBxC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type FlashMode = 'off' | 'on' | 'auto';
|
|
2
|
-
export type AspectRatio = '4:3' | '16:9';
|
|
3
|
-
type Props = {
|
|
4
|
-
flash: FlashMode;
|
|
5
|
-
aspectRatio: AspectRatio;
|
|
6
|
-
onChangeFlash: (m: FlashMode) => void;
|
|
7
|
-
onChangeAspectRatio: (r: AspectRatio) => void;
|
|
8
|
-
onToggleLens: () => void;
|
|
9
|
-
lensLabel: string;
|
|
10
|
-
};
|
|
11
|
-
export declare function SetUp({ flash, aspectRatio, onChangeFlash, onChangeAspectRatio, onToggleLens, lensLabel, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=SetUp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SetUp.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/SetUp.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAeF,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,GACV,EAAE,KAAK,2CAwCP"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CustomPhotoFile } from '../utils';
|
|
2
|
-
type Props = {
|
|
3
|
-
files: CustomPhotoFile[];
|
|
4
|
-
currentIndex: number;
|
|
5
|
-
onTap: (i: number) => void;
|
|
6
|
-
};
|
|
7
|
-
export declare function PreviewThumbnail({ files, currentIndex, onTap }: Props): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=PreviewThumbnail.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewThumbnail.d.ts","sourceRoot":"","sources":["../../../../src/components/PreviewThumbnail.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,2CAkBrE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useConfirm.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useConfirm.tsx"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,KAChB,OAAO,MAAM,EAAE,SAAS,MAAM,sBAOvC"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
2
|
-
import {
|
|
3
|
-
Button,
|
|
4
|
-
Segmented,
|
|
5
|
-
r,
|
|
6
|
-
useThemedStyles,
|
|
7
|
-
type ColorTokens,
|
|
8
|
-
} from '@unif/react-native-design';
|
|
9
|
-
import type { CameraMode } from '../../utils';
|
|
10
|
-
|
|
11
|
-
type Props = {
|
|
12
|
-
modes: CameraMode[];
|
|
13
|
-
currentIndex: number;
|
|
14
|
-
recording: boolean;
|
|
15
|
-
onShutter: () => void;
|
|
16
|
-
onSelectMode: (i: number) => void;
|
|
17
|
-
onCancel: () => void;
|
|
18
|
-
onFinishBurst?: () => void;
|
|
19
|
-
burstCount?: number;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const labelMap: Record<CameraMode['mode'], string> = {
|
|
23
|
-
single: '拍照',
|
|
24
|
-
continuous: '连拍',
|
|
25
|
-
video: '视频',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export function Footer({
|
|
29
|
-
modes,
|
|
30
|
-
currentIndex,
|
|
31
|
-
recording,
|
|
32
|
-
onShutter,
|
|
33
|
-
onSelectMode,
|
|
34
|
-
onCancel,
|
|
35
|
-
onFinishBurst,
|
|
36
|
-
burstCount,
|
|
37
|
-
}: Props) {
|
|
38
|
-
const styles = useThemedStyles(makeStyles);
|
|
39
|
-
const modeItems = modes.map((m, i) => ({
|
|
40
|
-
id: String(i),
|
|
41
|
-
label: labelMap[m.mode],
|
|
42
|
-
testID: `mode-${m.mode}`,
|
|
43
|
-
}));
|
|
44
|
-
return (
|
|
45
|
-
<View style={styles.root}>
|
|
46
|
-
{!recording && modeItems.length > 0 && (
|
|
47
|
-
<View style={styles.modesRow}>
|
|
48
|
-
<Segmented
|
|
49
|
-
items={modeItems}
|
|
50
|
-
value={String(currentIndex)}
|
|
51
|
-
onChange={(v) => onSelectMode(Number(v))}
|
|
52
|
-
testID="mode-segmented"
|
|
53
|
-
/>
|
|
54
|
-
</View>
|
|
55
|
-
)}
|
|
56
|
-
<View style={styles.actions}>
|
|
57
|
-
<Button
|
|
58
|
-
variant="ghost"
|
|
59
|
-
label="取消"
|
|
60
|
-
onPress={onCancel}
|
|
61
|
-
testID="cancel-btn"
|
|
62
|
-
disabled={recording}
|
|
63
|
-
/>
|
|
64
|
-
{/* shutter 按钮:相机 UX 惯例的圆形快门,无 design 对应组件,保留自定义实现 */}
|
|
65
|
-
<TouchableOpacity
|
|
66
|
-
onPress={onShutter}
|
|
67
|
-
testID="shutter-btn"
|
|
68
|
-
style={[styles.shutter, recording && styles.shutterRecording]}
|
|
69
|
-
/>
|
|
70
|
-
{onFinishBurst && burstCount && burstCount > 0 ? (
|
|
71
|
-
<Button
|
|
72
|
-
variant="primary"
|
|
73
|
-
label={`完成 (${burstCount})`}
|
|
74
|
-
onPress={onFinishBurst}
|
|
75
|
-
testID="finish-burst-btn"
|
|
76
|
-
/>
|
|
77
|
-
) : (
|
|
78
|
-
<View style={styles.placeholder} />
|
|
79
|
-
)}
|
|
80
|
-
</View>
|
|
81
|
-
</View>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const makeStyles = (c: ColorTokens) =>
|
|
86
|
-
StyleSheet.create({
|
|
87
|
-
root: {
|
|
88
|
-
position: 'absolute',
|
|
89
|
-
bottom: r(30),
|
|
90
|
-
left: 0,
|
|
91
|
-
right: 0,
|
|
92
|
-
alignItems: 'center',
|
|
93
|
-
},
|
|
94
|
-
modesRow: { marginBottom: r(16) },
|
|
95
|
-
actions: {
|
|
96
|
-
flexDirection: 'row',
|
|
97
|
-
width: '100%',
|
|
98
|
-
justifyContent: 'space-around',
|
|
99
|
-
alignItems: 'center',
|
|
100
|
-
},
|
|
101
|
-
// shutter 圆形快门:相机 UX 惯例,沿用白底高对比度.
|
|
102
|
-
// 录制态切换为 c.error 红底标识"录制中".
|
|
103
|
-
shutter: {
|
|
104
|
-
width: r(64),
|
|
105
|
-
height: r(64),
|
|
106
|
-
borderRadius: r(32),
|
|
107
|
-
backgroundColor: c.surface,
|
|
108
|
-
borderWidth: r(4),
|
|
109
|
-
borderColor: c.outline,
|
|
110
|
-
},
|
|
111
|
-
shutterRecording: { backgroundColor: c.error },
|
|
112
|
-
placeholder: { width: r(60) },
|
|
113
|
-
});
|