dmed-voice-assistant 1.0.3 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/RecognitionListItem.js +54 -0
- package/dist/components/RecordListItem.js +246 -0
- package/dist/components/StyledSelect.js +25 -0
- package/dist/components/svgs.js +343 -0
- package/dist/index.js +39 -0
- package/dist/recognition.js +743 -0
- package/dist/recorder.js +513 -0
- package/package.json +3 -4
- package/src/VoiceAssistant/components/RecognitionListItem.js +0 -53
- package/src/VoiceAssistant/components/RecordListItem.js +0 -259
- package/src/VoiceAssistant/components/StyledSelect.js +0 -16
- package/src/VoiceAssistant/components/svgs.js +0 -267
- package/src/VoiceAssistant/index.js +0 -45
- package/src/VoiceAssistant/recognition.js +0 -952
- package/src/VoiceAssistant/recorder.js +0 -575
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
var _material = require("@mui/material");
|
8
|
+
const RecognitionListItem = _ref => {
|
9
|
+
let {
|
10
|
+
data
|
11
|
+
} = _ref;
|
12
|
+
return /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_material.Box, {
|
13
|
+
className: "flex items-center justify-between p-[4.5px] bg-[#F6F8FA]"
|
14
|
+
}, /*#__PURE__*/React.createElement(_material.Box, {
|
15
|
+
className: "flex items-center space-x-1 p-[4px]"
|
16
|
+
}, /*#__PURE__*/React.createElement(_material.Typography, {
|
17
|
+
className: "!font-bold !text-[14px]",
|
18
|
+
color: "#494A48"
|
19
|
+
}, data.result.length), /*#__PURE__*/React.createElement(_material.Typography, {
|
20
|
+
className: "!font-400 !text-[12px]",
|
21
|
+
color: "#494A48"
|
22
|
+
}, "words")), /*#__PURE__*/React.createElement(_material.Typography, {
|
23
|
+
className: "px-[4px] !font-400 !text-[14px]",
|
24
|
+
color: "#494A48"
|
25
|
+
}, data.date.toLocaleTimeString('en-US', {
|
26
|
+
hour: '2-digit',
|
27
|
+
minute: '2-digit',
|
28
|
+
hour12: true
|
29
|
+
}))), /*#__PURE__*/React.createElement(_material.Box, {
|
30
|
+
className: "flex items-center flex-wrap space-x-1 mt-1 p-[9px]",
|
31
|
+
sx: {
|
32
|
+
maxWidth: "387px",
|
33
|
+
overflow: "hidden"
|
34
|
+
}
|
35
|
+
}, data.result.map((item, index) => {
|
36
|
+
return /*#__PURE__*/React.createElement(_material.Box, {
|
37
|
+
className: "flex items-center",
|
38
|
+
key: index
|
39
|
+
}, /*#__PURE__*/React.createElement(_material.Typography, {
|
40
|
+
className: "!font-400 !text-[16px]",
|
41
|
+
color: "#494A48",
|
42
|
+
sx: {
|
43
|
+
fontFamily: "Space Grotesk !important"
|
44
|
+
}
|
45
|
+
}, item), index !== data.result.length - 1 && /*#__PURE__*/React.createElement(_material.Typography, {
|
46
|
+
className: "!font-400 !text-[16px]",
|
47
|
+
color: "#494A4880",
|
48
|
+
sx: {
|
49
|
+
fontFamily: "Fira Sans !important"
|
50
|
+
}
|
51
|
+
}, ","));
|
52
|
+
})));
|
53
|
+
};
|
54
|
+
var _default = exports.default = RecognitionListItem;
|
@@ -0,0 +1,246 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
var _react = require("react");
|
8
|
+
var _material = require("@mui/material");
|
9
|
+
var _svgs = require("./svgs");
|
10
|
+
const formatDate = date => {
|
11
|
+
const day = String(date.getDate()).padStart(2, '0'); // Get day with leading zero
|
12
|
+
const month = String(date.getMonth() + 1).padStart(2, '0'); // Get month (0-indexed, so add 1) with leading zero
|
13
|
+
const year = date.getFullYear(); // Get full year
|
14
|
+
|
15
|
+
return `${day}.${month}.${year}`;
|
16
|
+
};
|
17
|
+
const formatBytes = bytes => {
|
18
|
+
if (bytes === 0) return {
|
19
|
+
size: 0,
|
20
|
+
type: 'Bytes'
|
21
|
+
};
|
22
|
+
const sizeUnits = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
23
|
+
const i = Math.floor(Math.log(bytes) / Math.log(1024)); // Determine the index of the unit
|
24
|
+
|
25
|
+
const size = (bytes / Math.pow(1024, i)).toFixed(2); // Convert and round to 2 decimal places
|
26
|
+
const type = sizeUnits[i]; // Get the unit type
|
27
|
+
|
28
|
+
return {
|
29
|
+
size: parseFloat(size),
|
30
|
+
type: type
|
31
|
+
};
|
32
|
+
};
|
33
|
+
const formatTime = seconds => {
|
34
|
+
const minutes = Math.floor(seconds / 60); // Calculate minutes
|
35
|
+
const remainingSeconds = seconds % 60; // Calculate remaining seconds
|
36
|
+
|
37
|
+
// Format minutes and seconds to always be two digits
|
38
|
+
const formattedMinutes = String(minutes).padStart(2, '0');
|
39
|
+
const formattedSeconds = String(remainingSeconds).padStart(2, '0');
|
40
|
+
return {
|
41
|
+
minutes: formattedMinutes,
|
42
|
+
seconds: formattedSeconds
|
43
|
+
};
|
44
|
+
};
|
45
|
+
const RecordListItem = _ref => {
|
46
|
+
let {
|
47
|
+
audioURL = "",
|
48
|
+
label = "",
|
49
|
+
createdDate = new Date(),
|
50
|
+
capacity = 0,
|
51
|
+
time = 0,
|
52
|
+
onLabelChange,
|
53
|
+
onDelete
|
54
|
+
} = _ref;
|
55
|
+
const audioRef = (0, _react.useRef)(null);
|
56
|
+
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
57
|
+
const openAnchorEl = Boolean(anchorEl);
|
58
|
+
const [isPlaying, setIsPlaying] = (0, _react.useState)(false);
|
59
|
+
const [isEditing, setIsEditing] = (0, _react.useState)(false);
|
60
|
+
const [newLabel, setNewLabel] = (0, _react.useState)(label);
|
61
|
+
const handlePopoverOpen = event => {
|
62
|
+
setAnchorEl(event.currentTarget);
|
63
|
+
};
|
64
|
+
const handlePopoverClose = () => {
|
65
|
+
setAnchorEl(null);
|
66
|
+
};
|
67
|
+
const handleRename = () => {
|
68
|
+
setIsEditing(true);
|
69
|
+
handlePopoverClose();
|
70
|
+
};
|
71
|
+
const handleInputChange = event => {
|
72
|
+
setNewLabel(event.target.value);
|
73
|
+
};
|
74
|
+
const handleInputBlur = () => {
|
75
|
+
setIsEditing(false);
|
76
|
+
if (newLabel !== label && onLabelChange) {
|
77
|
+
onLabelChange(newLabel);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
const handleInputKeyDown = event => {
|
81
|
+
if (event.key === "Enter") {
|
82
|
+
setIsEditing(false);
|
83
|
+
if (newLabel !== label && onLabelChange) {
|
84
|
+
onLabelChange(newLabel);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
};
|
88
|
+
const playAudio = () => {
|
89
|
+
if (!audioRef.current) {
|
90
|
+
const audio = new Audio(audioURL);
|
91
|
+
audioRef.current = audio;
|
92
|
+
audioRef.current.onended = () => {
|
93
|
+
URL.revokeObjectURL(audioURL);
|
94
|
+
setIsPlaying(false);
|
95
|
+
};
|
96
|
+
}
|
97
|
+
if (isPlaying) {
|
98
|
+
audioRef.current.pause();
|
99
|
+
setIsPlaying(false);
|
100
|
+
} else {
|
101
|
+
audioRef.current.play();
|
102
|
+
setIsPlaying(true);
|
103
|
+
}
|
104
|
+
};
|
105
|
+
const handleDelete = () => {
|
106
|
+
if (onDelete) {
|
107
|
+
onDelete();
|
108
|
+
}
|
109
|
+
handlePopoverClose();
|
110
|
+
};
|
111
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_material.Box, {
|
112
|
+
className: "flex items-center justify-between"
|
113
|
+
}, /*#__PURE__*/React.createElement(_material.Box, {
|
114
|
+
className: "flex items-center space-x-2"
|
115
|
+
}, /*#__PURE__*/React.createElement(_material.Box, {
|
116
|
+
className: "cursor-pointer",
|
117
|
+
onClick: playAudio
|
118
|
+
}, isPlaying ? /*#__PURE__*/React.createElement(_svgs.PauseIcon, null) : /*#__PURE__*/React.createElement(_svgs.BigStartIcon, null)), /*#__PURE__*/React.createElement(_material.Box, null, isEditing ? /*#__PURE__*/React.createElement(_material.TextField, {
|
119
|
+
value: newLabel,
|
120
|
+
onChange: handleInputChange,
|
121
|
+
onBlur: handleInputBlur,
|
122
|
+
onKeyDown: handleInputKeyDown,
|
123
|
+
variant: "standard",
|
124
|
+
autoFocus: true,
|
125
|
+
inputProps: {
|
126
|
+
style: {
|
127
|
+
color: "#EAE5DC",
|
128
|
+
fontSize: "16px",
|
129
|
+
fontWeight: 600
|
130
|
+
}
|
131
|
+
},
|
132
|
+
sx: {
|
133
|
+
input: {
|
134
|
+
fontFamily: "Afacad !important"
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}) : /*#__PURE__*/React.createElement(_material.Typography, {
|
138
|
+
className: "!font-[600] !text-[16px]",
|
139
|
+
color: "#EAE5DC"
|
140
|
+
}, newLabel), /*#__PURE__*/React.createElement(_material.Typography, {
|
141
|
+
className: "flex items-center !font-[400] !text-[14px]",
|
142
|
+
color: "#EAE5DCB2",
|
143
|
+
sx: {
|
144
|
+
fontFamily: "Afacad !important"
|
145
|
+
}
|
146
|
+
}, formatDate(createdDate), /*#__PURE__*/React.createElement("svg", {
|
147
|
+
className: "mx-1",
|
148
|
+
width: "3",
|
149
|
+
height: "4",
|
150
|
+
viewBox: "0 0 3 4",
|
151
|
+
fill: "none",
|
152
|
+
xmlns: "http://www.w3.org/2000/svg"
|
153
|
+
}, /*#__PURE__*/React.createElement("circle", {
|
154
|
+
cx: "1.5",
|
155
|
+
cy: "2",
|
156
|
+
r: "1.5",
|
157
|
+
fill: "#EAE5DC",
|
158
|
+
fillOpacity: "0.7"
|
159
|
+
})), /*#__PURE__*/React.createElement("span", {
|
160
|
+
ref: el => {
|
161
|
+
if (el) {
|
162
|
+
el.style.setProperty('font-family', 'Afacad', 'important');
|
163
|
+
}
|
164
|
+
},
|
165
|
+
style: {
|
166
|
+
fontWeight: "600",
|
167
|
+
marginRight: "3px"
|
168
|
+
}
|
169
|
+
}, formatBytes(capacity).size), formatBytes(capacity).type))), /*#__PURE__*/React.createElement(_material.Typography, {
|
170
|
+
className: "!font-[600] !text-[20px]",
|
171
|
+
color: "#EAE5DC",
|
172
|
+
sx: {
|
173
|
+
fontFamily: "Afacad !important"
|
174
|
+
}
|
175
|
+
}, formatTime(time).minutes, /*#__PURE__*/React.createElement("span", {
|
176
|
+
ref: el => {
|
177
|
+
if (el) {
|
178
|
+
el.style.setProperty('font-family', 'Afacad', 'important');
|
179
|
+
}
|
180
|
+
},
|
181
|
+
style: {
|
182
|
+
fontWeight: "400",
|
183
|
+
fontSize: "16px",
|
184
|
+
marginRight: "5px"
|
185
|
+
}
|
186
|
+
}, "m"), formatTime(time).seconds, /*#__PURE__*/React.createElement("span", {
|
187
|
+
ref: el => {
|
188
|
+
if (el) {
|
189
|
+
el.style.setProperty('font-family', 'Afacad', 'important');
|
190
|
+
}
|
191
|
+
},
|
192
|
+
style: {
|
193
|
+
fontWeight: "400",
|
194
|
+
fontSize: "16px"
|
195
|
+
}
|
196
|
+
}, "s")), /*#__PURE__*/React.createElement(_material.Box, {
|
197
|
+
className: "cursor-pointer",
|
198
|
+
onClick: handlePopoverOpen
|
199
|
+
}, /*#__PURE__*/React.createElement(_svgs.ThreeDotsIcon, null))), /*#__PURE__*/React.createElement(_material.Popover, {
|
200
|
+
open: openAnchorEl,
|
201
|
+
anchorEl: anchorEl,
|
202
|
+
onClose: handlePopoverClose,
|
203
|
+
anchorOrigin: {
|
204
|
+
vertical: 'bottom',
|
205
|
+
horizontal: 'left'
|
206
|
+
},
|
207
|
+
transformOrigin: {
|
208
|
+
vertical: 'bottom',
|
209
|
+
horizontal: 'right'
|
210
|
+
},
|
211
|
+
disableAutoFocus: true,
|
212
|
+
disableEnforceFocus: true,
|
213
|
+
sx: {
|
214
|
+
'& .MuiPaper-root': {
|
215
|
+
boxShadow: 'none',
|
216
|
+
background: '#0B0B0B',
|
217
|
+
borderRadius: '5px'
|
218
|
+
}
|
219
|
+
}
|
220
|
+
}, /*#__PURE__*/React.createElement(_material.Box, {
|
221
|
+
className: "px-[5px] pt-[5px] pb-[2.5px] w-[115px]"
|
222
|
+
}, /*#__PURE__*/React.createElement(_material.Box, {
|
223
|
+
className: "flex items-center justify-between rounded-[5px] px-[10px] py-[3px] cursor-pointer",
|
224
|
+
sx: {
|
225
|
+
'&:hover': {
|
226
|
+
background: '#323232'
|
227
|
+
}
|
228
|
+
},
|
229
|
+
onClick: handleRename
|
230
|
+
}, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.EditIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
|
231
|
+
className: "!font-400 !text-[12px]",
|
232
|
+
color: "#EAE5DC"
|
233
|
+
}, "Rename")), /*#__PURE__*/React.createElement(_material.Box, {
|
234
|
+
className: "flex items-center justify-between rounded-[5px] px-[10px] py-[3px] cursor-pointer",
|
235
|
+
sx: {
|
236
|
+
'&:hover': {
|
237
|
+
background: '#323232'
|
238
|
+
}
|
239
|
+
},
|
240
|
+
onClick: handleDelete
|
241
|
+
}, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.DeleteIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
|
242
|
+
className: "!font-400 !text-[12px]",
|
243
|
+
color: "#EAE5DC"
|
244
|
+
}, "Delete")))));
|
245
|
+
};
|
246
|
+
var _default = exports.default = RecordListItem;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
var _material = require("@mui/material");
|
8
|
+
const StyledSelect = (0, _material.styled)(_material.Select)(_ref => {
|
9
|
+
let {
|
10
|
+
theme
|
11
|
+
} = _ref;
|
12
|
+
return {
|
13
|
+
height: '41.4px',
|
14
|
+
border: '0.9px solid #565656',
|
15
|
+
borderRadius: '5px',
|
16
|
+
maxWidth: '360px',
|
17
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
18
|
+
border: "none"
|
19
|
+
},
|
20
|
+
'& svg': {
|
21
|
+
fill: '#EAE5DC'
|
22
|
+
}
|
23
|
+
};
|
24
|
+
});
|
25
|
+
var _default = exports.default = StyledSelect;
|