ze-react-component-library
Version:
ZeroETP React Component Library
96 lines (88 loc) • 2.65 kB
JavaScript
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;