import React, { useCallback, useEffect } from 'react'; import { SilkeBox } from '../../silke-box'; import { SilkeButton } from '../../silke-button'; import { SilkeText, SilkeTextSmall } from '../../silke-text'; import { AudioField as AudioFieldType, SchemaFieldProps } from '@vev/utils'; import { useSchemaContext } from '../silke-schema-context'; import styles from './styles.scss'; import { getTitle } from './utils/schema-util'; import { SilkeIcon } from '../../silke-icon'; const AudioField = ({ value, schema, disabled, readonly, onChange, }: SchemaFieldProps) => { const { actions } = useSchemaContext(); const handleDeleteAudio = useCallback(() => { onChange(null); }, [onChange]); const handleSelectAudio = useCallback(() => { if (!actions) return; actions.audioLibraryOpen((audio) => { if (!audio || !audio.url) return; onChange(audio); actions.audioLibraryClose(); }); }, [onChange, actions]); useEffect(() => { if (!value) { handleSelectAudio(); } }, []); return ( {getTitle(schema)} {schema.description && ( {schema.description} )} {value ? value.filename : 'No file selected'} {value?.url && ( )} ); }; export default AudioField;