dmed-voice-assistant 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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;