UNPKG

ze-react-component-library

Version:
96 lines (88 loc) 2.65 kB
import "antd/es/button/style"; import _Button from "antd/es/button"; import "antd/es/message/style"; import _message from "antd/es/message"; import React, { useState, useEffect } from "react"; import { requestSuggestByVoice } from "../request"; import useRecorder from "../hooks/useRecorder"; import { AudioOutlined, LoadingOutlined } from "@ant-design/icons"; var defaultColor = "primary"; export var RecordLoading = function RecordLoading(_a) { var _b = _a.color, color = _b === void 0 ? defaultColor : _b, children = _a.children, style = _a.style, _c = _a.className, className = _c === void 0 ? "" : _c; var isPrimary = color === defaultColor; var props = { color: isPrimary ? undefined : color, className: isPrimary ? "text-primary-color" : undefined }; return /*#__PURE__*/React.createElement("div", { style: style, className: "ze-search-bar-record-loading-wrapper " + className }, /*#__PURE__*/React.createElement("div", { className: "ze-search-bar-record-loading-icon" }, /*#__PURE__*/React.createElement(AudioOutlined, { style: { fontSize: 50, color: props.color }, className: props.className }), /*#__PURE__*/React.createElement(LoadingOutlined, { className: props.className, style: { fontSize: 100, color: props.color }, spin: true })), /*#__PURE__*/React.createElement("div", { style: { fontSize: 18, marginTop: 12, color: props.color, textAlign: "center" }, className: props.className }, children)); }; var VoiceRecorder = function VoiceRecorder(_a) { var ask = _a.ask; var _b = useState(false), translating = _b[0], setTranslating = _b[1]; var recorder = useRecorder(); useEffect(function () { recorder.start(ask); }, []); var sendVoice = function sendVoice(data) { var formData = new FormData(); formData.append("voice", data); requestSuggestByVoice(formData).then(function (res) { ask(res.result); }).catch(function (e) { _message.error(e.message); ask(); // 退出去 }); }; var translateRecord = function translateRecord() { setTranslating(true); recorder.stop(sendVoice); }; return /*#__PURE__*/React.createElement("div", { style: { textAlign: "center" } }, /*#__PURE__*/React.createElement(RecordLoading, null), /*#__PURE__*/React.createElement(_Button, { onClick: function onClick() { return translateRecord(); }, loading: translating, style: { marginTop: 60 }, type: "primary" }, "\u63D0\u4EA4")); }; export default VoiceRecorder;