* feat: markdown extension * media cros * rerank test * default price * perf: default model * fix: cannot custom provider * fix: default model select * update bg * perf: default model selector * fix: usage export * i18n * fix: rerank * update init extension * perf: ip limit check * doubao model order * web default modle * perf: tts selector * perf: tts error * qrcode package
32 lines
791 B
TypeScript
32 lines
791 B
TypeScript
import React, { useEffect } from 'react';
|
|
import { Box } from '@chakra-ui/react';
|
|
import { useMarkdownWidth } from '../hooks';
|
|
|
|
const AudioBlock = ({ code: audioUrl }: { code: string }) => {
|
|
const { width, Ref } = useMarkdownWidth();
|
|
|
|
useEffect(() => {
|
|
fetch(audioUrl?.trim(), {
|
|
mode: 'cors',
|
|
credentials: 'omit'
|
|
})
|
|
.then((response) => response.blob())
|
|
.then((blob) => {
|
|
const url = URL.createObjectURL(blob);
|
|
const audio = document.getElementById('player');
|
|
audio?.setAttribute('src', url);
|
|
})
|
|
.catch((err) => {
|
|
console.log(err);
|
|
});
|
|
}, [audioUrl]);
|
|
|
|
return (
|
|
<Box w={width} ref={Ref}>
|
|
<audio id="player" controls style={{ width: '100%' }} />
|
|
</Box>
|
|
);
|
|
};
|
|
|
|
export default AudioBlock;
|