MCPcopy Create free account
hub / github.com/dailydotdev/apps / ImageInput

Function ImageInput

packages/shared/src/components/fields/ImageInput.tsx:50–186  ·  view source on GitHub ↗
({
  initialValue,
  name = 'file',
  id,
  className = {},
  onChange,
  size = 'medium',
  viewOnly,
  hoverIcon,
  children,
  enableHover = true,
  alwaysShowHover,
  fallbackImage = fallbackImages.avatar,
  closeable,
  fileSizeLimitMB = 2,
  uploadButton = false,
}: ImageInputProps)

Source from the content-addressed store, hash-verified

48};
49
50function ImageInput({
51 initialValue,
52 name = 'file',
53 id,
54 className = {},
55 onChange,
56 size = 'medium',
57 viewOnly,
58 hoverIcon,
59 children,
60 enableHover = true,
61 alwaysShowHover,
62 fallbackImage = fallbackImages.avatar,
63 closeable,
64 fileSizeLimitMB = 2,
65 uploadButton = false,
66}: ImageInputProps): ReactElement {
67 const inputRef = useRef<HTMLInputElement>();
68 const [image, setImage] = useState(initialValue || fallbackImage);
69 const onClick = () => {
70 inputRef.current.click();
71 };
72
73 const { onFileChange: handleFile } = useFileInput({
74 acceptedTypes: acceptedTypesList,
75 limitMb: fileSizeLimitMB,
76 onChange(base64, file) {
77 if (!base64) {
78 return onChange?.(null);
79 }
80
81 setImage(base64);
82 return onChange?.(base64, file);
83 },
84 });
85
86 const onFileChange = (event: ChangeEvent) => {
87 const input = event.target as HTMLInputElement;
88 const file = input.files?.[0];
89 handleFile(file);
90 };
91
92 const onDragOver = (event: DragEvent<HTMLButtonElement>) => {
93 event.preventDefault();
94 };
95
96 const onDrop = (event: DragEvent<HTMLButtonElement>) => {
97 event.preventDefault();
98 event.stopPropagation();
99 const file = event.dataTransfer.files?.[0];
100 handleFile(file);
101 };
102
103 const onClose = () => {
104 setImage(null);
105 onChange?.(null, null);
106 inputRef.current.value = '';
107 };

Callers

nothing calls this directly

Calls 1

useFileInputFunction · 0.90

Tested by

no test coverage detected