dmed-voice-assistant 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,743 @@
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("./components/svgs");
10
+ var _RecognitionListItem = _interopRequireDefault(require("./components/RecognitionListItem"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const StyledSelect = (0, _material.styled)(_material.Select)(_ref => {
13
+ let {
14
+ theme
15
+ } = _ref;
16
+ return {
17
+ height: '41.4px',
18
+ border: '0.9px solid #D8DEE4',
19
+ borderRadius: '5px',
20
+ maxWidth: '375px',
21
+ '& .MuiOutlinedInput-notchedOutline': {
22
+ border: "none"
23
+ },
24
+ '& svg': {
25
+ fill: '#494A48'
26
+ }
27
+ };
28
+ });
29
+ const StyledDialog = (0, _material.styled)(_material.Dialog)(_ref2 => {
30
+ let {
31
+ theme
32
+ } = _ref2;
33
+ return {
34
+ '& .MuiPaper-root': {
35
+ background: '#FBF3DE',
36
+ border: '1px solid #FFB90080',
37
+ borderRadius: '5px',
38
+ padding: '8px 10px'
39
+ }
40
+ };
41
+ });
42
+ const StyledTypography = (0, _material.styled)(_material.Typography)(_ref3 => {
43
+ let {
44
+ theme
45
+ } = _ref3;
46
+ return {
47
+ padding: '3px 6px',
48
+ background: '#FFB90033',
49
+ borderRadius: '5px',
50
+ fontWeight: '400 !important',
51
+ fontSize: '12px !important',
52
+ color: '#494A48 !important',
53
+ lineHeight: '15.59px'
54
+ };
55
+ });
56
+ const Recognition = _ref4 => {
57
+ let {
58
+ mode = 'recorder',
59
+ recognitionHistoryList,
60
+ setMode,
61
+ onNewRecognitionEvent,
62
+ onRecognitionDataChange
63
+ } = _ref4;
64
+ const [open, setOpen] = (0, _react.useState)(false);
65
+ const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
66
+ const openAnchorEl = Boolean(anchorEl);
67
+ const [isStarted, setIsStarted] = (0, _react.useState)(false);
68
+ const [isSteup, setIsSetup] = (0, _react.useState)(false);
69
+ const [selectedVoice, setSelectedVoice] = (0, _react.useState)("");
70
+ const [voiceList, setVoiceList] = (0, _react.useState)([]);
71
+ const languageList = ['Auto-Detect', 'English', 'Chinese (Simplified)'];
72
+ const [selectedLanguage, setSelectedLanguage] = (0, _react.useState)("");
73
+ const recognitionRef = (0, _react.useRef)(null);
74
+ const [result, setResult] = (0, _react.useState)([]);
75
+ const [historyList, setHistoryList] = (0, _react.useState)(recognitionHistoryList);
76
+ const [recordTime, setRecordTime] = (0, _react.useState)(0);
77
+ const [intervalId, setIntervalId] = (0, _react.useState)(null);
78
+ const handleClickOpen = () => {
79
+ setOpen(true);
80
+ };
81
+ const handleClose = () => {
82
+ setOpen(false);
83
+ };
84
+ const handlePopoverOpen = event => {
85
+ setAnchorEl(event.currentTarget);
86
+ };
87
+ const handlePopoverClose = () => {
88
+ setAnchorEl(null);
89
+ };
90
+ const handleModeChange = () => {
91
+ if (mode === "recorder") {
92
+ setMode("recognition");
93
+ } else if (mode === "recognition") {
94
+ setMode("recorder");
95
+ }
96
+ };
97
+ const handleStartChange = () => {
98
+ if (isSteup) return;
99
+ if (!isStarted) {
100
+ setIsStarted(!isStarted);
101
+ startRecording();
102
+ } else {
103
+ setIsStarted(false);
104
+ stopRecording();
105
+ }
106
+ };
107
+ const handleSetupChange = () => {
108
+ setIsSetup(!isSteup);
109
+ };
110
+ const handleVoiceChange = event => {
111
+ setSelectedVoice(event.target.value);
112
+ };
113
+ const handleLanguageChange = event => {
114
+ setSelectedLanguage(event.target.value);
115
+ };
116
+ const startRecording = () => {
117
+ if (recognitionRef.current) {
118
+ setResult([]);
119
+ setRecordTime(0);
120
+ const id = setInterval(async () => {
121
+ setRecordTime(prevCount => prevCount + 1);
122
+ }, 1000);
123
+ setIntervalId(id);
124
+ recognitionRef.current.start();
125
+ }
126
+ };
127
+ const stopRecording = () => {
128
+ if (recognitionRef.current) {
129
+ recognitionRef.current.stop();
130
+ clearInterval(intervalId);
131
+ let temp = [...historyList];
132
+ const newData = {
133
+ result,
134
+ date: new Date()
135
+ };
136
+ temp.push(newData);
137
+ setHistoryList(temp);
138
+ if (onNewRecognitionEvent) {
139
+ onNewRecognitionEvent(newData);
140
+ }
141
+ if (onRecognitionDataChange) {
142
+ onRecognitionDataChange(temp);
143
+ }
144
+ }
145
+ };
146
+ const startSpeechRecognition = () => {
147
+ const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
148
+ if (SpeechRecognition) {
149
+ const recognition = new SpeechRecognition();
150
+ recognition.continuous = true;
151
+ recognition.interimResults = true;
152
+ recognition.lang = 'en-US';
153
+ recognition.onstart = () => {
154
+ console.log('Recording started');
155
+ };
156
+ recognition.onresult = event => {
157
+ setResult(prevTranscript => {
158
+ let updatedTranscript = [...prevTranscript];
159
+ for (let i = event.resultIndex; i < event.results.length; i++) {
160
+ if (event.results[i].isFinal) {
161
+ const resultArr = event.results[i][0].transcript.split(' ').filter(word => word.trim() !== '');
162
+ updatedTranscript = updatedTranscript.concat(resultArr);
163
+ }
164
+ }
165
+ return updatedTranscript;
166
+ });
167
+ };
168
+ recognition.onerror = event => {
169
+ console.error('Speech recognition error:', event.error);
170
+ };
171
+ recognition.onend = () => {
172
+ setIsStarted(false);
173
+ clearInterval(intervalId);
174
+ console.log('Speech recognition ended');
175
+ };
176
+ recognitionRef.current = recognition;
177
+ } else {
178
+ console.error('Speech recognition not supported');
179
+ }
180
+ };
181
+ (0, _react.useEffect)(() => {
182
+ const fetchAudioInputDevices = async () => {
183
+ try {
184
+ await navigator.mediaDevices.getUserMedia({
185
+ audio: true
186
+ });
187
+ const devices = await navigator.mediaDevices.enumerateDevices();
188
+
189
+ // Filter only audio input devices
190
+ const audioInputs = devices.filter(device => device.kind === "audioinput");
191
+ let temp = ['Auto-Detect'];
192
+ audioInputs.forEach(device => {
193
+ temp.push(device.label);
194
+ });
195
+ setVoiceList(temp);
196
+ } catch (error) {
197
+ console.error("Error accessing audio devices:", error);
198
+ }
199
+ };
200
+ startSpeechRecognition();
201
+ fetchAudioInputDevices();
202
+ }, []);
203
+ return /*#__PURE__*/React.createElement(_material.Box, {
204
+ className: "bg-white rounded-[5px] p-[20px] w-[440px]",
205
+ sx: {
206
+ border: '1px solid #D8DEE4'
207
+ }
208
+ }, /*#__PURE__*/React.createElement(_material.Box, {
209
+ className: "flex justify-between"
210
+ }, /*#__PURE__*/React.createElement(_material.Box, {
211
+ className: "flex items-center space-x-2"
212
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
213
+ className: "!font-[600] !text-[24px]",
214
+ color: "#494A48"
215
+ }, "Voice assistant"), /*#__PURE__*/React.createElement(_material.Box, {
216
+ className: "flex items-center space-x-1 px-[10px] py-[3px] h-[24px] bg-[#006FFF4D] rounded-[89.1px] cursor-pointer",
217
+ sx: {
218
+ border: '0.9px solid #006FFFB2'
219
+ },
220
+ onClick: handleModeChange
221
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.RecognitionIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
222
+ className: "!font-[600] !text-[12px]",
223
+ color: "#494A48"
224
+ }, "Recognition mode"))), /*#__PURE__*/React.createElement(_material.Box, {
225
+ className: "px-[10px] py-[8px] cursor-pointer"
226
+ }, /*#__PURE__*/React.createElement(_svgs.CloseIcon, null))), /*#__PURE__*/React.createElement(_material.Box, {
227
+ className: "flex items-center justify-between py-[4.5px] mt-1"
228
+ }, /*#__PURE__*/React.createElement(_material.Box, {
229
+ className: "flex space-x-1"
230
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.RocketIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
231
+ className: "!font-400 !text-[14px]",
232
+ color: "#494A48"
233
+ }, "Real-time")), /*#__PURE__*/React.createElement(_material.Box, {
234
+ className: "flex space-x-1"
235
+ }, !isStarted ? /*#__PURE__*/React.createElement(_material.Box, {
236
+ className: "flex items-center space-x-1 cursor-pointer rounded-[5px] px-[9px] h-[32.4px] bg-white",
237
+ sx: {
238
+ '&:hover': {
239
+ boxShadow: '0px 0px 5px 1px #44C63380',
240
+ cursor: isSteup && 'not-allowed'
241
+ }
242
+ },
243
+ onClick: handleStartChange
244
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.StartIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
245
+ className: "!font-400 !text-[14px]",
246
+ color: "#494A48"
247
+ }, "Start")) : /*#__PURE__*/React.createElement(_material.Box, {
248
+ className: "flex items-center justify-between space-x-4 cursor-pointer rounded-[5px] px-[9px] h-[32.4px] bg-white",
249
+ sx: {
250
+ border: "0.9px solid #F3151580",
251
+ '&:hover': {
252
+ boxShadow: '0px 0px 5px 1px #F3151580'
253
+ }
254
+ },
255
+ onClick: handleStartChange
256
+ }, /*#__PURE__*/React.createElement(_material.Box, {
257
+ className: "flex items-center space-x-1"
258
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.SmallPauseIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
259
+ className: "!font-400 !text-[14px]",
260
+ color: "#494A48"
261
+ }, "Stop")), /*#__PURE__*/React.createElement(_material.Box, {
262
+ className: "flex items-baseline"
263
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
264
+ className: "!font-[600] !text-[20px]",
265
+ color: "#494847",
266
+ sx: {
267
+ fontFamily: "Afacad !important"
268
+ }
269
+ }, recordTime), /*#__PURE__*/React.createElement(_material.Typography, {
270
+ className: "!font-400 !text-[16px]",
271
+ color: "#797974",
272
+ sx: {
273
+ fontFamily: "Afacad !important"
274
+ }
275
+ }, "s"))), /*#__PURE__*/React.createElement(_material.Box, {
276
+ className: "flex items-center space-x-1 cursor-pointer rounded-[5px] px-[9px] h-[32.4px] bg-white",
277
+ sx: {
278
+ '&:hover': {
279
+ boxShadow: !isStarted ? '0px 0px 5px 1px #494A4880' : 'none',
280
+ cursor: isStarted && "not-allowed"
281
+ }
282
+ },
283
+ onClick: handleSetupChange
284
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.DarkSettingIcon, {
285
+ fill: isStarted ? "#494A484D" : "#494A48"
286
+ })), /*#__PURE__*/React.createElement(_material.Typography, {
287
+ className: "!font-400 !text-[14px]",
288
+ color: isStarted ? "#494A484D" : "#494A48"
289
+ }, "Setup")))), !isSteup ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_material.Box, {
290
+ className: "rounded-[5px] mt-1",
291
+ sx: {
292
+ border: '1px solid #D8DEE4'
293
+ }
294
+ }, /*#__PURE__*/React.createElement(_material.Box, {
295
+ className: "flex items-center justify-between p-[4.5px]"
296
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
297
+ className: "px-[4.5px] py-[4px] !font-400 !text-[12px]",
298
+ color: "#494A48"
299
+ }, !isStarted ? '-' : result.length, " words"), /*#__PURE__*/React.createElement(_material.Box, {
300
+ className: "flex items-center space-x-1 px-[9px]"
301
+ }, /*#__PURE__*/React.createElement(_material.Box, null, !isStarted ? /*#__PURE__*/React.createElement(_svgs.StopIcon, null) : /*#__PURE__*/React.createElement(_svgs.RedStopIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
302
+ className: "!font-[600] !text-[14px]",
303
+ color: "#494A48"
304
+ }, !isStarted ? 'Stop' : 'REC'))), isStarted && /*#__PURE__*/React.createElement(_material.Box, {
305
+ className: "flex items-center flex-wrap space-x-1 mt-1 p-[9px]",
306
+ sx: {
307
+ maxWidth: "387px",
308
+ overflow: "hidden"
309
+ }
310
+ }, result.map((item, index) => {
311
+ return /*#__PURE__*/React.createElement(_material.Box, {
312
+ className: "flex items-center",
313
+ key: index
314
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
315
+ className: "!font-400 !text-[16px]",
316
+ color: "#494A48",
317
+ sx: {
318
+ fontFamily: "Space Grotesk !important"
319
+ }
320
+ }, item), index !== result.length - 1 && /*#__PURE__*/React.createElement(_material.Typography, {
321
+ className: "!font-400 !text-[16px]",
322
+ color: "#494A4880",
323
+ sx: {
324
+ fontFamily: "Fira Sans !important"
325
+ }
326
+ }, ","));
327
+ }))), /*#__PURE__*/React.createElement(_material.Box, {
328
+ className: "mt-1"
329
+ }, /*#__PURE__*/React.createElement(_material.Box, {
330
+ className: "flex items-center justify-between py-[4.5px]"
331
+ }, /*#__PURE__*/React.createElement(_material.Box, {
332
+ className: "flex space-x-1"
333
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.HistoryIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
334
+ className: "!font-400 !text-[14px]",
335
+ color: "#494A48"
336
+ }, "History")), /*#__PURE__*/React.createElement(_material.Button, {
337
+ disabled: isStarted,
338
+ color: "#494A48",
339
+ sx: {
340
+ border: '0.9px solid #D8DEE4',
341
+ fontSize: '14px !important',
342
+ fontWeight: '400 !important',
343
+ fontFamily: 'Reddit Sans !important',
344
+ height: '32px !important',
345
+ textTransform: "none"
346
+ },
347
+ onClick: handlePopoverOpen
348
+ }, "02.July.2024")), /*#__PURE__*/React.createElement(_material.Box, {
349
+ className: "flex flex-col scrollableBox mt-1",
350
+ sx: {
351
+ maxHeight: "160px"
352
+ }
353
+ }, historyList.map((history, index) => {
354
+ return /*#__PURE__*/React.createElement(_RecognitionListItem.default, {
355
+ data: history,
356
+ key: index
357
+ });
358
+ })), /*#__PURE__*/React.createElement(_material.Box, {
359
+ className: "flex items-center justify-between rounded-[5px] bg-[#FBF3DE80] px-[5px] py-[8px] mt-1 cursor-pointer",
360
+ sx: {
361
+ border: '1px solid #FFB90080'
362
+ },
363
+ onClick: handleClickOpen
364
+ }, /*#__PURE__*/React.createElement(_material.Box, {
365
+ className: "flex items-center space-x-1"
366
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.BookIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
367
+ className: "!font-[600] !text-[14px]",
368
+ color: "#494A48"
369
+ }, "Voice command instructions")), /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.RedirectIcon, null))))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_material.Divider, null), /*#__PURE__*/React.createElement(_material.Box, {
370
+ className: "flex space-x-1 w-full mt-2"
371
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.MicIcon, {
372
+ fill: "#494A48"
373
+ })), /*#__PURE__*/React.createElement(_material.Box, {
374
+ className: "flex-1"
375
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
376
+ className: "!font-[600] !text-[16px]",
377
+ color: "#494A48"
378
+ }, "Voice"), /*#__PURE__*/React.createElement(_material.Typography, {
379
+ className: "!font-400 !text-[14px] pt-1",
380
+ color: "#494A48"
381
+ }, "Input device"), /*#__PURE__*/React.createElement(StyledSelect, {
382
+ className: "mt-1",
383
+ fullWidth: true,
384
+ displayEmpty: true,
385
+ value: selectedVoice,
386
+ onChange: handleVoiceChange,
387
+ renderValue: selected => {
388
+ if (selected === "") {
389
+ return /*#__PURE__*/React.createElement("span", {
390
+ style: {
391
+ fontSize: '12.6px',
392
+ fontWeight: '400',
393
+ lineHeight: '25.2px',
394
+ color: '#494A4899'
395
+ }
396
+ }, "Auto-Detect");
397
+ }
398
+ return /*#__PURE__*/React.createElement("span", {
399
+ style: {
400
+ fontSize: '12.6px',
401
+ fontWeight: '400',
402
+ lineHeight: '25.2px',
403
+ color: '#494A4899'
404
+ }
405
+ }, voiceList[selected]);
406
+ },
407
+ MenuProps: {
408
+ PaperProps: {
409
+ sx: {
410
+ marginTop: "5px",
411
+ border: '0.9px solid #D8DEE4',
412
+ padding: '5px',
413
+ '& .MuiList-root': {
414
+ padding: "unset"
415
+ },
416
+ '& .MuiMenuItem-root': {
417
+ padding: "7.2px 9px",
418
+ color: '#494A4899',
419
+ fontFamily: 'Reddit Sans',
420
+ fontSize: '12.6px',
421
+ fontWeight: '400',
422
+ lineHeight: '25.2px'
423
+ }
424
+ }
425
+ }
426
+ }
427
+ }, voiceList.map((device, index) => {
428
+ return /*#__PURE__*/React.createElement(_material.MenuItem, {
429
+ value: index,
430
+ key: index
431
+ }, device);
432
+ })))), /*#__PURE__*/React.createElement(_material.Box, {
433
+ className: "flex space-x-1 w-full mt-2"
434
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.LanguageIcon, {
435
+ fill: "#494A48"
436
+ })), /*#__PURE__*/React.createElement(_material.Box, {
437
+ className: "flex-1"
438
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
439
+ className: "!font-[600] !text-[16px]",
440
+ color: "#494A48"
441
+ }, "Language"), /*#__PURE__*/React.createElement(_material.Typography, {
442
+ className: "!font-400 !text-[14px] pt-1",
443
+ color: "#494A48"
444
+ }, "Prefer language"), /*#__PURE__*/React.createElement(StyledSelect, {
445
+ className: "mt-1",
446
+ fullWidth: true,
447
+ displayEmpty: true,
448
+ value: selectedLanguage,
449
+ onChange: handleLanguageChange,
450
+ renderValue: selected => {
451
+ if (selected === "") {
452
+ return /*#__PURE__*/React.createElement("span", {
453
+ style: {
454
+ fontSize: '12.6px',
455
+ fontWeight: '400',
456
+ lineHeight: '25.2px',
457
+ color: '#494A4899'
458
+ }
459
+ }, "Auto-Detect");
460
+ }
461
+ return /*#__PURE__*/React.createElement("span", {
462
+ style: {
463
+ fontSize: '12.6px',
464
+ fontWeight: '400',
465
+ lineHeight: '25.2px',
466
+ color: '#494A4899'
467
+ }
468
+ }, languageList[selected]);
469
+ },
470
+ MenuProps: {
471
+ PaperProps: {
472
+ sx: {
473
+ marginTop: "5px",
474
+ border: '0.9px solid #D8DEE4',
475
+ padding: '5px',
476
+ '& .MuiList-root': {
477
+ padding: "unset"
478
+ },
479
+ '& .MuiMenuItem-root': {
480
+ padding: "7.2px 9px",
481
+ color: '#494A4899',
482
+ fontFamily: 'Reddit Sans',
483
+ fontSize: '12.6px',
484
+ fontWeight: '400',
485
+ lineHeight: '25.2px'
486
+ }
487
+ }
488
+ }
489
+ }
490
+ }, /*#__PURE__*/React.createElement(_material.MenuItem, {
491
+ value: 0
492
+ }, "Auto-Detect"), /*#__PURE__*/React.createElement(_material.MenuItem, {
493
+ value: 1
494
+ }, "English"), /*#__PURE__*/React.createElement(_material.MenuItem, {
495
+ value: 2
496
+ }, "Chinese (Simplified)"))))), /*#__PURE__*/React.createElement(StyledDialog, {
497
+ onClose: handleClose,
498
+ "aria-labelledby": "customized-dialog-title",
499
+ open: open
500
+ }, /*#__PURE__*/React.createElement(_material.Box, {
501
+ className: "flex items-center justify-between py-[8px]"
502
+ }, /*#__PURE__*/React.createElement(_material.Box, {
503
+ className: "flex items-center space-x-1"
504
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.BookIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
505
+ className: "!font-[600] !text-[14px]",
506
+ color: "#494A48"
507
+ }, "Voice command instructions")), /*#__PURE__*/React.createElement(_material.Box, {
508
+ className: "cursor-pointer",
509
+ onClick: handleClose
510
+ }, /*#__PURE__*/React.createElement(_svgs.SmallCloseIcon, null))), /*#__PURE__*/React.createElement(_material.Box, {
511
+ className: "py-[8px]"
512
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
513
+ className: "!font-[600] !text-[12px]",
514
+ color: "#494A48"
515
+ }, "Tooth position (FDI)"), /*#__PURE__*/React.createElement(_material.Box, {
516
+ className: "flex items-center py-[5px]"
517
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Upper"), /*#__PURE__*/React.createElement(_material.Typography, {
518
+ className: "!font-400 !text-[12px]",
519
+ color: "#494A48"
520
+ }, "/"), /*#__PURE__*/React.createElement(StyledTypography, null, "Lower"), /*#__PURE__*/React.createElement(_material.Typography, {
521
+ className: "!font-400 !text-[14px]",
522
+ color: "#494A48"
523
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Left"), /*#__PURE__*/React.createElement(_material.Typography, {
524
+ className: "!font-400 !text-[12px]",
525
+ color: "#494A48"
526
+ }, "/"), /*#__PURE__*/React.createElement(StyledTypography, null, "Right"), /*#__PURE__*/React.createElement(_material.Typography, {
527
+ className: "!font-400 !text-[14px]",
528
+ color: "#494A48"
529
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "number"), /*#__PURE__*/React.createElement(_material.Typography, {
530
+ className: "!font-400 !text-[12px] pl-2",
531
+ color: "#494A48"
532
+ }, "Tooth position (FDI)")), /*#__PURE__*/React.createElement(_material.Box, {
533
+ className: "flex items-center pt-[5px]"
534
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Jump"), /*#__PURE__*/React.createElement(_material.Typography, {
535
+ className: "!font-400 !text-[14px]",
536
+ color: "#494A48"
537
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "number"), /*#__PURE__*/React.createElement(_material.Typography, {
538
+ className: "!font-400 !text-[12px] pl-2",
539
+ color: "#494A48"
540
+ }, "Jump to tooth(FDI)"))), /*#__PURE__*/React.createElement(_material.Box, {
541
+ className: "pb-[8px]"
542
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
543
+ className: "!font-[600] !text-[12px]",
544
+ color: "#494A48"
545
+ }, "Terminology"), /*#__PURE__*/React.createElement(_material.Box, {
546
+ className: "flex items-center space-x-5 py-[5px]"
547
+ }, /*#__PURE__*/React.createElement(_material.Box, {
548
+ className: "flex items-center space-x-2"
549
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Mobility"), /*#__PURE__*/React.createElement(_material.Typography, {
550
+ className: "!font-400 !text-[12px]",
551
+ color: "#494A48"
552
+ }, "Mobility")), /*#__PURE__*/React.createElement(_material.Box, {
553
+ className: "flex items-center space-x-2"
554
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Furcation"), /*#__PURE__*/React.createElement(_material.Typography, {
555
+ className: "!font-400 !text-[12px]",
556
+ color: "#494A48"
557
+ }, "Furcation"))), /*#__PURE__*/React.createElement(_material.Box, {
558
+ className: "flex items-center space-x-5 py-[5px]"
559
+ }, /*#__PURE__*/React.createElement(_material.Box, {
560
+ className: "flex items-center space-x-2"
561
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Bleeding"), /*#__PURE__*/React.createElement(_material.Typography, {
562
+ className: "!font-400 !text-[12px]",
563
+ color: "#494A48"
564
+ }, "Bleeding of point")), /*#__PURE__*/React.createElement(_material.Box, {
565
+ className: "flex items-center space-x-2"
566
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Plaque"), /*#__PURE__*/React.createElement(_material.Typography, {
567
+ className: "!font-400 !text-[12px]",
568
+ color: "#494A48"
569
+ }, "Plaque of point"))), /*#__PURE__*/React.createElement(_material.Box, {
570
+ className: "flex items-center space-x-5 py-[5px]"
571
+ }, /*#__PURE__*/React.createElement(_material.Box, {
572
+ className: "flex items-center space-x-2"
573
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Buccal"), /*#__PURE__*/React.createElement(_material.Typography, {
574
+ className: "!font-400 !text-[12px]",
575
+ color: "#494A48"
576
+ }, "Buccal")), /*#__PURE__*/React.createElement(_material.Box, {
577
+ className: "flex items-center space-x-2"
578
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Lingual"), /*#__PURE__*/React.createElement(_material.Typography, {
579
+ className: "!font-400 !text-[12px]",
580
+ color: "#494A48"
581
+ }, "Lingual")))), /*#__PURE__*/React.createElement(_material.Box, {
582
+ className: "pb-[8px]"
583
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
584
+ className: "!font-[600] !text-[12px]",
585
+ color: "#494A48"
586
+ }, "Scenario 1"), /*#__PURE__*/React.createElement(_material.Typography, {
587
+ className: "!font-[600] !text-[12px] px-[10px] pt-[5px]",
588
+ color: "#494A48"
589
+ }, "Measure the full mouth pocket depth, then bleeding and plaque"), /*#__PURE__*/React.createElement(_material.Box, {
590
+ className: "flex items-center space-x-2 px-[10px] py-[5px]"
591
+ }, /*#__PURE__*/React.createElement(_material.Box, {
592
+ className: "flex items-center space-x-1"
593
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.CommandIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
594
+ className: "!font-400 !text-[12px]",
595
+ color: "#494A48"
596
+ }, "Command:")), /*#__PURE__*/React.createElement(_material.Box, {
597
+ className: "flex items-center"
598
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "One"), /*#__PURE__*/React.createElement(_material.Typography, {
599
+ className: "!font-400 !text-[14px]",
600
+ color: "#494A48"
601
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Bleeding"), /*#__PURE__*/React.createElement(_material.Typography, {
602
+ className: "!font-400 !text-[14px]",
603
+ color: "#494A48"
604
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Plaque")))), /*#__PURE__*/React.createElement(_material.Box, {
605
+ className: "pb-[8px]"
606
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
607
+ className: "!font-[600] !text-[12px]",
608
+ color: "#494A48"
609
+ }, "Scenario 2"), /*#__PURE__*/React.createElement(_material.Typography, {
610
+ className: "!font-[600] !text-[12px] px-[10px] pt-[5px]",
611
+ color: "#494A48"
612
+ }, "Jump to specific tooth position and check implant, crown, missing"), /*#__PURE__*/React.createElement(_material.Box, {
613
+ className: "flex items-center space-x-2 px-[10px] py-[5px]"
614
+ }, /*#__PURE__*/React.createElement(_material.Box, {
615
+ className: "flex items-center space-x-1"
616
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.CommandIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
617
+ className: "!font-400 !text-[12px]",
618
+ color: "#494A48"
619
+ }, "Command:")), /*#__PURE__*/React.createElement(_material.Box, {
620
+ className: "flex items-center"
621
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Jump"), /*#__PURE__*/React.createElement(_material.Typography, {
622
+ className: "!font-400 !text-[14px]",
623
+ color: "#494A48"
624
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Twenty-four"), /*#__PURE__*/React.createElement(_material.Typography, {
625
+ className: "!font-400 !text-[14px]",
626
+ color: "#494A48"
627
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Implant"), /*#__PURE__*/React.createElement(_material.Typography, {
628
+ className: "!font-400 !text-[12px]",
629
+ color: "#494A48"
630
+ }, "/"), /*#__PURE__*/React.createElement(StyledTypography, null, "Crown"), /*#__PURE__*/React.createElement(_material.Typography, {
631
+ className: "!font-400 !text-[12px]",
632
+ color: "#494A48"
633
+ }, "/"), /*#__PURE__*/React.createElement(StyledTypography, null, "Missing")))), /*#__PURE__*/React.createElement(_material.Box, {
634
+ className: "pb-[8px]"
635
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
636
+ className: "!font-[600] !text-[12px]",
637
+ color: "#494A48"
638
+ }, "Scenario 3"), /*#__PURE__*/React.createElement(_material.Typography, {
639
+ className: "!font-[600] !text-[12px] px-[10px] pt-[5px]",
640
+ color: "#494A48"
641
+ }, "Jump to specific tooth position and check buccal bleeding"), /*#__PURE__*/React.createElement(_material.Box, {
642
+ className: "flex items-center space-x-2 px-[10px] py-[5px]"
643
+ }, /*#__PURE__*/React.createElement(_material.Box, {
644
+ className: "flex items-center space-x-1"
645
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.CommandIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
646
+ className: "!font-400 !text-[12px]",
647
+ color: "#494A48"
648
+ }, "Command:")), /*#__PURE__*/React.createElement(_material.Box, {
649
+ className: "flex items-center"
650
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Jump"), /*#__PURE__*/React.createElement(_material.Typography, {
651
+ className: "!font-400 !text-[14px]",
652
+ color: "#494A48"
653
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Seventeen"), /*#__PURE__*/React.createElement(_material.Typography, {
654
+ className: "!font-400 !text-[14px]",
655
+ color: "#494A48"
656
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Buccal"), /*#__PURE__*/React.createElement(_material.Typography, {
657
+ className: "!font-400 !text-[14px]",
658
+ color: "#494A48"
659
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Bleeding"))), /*#__PURE__*/React.createElement(_material.Typography, {
660
+ className: "!font-[600] !text-[12px] px-[10px] pt-[5px]",
661
+ color: "#494A48"
662
+ }, "Jump to specific tooth position and check mobility II"), /*#__PURE__*/React.createElement(_material.Box, {
663
+ className: "flex items-center space-x-2 px-[10px] py-[5px]"
664
+ }, /*#__PURE__*/React.createElement(_material.Box, {
665
+ className: "flex items-center space-x-1"
666
+ }, /*#__PURE__*/React.createElement(_material.Box, null, /*#__PURE__*/React.createElement(_svgs.CommandIcon, null)), /*#__PURE__*/React.createElement(_material.Typography, {
667
+ className: "!font-400 !text-[12px]",
668
+ color: "#494A48"
669
+ }, "Command:")), /*#__PURE__*/React.createElement(_material.Box, {
670
+ className: "flex items-center"
671
+ }, /*#__PURE__*/React.createElement(StyledTypography, null, "Jump"), /*#__PURE__*/React.createElement(_material.Typography, {
672
+ className: "!font-400 !text-[14px]",
673
+ color: "#494A48"
674
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Thirty-three"), /*#__PURE__*/React.createElement(_material.Typography, {
675
+ className: "!font-400 !text-[14px]",
676
+ color: "#494A48"
677
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Lingual"), /*#__PURE__*/React.createElement(_material.Typography, {
678
+ className: "!font-400 !text-[14px]",
679
+ color: "#494A48"
680
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Mobility"), /*#__PURE__*/React.createElement(_material.Typography, {
681
+ className: "!font-400 !text-[14px]",
682
+ color: "#494A48"
683
+ }, "+"), /*#__PURE__*/React.createElement(StyledTypography, null, "Two"))))), /*#__PURE__*/React.createElement(_material.Popover, {
684
+ open: openAnchorEl,
685
+ anchorEl: anchorEl,
686
+ onClose: handlePopoverClose,
687
+ anchorOrigin: {
688
+ vertical: 'bottom',
689
+ horizontal: 'right'
690
+ },
691
+ transformOrigin: {
692
+ vertical: 'top',
693
+ horizontal: 'right'
694
+ },
695
+ sx: {
696
+ '& .MuiPaper-root': {
697
+ boxShadow: 'none',
698
+ border: '1px solid #D8DEE4',
699
+ borderRadius: '5px',
700
+ marginTop: '5px'
701
+ }
702
+ }
703
+ }, /*#__PURE__*/React.createElement(_material.Box, {
704
+ className: "px-[5px] py-[2.5px] w-[200px]"
705
+ }, /*#__PURE__*/React.createElement(_material.Box, {
706
+ className: "flex items-center px-[10px] py-[3px]"
707
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
708
+ className: "!font-bold !text-[14px]",
709
+ color: "#494A48B2"
710
+ }, "Data")), /*#__PURE__*/React.createElement(_material.Box, {
711
+ className: "flex items-center justify-between rounded-[5px] px-[10px] py-[3px] cursor-pointer",
712
+ sx: {
713
+ '&:hover': {
714
+ background: '#F6F6F6'
715
+ }
716
+ }
717
+ }, /*#__PURE__*/React.createElement(_material.Box, {
718
+ className: "flex items-center space-x-1"
719
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
720
+ className: "!font-bold !text-[14px]",
721
+ color: "#494A48"
722
+ }, "7"), /*#__PURE__*/React.createElement(_material.Typography, {
723
+ className: "!font-400 !text-[12px]",
724
+ color: "#494A48"
725
+ }, "words")), /*#__PURE__*/React.createElement(_material.Typography, {
726
+ className: "!font-400 !text-[14px]",
727
+ color: "#494A48"
728
+ }, "02.July.2024")), /*#__PURE__*/React.createElement(_material.Box, {
729
+ className: "flex items-center justify-between px-[10px] py-[3px]"
730
+ }, /*#__PURE__*/React.createElement(_material.Box, {
731
+ className: "flex items-center space-x-1"
732
+ }, /*#__PURE__*/React.createElement(_material.Typography, {
733
+ className: "!font-bold !text-[14px]",
734
+ color: "#494A48"
735
+ }, "7"), /*#__PURE__*/React.createElement(_material.Typography, {
736
+ className: "!font-400 !text-[12px]",
737
+ color: "#494A48"
738
+ }, "words")), /*#__PURE__*/React.createElement(_material.Typography, {
739
+ className: "!font-400 !text-[14px]",
740
+ color: "#494A48"
741
+ }, "02.July.2024")))));
742
+ };
743
+ var _default = exports.default = Recognition;