@tiny-codes/react-easy 1.4.7 → 1.4.9

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/es/assets/request-camera-en.js +1 -1
  3. package/es/assets/request-camera-zh.js +1 -1
  4. package/es/assets/request-microphone-en.js +1 -1
  5. package/es/assets/request-microphone-zh.js +1 -1
  6. package/es/assets/reset-camera-en.js +1 -1
  7. package/es/assets/reset-camera-zh.js +1 -1
  8. package/es/assets/reset-microphone-en.js +1 -1
  9. package/es/assets/reset-microphone-zh.js +1 -1
  10. package/es/assets/save-default-audio1-en.js +1 -1
  11. package/es/assets/save-default-audio1-zh.js +1 -1
  12. package/es/assets/save-default-audio2-en.js +1 -1
  13. package/es/assets/save-default-audio2-zh.js +1 -1
  14. package/es/hooks/index.d.ts +6 -0
  15. package/es/hooks/index.js +6 -0
  16. package/es/hooks/index.js.map +1 -1
  17. package/es/hooks/useAudioPlayer.d.ts +7 -0
  18. package/es/hooks/useAudioPlayer.js +13 -0
  19. package/es/hooks/useAudioPlayer.js.map +1 -0
  20. package/es/hooks/useSSE.d.ts +26 -0
  21. package/es/hooks/useSSE.js +147 -0
  22. package/es/hooks/useSSE.js.map +1 -0
  23. package/es/hooks/useStompSocket.d.ts +63 -0
  24. package/es/hooks/useStompSocket.js +182 -0
  25. package/es/hooks/useStompSocket.js.map +1 -0
  26. package/es/hooks/useUserMedia.js +12 -24
  27. package/es/hooks/useUserMedia.js.map +1 -1
  28. package/es/locales/index.d.ts +6 -0
  29. package/es/locales/langs/en-US.d.ts +2 -0
  30. package/es/locales/langs/en-US.js +3 -1
  31. package/es/locales/langs/en-US.js.map +1 -1
  32. package/es/locales/langs/zh-CN.d.ts +2 -0
  33. package/es/locales/langs/zh-CN.js +3 -1
  34. package/es/locales/langs/zh-CN.js.map +1 -1
  35. package/es/utils/AudioPlayer.d.ts +159 -0
  36. package/es/utils/AudioPlayer.js +433 -0
  37. package/es/utils/AudioPlayer.js.map +1 -0
  38. package/es/utils/base64.d.ts +48 -0
  39. package/es/utils/base64.js +139 -0
  40. package/es/utils/base64.js.map +1 -0
  41. package/es/utils/crypto.d.ts +0 -30
  42. package/es/utils/crypto.js +8 -93
  43. package/es/utils/crypto.js.map +1 -1
  44. package/es/utils/index.d.ts +5 -1
  45. package/es/utils/index.js +5 -1
  46. package/es/utils/index.js.map +1 -1
  47. package/lib/hooks/index.d.ts +6 -0
  48. package/lib/hooks/index.js +17 -1
  49. package/lib/hooks/index.js.map +2 -2
  50. package/lib/hooks/useAudioPlayer.d.ts +7 -0
  51. package/lib/hooks/useAudioPlayer.js +42 -0
  52. package/lib/hooks/useAudioPlayer.js.map +7 -0
  53. package/lib/hooks/useSSE.d.ts +26 -0
  54. package/lib/hooks/useSSE.js +128 -0
  55. package/lib/hooks/useSSE.js.map +7 -0
  56. package/lib/hooks/useStompSocket.d.ts +63 -0
  57. package/lib/hooks/useStompSocket.js +154 -0
  58. package/lib/hooks/useStompSocket.js.map +7 -0
  59. package/lib/hooks/useUserMedia.js +12 -24
  60. package/lib/hooks/useUserMedia.js.map +2 -2
  61. package/lib/locales/index.d.ts +6 -0
  62. package/lib/locales/langs/en-US.d.ts +2 -0
  63. package/lib/locales/langs/en-US.js +3 -1
  64. package/lib/locales/langs/en-US.js.map +2 -2
  65. package/lib/locales/langs/zh-CN.d.ts +2 -0
  66. package/lib/locales/langs/zh-CN.js +3 -1
  67. package/lib/locales/langs/zh-CN.js.map +2 -2
  68. package/lib/utils/AudioPlayer.d.ts +159 -0
  69. package/lib/utils/AudioPlayer.js +284 -0
  70. package/lib/utils/AudioPlayer.js.map +7 -0
  71. package/lib/utils/base64.d.ts +48 -0
  72. package/lib/utils/base64.js +120 -0
  73. package/lib/utils/base64.js.map +7 -0
  74. package/lib/utils/crypto.d.ts +0 -30
  75. package/lib/utils/crypto.js +7 -66
  76. package/lib/utils/crypto.js.map +2 -2
  77. package/lib/utils/index.d.ts +5 -1
  78. package/lib/utils/index.js +28 -3
  79. package/lib/utils/index.js.map +2 -2
  80. package/package.json +10 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","apply","_objectSpread","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","key","_toPropertyKey","_toPrimitive","String","toPrimitive","Number","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","args","err","undefined","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","toString","Array","from","test","len","arr2","isArray","useContext","useEffect","useMemo","useRef","useState","App","Checkbox","Flex","Form","Modal","notification","Select","Typography","EasyConfigProvider","ReactEasyContext","StreamTimeSlicerClass","useRefFunction","useRefValue","useT","jsx","_jsx","jsxs","_jsxs","requestMicrophoneEnUrlPromise","requestMicrophoneZhUrlPromise","resetMicrophoneEnUrlPromise","resetMicrophoneZhUrlPromise","saveAudioDeviceEnUrlPromise1","saveAudioDeviceZhUrlPromise1","saveAudioDeviceEnUrlPromise2","saveAudioDeviceZhUrlPromise2","requestCameraEnUrlPromise","requestCameraZhUrlPromise","resetCameraEnUrlPromise","resetCameraZhUrlPromise","useUserMedia","props","_app$modal","media","pcmAudioOptions","disabled","_props$streamSliceMs","streamSliceMs","_props$soundDetection","soundDetectionThreshold","_props$soundDetection2","soundDetectionTimeout","onStartRecording","onStopRecording","onStreamChunk","onPcmStreamChunk","context","lang","contextRef","app","useApp","modal","confirm","modalRef","_useState","_useState2","requestMicrophoneEnUrl","setRequestMicrophoneEnUrl","_useState3","_useState4","requestMicrophoneZhUrl","setRequestMicrophoneZhUrl","_useState5","_useState6","resetMicrophoneEnUrl","setResetMicrophoneEnUrl","_useState7","_useState8","resetMicrophoneZhUrl","setResetMicrophoneZhUrl","_useState9","_useState10","requestCameraEnUrl","setRequestCameraEnUrl","_useState11","_useState12","requestCameraZhUrl","setRequestCameraZhUrl","_useState13","_useState14","resetCameraEnUrl","setResetCameraEnUrl","_useState15","_useState16","resetCameraZhUrl","setResetCameraZhUrl","_useState17","_useState18","isRecording","setIsRecording","_useState19","_useState20","mediaStream","setMediaStream","_useState21","_useState22","mediaRecorder","setMediaRecorder","stopSoundListeningRef","closePcmRef","includeAudio","audio","exactAudioDeviceIdRef","rafRef","isSpeakingRef","silenceVolumeThresholdRef","silenceDetectDurationRef","soundDetectStart","pcmSampleRateRef","onPcmStreamChunkRef","pcmStreamSlicerRef","timeSlice","onSlice","channels","_onPcmStreamChunkRef$","current","deviceType","video","featureName","showDeniedPopup","resetMicrophoneUrl","resetCameraUrl","title","width","content","children","Paragraph","Text","strong","src","alt","style","recordStream","_ref","_callee2","stream","options","recorder","ctx","sourceNode","node","setupWorklet","_callee2$","_context2","deviceId","exact","navigator","mediaDevices","getUserMedia","MediaRecorder","ondataavailable","event","data","size","start","AudioContext","audioContext","sampleRate","state","resume","createMediaStreamSource","_node","_node2","port","close","disconnect","_ref2","_callee","_callee$","_context","audioWorklet","addModule","generatePcmCaptureProcessorModule","AudioWorkletNode","workletOptions","onmessage","_e$data","connect","t0","fallbackScriptProcessor","streamSlicer","console","t1","message","startRecording","_callee3","_navigator$mediaDevic","_navigator$permission","result","requestMicrophoneUrl","requestCameraUrl","_callee3$","_context3","permissions","query","window","warning","onOk","stopRecording","_stopSoundListeningRe","_closePcmRef$current","getTracks","cancelAnimationFrame","waitForSound","source","analyser","createAnalyser","fftSize","Date","now","Uint8Array","cancelDetect","_stopSoundListeningRe2","loop","getByteTimeDomainData","sum","_iterator","_createForOfIteratorHelper","_step","rms","Math","sqrt","enumerateDevices","devices","audioInputs","kind","SaveAudioDeviceForm","onDeviceChange","setTimeout","onCancel","requestAnimationFrame","warn","_stopSoundListeningRe3","module","default","_Form$useForm","useForm","_Form$useForm2","form","_useContext","_useState23","_useState24","saveAudioDeviceEnUrl1","setSaveAudioDeviceEnUrl1","_useState25","_useState26","saveAudioDeviceEnUrl2","setSaveAudioDeviceEnUrl2","_useState27","_useState28","saveAudioDeviceZhUrl1","setSaveAudioDeviceZhUrl1","_useState29","_useState30","saveAudioDeviceZhUrl2","setSaveAudioDeviceZhUrl2","_useState31","_useState32","saveDefaultAudioDevicePermanently","setSaveDefaultAudioDevicePermanently","_useState33","_mediaStream$getAudio","_mediaStream$getAudio2","_audioInputs$","getAudioTracks","getSettings","_useState34","selectedDeviceId","setSelectedDeviceId","openDataImageInNewTab","dataUrl","_meta$match","_dataUrl$split","split","_dataUrl$split2","meta","b64","mime","match","binary","atob","bytes","charCodeAt","blob","Blob","url","URL","createObjectURL","open","layout","Item","label","map","input","defaultValue","onChange","id","marginBottom","target","checked","gap","align","flex","minWidth","href","onClick","preventDefault","height","workletCode","blobUrl","bufferSize","processor","createScriptProcessor","onaudioprocess","ev","inputBuffer","numberOfChannels","getChannelData","copy","Float32Array","set","gain","createGain","destination"],"sources":["../../src/hooks/useUserMedia.tsx"],"sourcesContent":["import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { App, Checkbox, Flex, Form, Modal, notification, Select, Typography } from 'antd';\nimport EasyConfigProvider from '../components/ConfigProvider';\nimport ReactEasyContext from '../components/ConfigProvider/context';\nimport { StreamTimeSlicerClass } from '../utils/stream';\nimport useRefFunction from './useRefFunction';\nimport useRefValue from './useRefValue';\nimport useT from './useT';\n\nconst requestMicrophoneEnUrlPromise = import('../assets/request-microphone-en.js');\nconst requestMicrophoneZhUrlPromise = import('../assets/request-microphone-zh.js');\nconst resetMicrophoneEnUrlPromise = import('../assets/reset-microphone-en.js');\nconst resetMicrophoneZhUrlPromise = import('../assets/reset-microphone-zh.js');\nconst saveAudioDeviceEnUrlPromise1 = import('../assets/save-default-audio1-en.js');\nconst saveAudioDeviceZhUrlPromise1 = import('../assets/save-default-audio1-zh.js');\nconst saveAudioDeviceEnUrlPromise2 = import('../assets/save-default-audio2-en.js');\nconst saveAudioDeviceZhUrlPromise2 = import('../assets/save-default-audio2-zh.js');\nconst requestCameraEnUrlPromise = import('../assets/request-camera-en.js');\nconst requestCameraZhUrlPromise = import('../assets/request-camera-zh.js');\nconst resetCameraEnUrlPromise = import('../assets/reset-camera-en.js');\nconst resetCameraZhUrlPromise = import('../assets/reset-camera-zh.js');\n\nexport interface UseUserMediaProps {\n /**\n * - **EN:** The media constraints for the audio and video stream.\n * - **CN:** 媒体流的媒体约束。\n */\n media: Pick<MediaStreamConstraints, 'audio' | 'video'>;\n /**\n * - **EN:** Whether to enable PCM output, only effective when recording audio. Please use\n * `onPcmStreamChunk` callback to get PCM data. Default is `false`.\n * - **CN:** 是否启用 PCM 输出,仅在录制音频时有效。请使用 `onPcmStreamChunk` 回调获取 PCM 数据。默认`false`\n */\n pcmAudioOptions?: {\n /**\n * - **EN:** The audio context options for the PCM output.\n * - **CN:** PCM 输出的音频上下文选项。\n */\n audioContext?: AudioContextOptions;\n /**\n * - **EN:** The worklet options for the PCM output.\n * - **CN:** PCM 输出的工作线程选项。\n */\n workletOptions?: AudioWorkletNodeOptions;\n };\n /**\n * - **EN:** Callback function that is triggered when the recording starts, providing the media\n * stream.\n * - **CN:** 开始录制时触发的回调函数,提供媒体流。\n *\n * @param {MediaStream} stream - The media stream.\n */\n onStartRecording?: (stream: MediaStream) => void;\n /**\n * - **EN:** Callback function that is triggered when the recording stops.\n * - **CN:** 停止录制时触发的回调函数。\n */\n onStopRecording?: () => void;\n /**\n * - **EN:** Callback function that is triggered when a new chunk of media data is available.\n * - **CN:** 当录制媒体流时,每个时间分片会触发一次 `onStreamChunk` 回调,提供媒体数据块。\n *\n * > 注意音频流编码格式为:audio/webm;codecs=opus。如果希望获取 PCM 数据,请使用 `onPcmData` 回调。\n *\n * @param {Blob} chunk - The media data chunk (MIME: audio/webm;codecs=opus) | 媒体数据块 (MIME:\n * audio/webm;codecs=opus)\n */\n onStreamChunk?: (chunk: Blob) => void;\n /**\n * - **EN:** Callback for raw PCM float data (per render quantum)\n * - **CN:** 获取原始 PCM 浮点数据的回调(每个渲染量子)\n *\n * @param data Monophonic or polyphonic spliced data | 单声道或多声道拼接数据\n * @param sampleRate Sample rate | 采样率\n */\n onPcmStreamChunk?: (channels: Float32Array[], sampleRate: number) => void;\n /**\n * - **EN:** Whether to disable this hook.\n * - **CN:** 是否禁用此工具\n */\n disabled?: boolean;\n /**\n * - **EN:** The slicing time period (milliseconds) for each fragment of the audio and video stream,\n * each time slice will trigger the `onStreamChunk` callback. Default is `500`.\n * - **CN:** 媒体流每个分片的切片时间段(毫秒),每个时间分片会触发一次 `onStreamChunk` 回调,默认值为 `500`。\n */\n streamSliceMs?: number;\n /**\n * - **EN:** The silence detection threshold (0-1) for the audio stream, below which the audio is\n * considered silent. Default is `0`.\n * - **CN:** 音频流的静音检测阈值(0-1),低于该值音频被视为静音。默认值为 `0`。\n */\n soundDetectionThreshold?: number;\n /**\n * - **EN:** The timeout duration (milliseconds) for detecting sound input. If no sound is detected\n * within this period, the user will be prompted to re-select the audio device. Default is\n * `3000`.\n * - **CN:** 检测是否有声音输入的超时时间(毫秒),如果在该时间段内没有检测到声音,则会提示用户重新选择音频设备。默认值为 `3000`。\n */\n soundDetectionTimeout?: number;\n}\n\nconst useUserMedia = (props: UseUserMediaProps): UseUserMediaResult => {\n const {\n media,\n pcmAudioOptions,\n disabled,\n streamSliceMs = 500,\n soundDetectionThreshold = 0,\n soundDetectionTimeout = 3000,\n onStartRecording,\n onStopRecording,\n onStreamChunk,\n onPcmStreamChunk,\n } = props;\n const context = useContext(ReactEasyContext);\n const { lang } = context;\n const contextRef = useRefValue(context);\n const t = useT();\n const app = App.useApp();\n // @ts-expect-error: because app may return a stub object when App is not used\n const modal = app.modal?.confirm ? app.modal : Modal;\n const modalRef = useRefValue(modal);\n const [requestMicrophoneEnUrl, setRequestMicrophoneEnUrl] = useState<string>();\n const [requestMicrophoneZhUrl, setRequestMicrophoneZhUrl] = useState<string>();\n const [resetMicrophoneEnUrl, setResetMicrophoneEnUrl] = useState<string>();\n const [resetMicrophoneZhUrl, setResetMicrophoneZhUrl] = useState<string>();\n const [requestCameraEnUrl, setRequestCameraEnUrl] = useState<string>();\n const [requestCameraZhUrl, setRequestCameraZhUrl] = useState<string>();\n const [resetCameraEnUrl, setResetCameraEnUrl] = useState<string>();\n const [resetCameraZhUrl, setResetCameraZhUrl] = useState<string>();\n const [isRecording, setIsRecording] = useState(false);\n const [mediaStream, setMediaStream] = useState<MediaStream>();\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder | null>(null);\n const stopSoundListeningRef = useRef<(() => void) | undefined>(undefined);\n const closePcmRef = useRef<(() => void) | undefined>(undefined);\n const includeAudio = !!media.audio;\n const exactAudioDeviceIdRef = useRef<string | undefined>(undefined);\n const rafRef = useRef<number>(0);\n const isSpeakingRef = useRef(false);\n const silenceVolumeThresholdRef = useRefValue(soundDetectionThreshold);\n const silenceDetectDurationRef = useRefValue(soundDetectionTimeout);\n const soundDetectStart = useRef<number>(0);\n const pcmSampleRateRef = useRef<number>(0);\n const onPcmStreamChunkRef = useRefValue(onPcmStreamChunk);\n const pcmStreamSlicerRef = useRef(\n new StreamTimeSlicerClass({\n timeSlice: streamSliceMs,\n onSlice: (channels) => {\n onPcmStreamChunkRef.current?.(channels, pcmSampleRateRef.current);\n },\n })\n );\n const deviceType = useMemo(\n () => (media.video ? t('hooks.useUserMedia.camera') : t('hooks.useUserMedia.microphone')),\n [media, t]\n );\n const featureName = useMemo(\n () => (media.video ? t('hooks.featureName.camera') : t('hooks.featureName.microphone')),\n [media, t]\n );\n\n const showDeniedPopup = () => {\n const resetMicrophoneUrl = lang === 'zh-CN' ? resetMicrophoneZhUrl : resetMicrophoneEnUrl;\n const resetCameraUrl = lang === 'zh-CN' ? resetCameraZhUrl : resetCameraEnUrl;\n modal.error({\n title: t('hooks.useUserMedia.devicePermission', { deviceType }),\n width: 500,\n content: (\n <div>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text strong type=\"danger\">\n {t('hooks.useUserMedia.deniedPermission', { deviceType, featureName })}\n </Typography.Text>\n </Typography.Paragraph>\n <Typography.Paragraph>{t('hooks.useUserMedia.reopenPermissionGuide', { deviceType })}</Typography.Paragraph>\n <img\n src={media.video ? resetCameraUrl : resetMicrophoneUrl}\n alt=\"microphone-permission\"\n style={{ width: 380 }}\n />\n </div>\n ),\n });\n };\n const recordStream = async () => {\n let stream: MediaStream;\n try {\n const options = media;\n if (media.audio) {\n if (exactAudioDeviceIdRef.current) {\n if (media.audio === true) {\n options.audio = { deviceId: { exact: exactAudioDeviceIdRef.current } };\n } else {\n options.audio = { deviceId: { exact: exactAudioDeviceIdRef.current }, ...media.audio };\n }\n }\n }\n stream = await navigator.mediaDevices.getUserMedia(options);\n setMediaStream(stream);\n onStartRecording?.(stream);\n\n const recorder = new MediaRecorder(stream);\n recorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n onStreamChunk?.(event.data);\n }\n };\n if (streamSliceMs) {\n recorder.start(streamSliceMs);\n } else {\n recorder.start();\n }\n setMediaRecorder(recorder);\n setIsRecording(true);\n\n // Capture PCM data if enabled\n if (options.audio && onPcmStreamChunkRef.current) {\n try {\n const ctx = new AudioContext(pcmAudioOptions?.audioContext);\n pcmSampleRateRef.current = ctx.sampleRate;\n // Safari might need resume\n if (ctx.state === 'suspended') {\n await ctx.resume();\n }\n const sourceNode = ctx.createMediaStreamSource(stream);\n let node: AudioWorkletNode | undefined;\n\n closePcmRef.current = () => {\n node?.port.close();\n node?.disconnect();\n sourceNode.disconnect();\n ctx.close().catch(() => {\n // Ignore errors\n });\n };\n\n const setupWorklet = async () => {\n try {\n // Load the worklet module\n await ctx.audioWorklet.addModule(generatePcmCaptureProcessorModule());\n node = new AudioWorkletNode(ctx, 'pcm-capture', pcmAudioOptions?.workletOptions);\n node.port.onmessage = (e: MessageEvent) => {\n if (e.data?.type === 'pcm') {\n const channels = e.data.channels as Float32Array[];\n pcmStreamSlicerRef.current.push(channels);\n }\n };\n sourceNode.connect(node);\n } catch (err) {\n fallbackScriptProcessor({ ctx, sourceNode, streamSlicer: pcmStreamSlicerRef.current });\n }\n };\n\n if ('audioWorklet' in ctx) {\n setupWorklet();\n } else {\n fallbackScriptProcessor({ ctx, sourceNode, streamSlicer: pcmStreamSlicerRef.current });\n }\n } catch (e) {\n console.error('setup pcm worklet failed', e);\n }\n }\n return recorder;\n } catch (error) {\n console.error(error);\n if (error instanceof Error && error.name === 'NotAllowedError') {\n showDeniedPopup();\n notification.error({ message: t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }) });\n throw new Error(t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }));\n }\n notification.error({ message: t('hooks.useUserMedia.notSupport') });\n throw new Error(t('hooks.useUserMedia.notSupport'));\n }\n };\n\n const startRecording = useRefFunction(async () => {\n if (disabled) {\n throw new Error(t('hooks.useUserMedia.disabledWarning'));\n }\n if (isRecording) {\n throw new Error(t('hooks.useUserMedia.isRecordingNow'));\n }\n if (!navigator.mediaDevices?.getUserMedia || !navigator.permissions?.query) {\n notification.error({\n message: t('hooks.useUserMedia.notSupport'),\n });\n throw new Error(t('hooks.useUserMedia.notSupport'));\n }\n try {\n const result = await window.navigator.permissions.query({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n name: media.video ? ('camera' as any) : ('microphone' as any),\n });\n if (result.state === 'denied') {\n showDeniedPopup();\n notification.error({ message: t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }) });\n throw new Error(t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }));\n } else {\n if (result.state === 'prompt') {\n const requestMicrophoneUrl = lang === 'zh-CN' ? requestMicrophoneZhUrl : requestMicrophoneEnUrl;\n const requestCameraUrl = lang === 'zh-CN' ? requestCameraZhUrl : requestCameraEnUrl;\n return new Promise<MediaRecorder>((resolve, reject) => {\n modal.warning({\n title: t('hooks.useUserMedia.devicePermission', { deviceType }),\n content: (\n <div>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text strong>{t('hooks.useUserMedia.requestTip1', { deviceType })}</Typography.Text>\n </Typography.Paragraph>\n <Typography.Paragraph>{t('hooks.useUserMedia.requestTip2', { featureName })}</Typography.Paragraph>\n <div>\n <img\n src={media.video ? requestCameraUrl : requestMicrophoneUrl}\n alt=\"microphone-permission\"\n style={{ width: 380 }}\n />\n </div>\n </div>\n ),\n onOk: () => {\n try {\n recordStream()\n .then((recorder) => {\n resolve(recorder);\n })\n .catch((error) => {\n reject(error);\n });\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n width: 500,\n });\n });\n } else {\n return await recordStream();\n }\n }\n } catch (error) {\n console.error(error);\n throw error;\n }\n });\n\n const stopRecording = useRefFunction(() => {\n mediaRecorder?.stop();\n mediaStream?.getTracks().forEach((t) => t.stop());\n setMediaStream(undefined);\n setIsRecording(false);\n isSpeakingRef.current = false;\n cancelAnimationFrame(rafRef.current);\n stopSoundListeningRef.current?.();\n closePcmRef.current?.();\n onStopRecording?.();\n });\n\n // Wait for sound. If keep silent for a while, show a modal to let user reselect audio device\n const waitForSound = useRefFunction((mediaStream: MediaStream) => {\n const ctx = new AudioContext();\n const source = ctx.createMediaStreamSource(mediaStream);\n const analyser = ctx.createAnalyser();\n analyser.fftSize = 2048;\n source.connect(analyser);\n soundDetectStart.current = Date.now();\n const data = new Uint8Array(analyser.fftSize);\n const cancelDetect = () => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = 0;\n stopSoundListeningRef.current?.();\n };\n const loop = () => {\n analyser.getByteTimeDomainData(data);\n // Calculate RMS\n let sum = 0;\n for (const value of data) {\n const v = (value - 128) / 128;\n sum += v * v;\n }\n const rms = Math.sqrt(sum / data.length); // 0~1\n if (rms > silenceVolumeThresholdRef.current) {\n if (!isSpeakingRef.current) {\n isSpeakingRef.current = true;\n cancelDetect();\n return;\n }\n } else {\n if (Date.now() > soundDetectStart.current + silenceDetectDurationRef.current) {\n navigator.mediaDevices.enumerateDevices().then((devices) => {\n const audioInputs = devices.filter((d) => d.kind === 'audioinput');\n modalRef.current.confirm({\n title: t('hooks.useUserMedia.soundDetectTitle'),\n content: (\n <EasyConfigProvider {...contextRef.current}>\n <SaveAudioDeviceForm\n devices={audioInputs}\n mediaStream={mediaStream}\n onDeviceChange={(deviceId) => (exactAudioDeviceIdRef.current = deviceId)}\n />\n </EasyConfigProvider>\n ),\n width: 500,\n onOk: () => {\n if (exactAudioDeviceIdRef.current) {\n stopRecording();\n setTimeout(() => {\n startRecording();\n });\n }\n },\n onCancel: () => {\n cancelDetect();\n },\n });\n });\n\n cancelDetect();\n return;\n }\n }\n rafRef.current = requestAnimationFrame(loop);\n };\n loop();\n\n stopSoundListeningRef.current = () => {\n analyser.disconnect();\n source.disconnect();\n ctx.close().catch(() => {\n // Ignore errors\n });\n stopSoundListeningRef.current = undefined;\n };\n });\n\n // Component destroy\n useEffect(() => {\n return stopRecording;\n }, []);\n\n // Stop recording when disabled has been changed\n useEffect(() => {\n if (disabled && isRecording) {\n stopRecording();\n }\n }, [disabled, isRecording]);\n\n // Update PCM stream slicer time slice when input sample rate changes\n useEffect(() => {\n if (streamSliceMs && pcmStreamSlicerRef.current.timeSlice !== streamSliceMs) {\n pcmStreamSlicerRef.current.timeSlice = streamSliceMs;\n }\n }, [streamSliceMs]);\n\n // Detect sound activity (only for audio or media with audio)\n useEffect(() => {\n if (includeAudio && mediaStream && !isSpeakingRef.current) {\n try {\n waitForSound(mediaStream);\n } catch (e) {\n console.warn('Audio volume detecting failed:', e);\n }\n }\n return () => {\n stopSoundListeningRef.current?.();\n };\n }, [includeAudio, mediaStream, t]);\n\n useEffect(() => {\n requestMicrophoneEnUrlPromise.then((module) => {\n setRequestMicrophoneEnUrl(module.default);\n });\n requestMicrophoneZhUrlPromise.then((module) => {\n setRequestMicrophoneZhUrl(module.default);\n });\n resetMicrophoneEnUrlPromise.then((module) => {\n setResetMicrophoneEnUrl(module.default);\n });\n resetMicrophoneZhUrlPromise.then((module) => {\n setResetMicrophoneZhUrl(module.default);\n });\n requestCameraEnUrlPromise.then((module) => {\n setRequestCameraEnUrl(module.default);\n });\n requestCameraZhUrlPromise.then((module) => {\n setRequestCameraZhUrl(module.default);\n });\n resetCameraEnUrlPromise.then((module) => {\n setResetCameraEnUrl(module.default);\n });\n resetCameraZhUrlPromise.then((module) => {\n setResetCameraZhUrl(module.default);\n });\n }, []);\n\n return {\n isRecording,\n startRecording,\n stopRecording,\n };\n};\n\nexport interface UseUserMediaResult {\n /**\n * - **EN** Whether the media stream is currently being recorded\n * - **CN** 是否正在录制媒体流\n */\n isRecording: boolean;\n /**\n * - **EN** Start recording the media stream\n * - **CN** 开始录制媒体流\n */\n startRecording: () => Promise<MediaRecorder>;\n /**\n * - **EN** Stop recording the media stream\n * - **CN** 停止录制媒体流\n */\n stopRecording: () => void;\n /**\n * - **EN** Get the media stream being recorded, returns the stream if recording, otherwise returns\n * `undefined`\n * - **CN** 获取正在录制的媒体流,如果正在录制则返回该流,否则返回 `undefined`\n */\n mediaStream?: MediaStream;\n}\n\nfunction SaveAudioDeviceForm(props: {\n devices: MediaDeviceInfo[];\n mediaStream: MediaStream;\n onDeviceChange: (deviceId: string) => void;\n}) {\n const { devices, mediaStream, onDeviceChange } = props;\n const [form] = Form.useForm();\n const t = useT();\n const { lang } = useContext(ReactEasyContext);\n const [saveAudioDeviceEnUrl1, setSaveAudioDeviceEnUrl1] = useState<string>();\n const [saveAudioDeviceEnUrl2, setSaveAudioDeviceEnUrl2] = useState<string>();\n const [saveAudioDeviceZhUrl1, setSaveAudioDeviceZhUrl1] = useState<string>();\n const [saveAudioDeviceZhUrl2, setSaveAudioDeviceZhUrl2] = useState<string>();\n const [saveDefaultAudioDevicePermanently, setSaveDefaultAudioDevicePermanently] = useState(false);\n const audioInputs = useMemo(() => devices.filter((d) => d.kind === 'audioinput'), [devices]);\n const [selectedDeviceId, setSelectedDeviceId] = useState<string | undefined>(\n () => mediaStream.getAudioTracks()[0]?.getSettings()?.deviceId ?? audioInputs[0]?.deviceId\n );\n\n const openDataImageInNewTab = useRefFunction((dataUrl: string | undefined) => {\n if (!dataUrl) return;\n const [meta, b64] = dataUrl.split(',');\n const mime = meta.match(/data:(.*);base64/)?.[1] || 'image/png';\n const binary = atob(b64);\n const len = binary.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) bytes[i] = binary.charCodeAt(i);\n const blob = new Blob([bytes], { type: mime });\n const url = URL.createObjectURL(blob);\n window.open(url);\n });\n\n useEffect(() => {\n saveAudioDeviceEnUrlPromise1.then((module) => {\n setSaveAudioDeviceEnUrl1(module.default);\n });\n saveAudioDeviceEnUrlPromise2.then((module) => {\n setSaveAudioDeviceEnUrl2(module.default);\n });\n saveAudioDeviceZhUrlPromise1.then((module) => {\n setSaveAudioDeviceZhUrl1(module.default);\n });\n saveAudioDeviceZhUrlPromise2.then((module) => {\n setSaveAudioDeviceZhUrl2(module.default);\n });\n }, []);\n\n return (\n <Form layout=\"vertical\" form={form}>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text>{t('hooks.useUserMedia.soundDetectDescription')}</Typography.Text>\n </Typography.Paragraph>\n <Form.Item label={t('hooks.useUserMedia.chooseMicrophoneDevice')}>\n <Select\n options={audioInputs.map((input) => ({\n label: input.label,\n value: input.deviceId,\n }))}\n defaultValue={selectedDeviceId}\n onChange={(id) => {\n setSelectedDeviceId(id);\n onDeviceChange(id);\n }}\n />\n </Form.Item>\n <Form.Item style={{ marginBottom: 0 }}>\n <Checkbox onChange={(e) => setSaveDefaultAudioDevicePermanently(e.target.checked)}>\n {t('hooks.useUserMedia.rememberDefaultAudioDevice')}\n </Checkbox>\n </Form.Item>\n {saveDefaultAudioDevicePermanently && (\n <div>\n <Typography.Paragraph>\n <Typography.Text>{t('hooks.useUserMedia.rememberDefaultAudioDeviceTip')}</Typography.Text>\n </Typography.Paragraph>\n <Flex gap={8} align=\"flex-start\">\n <div style={{ flex: 1, minWidth: 0 }}>\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n openDataImageInNewTab(lang === 'zh-CN' ? saveAudioDeviceZhUrl1 : saveAudioDeviceEnUrl1);\n }}\n >\n <img\n src={lang === 'zh-CN' ? saveAudioDeviceZhUrl1 : saveAudioDeviceEnUrl1}\n alt=\"the first step to save default audio device\"\n style={{ width: '100%', height: 'auto' }}\n />\n </a>\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n openDataImageInNewTab(lang === 'zh-CN' ? saveAudioDeviceZhUrl2 : saveAudioDeviceEnUrl2);\n }}\n >\n <img\n src={lang === 'zh-CN' ? saveAudioDeviceZhUrl2 : saveAudioDeviceEnUrl2}\n alt=\"the second step to save default audio device\"\n style={{ width: '100%', height: 'auto' }}\n />\n </a>\n </div>\n </Flex>\n </div>\n )}\n </Form>\n );\n}\n\nfunction generatePcmCaptureProcessorModule() {\n const workletCode = `\nclass PcmCaptureProcessor extends AudioWorkletProcessor {\n process(inputs, outputs, parameters) {\n const channelsIn = inputs[0];\n if (channelsIn && channelsIn[0]) {\n const channels = channelsIn.map((ch) => {\n const copy = new Float32Array(ch.length);\n copy.set(ch);\n return copy;\n });\n this.port.postMessage({ type: 'pcm', channels }, channels.map(ch => ch.buffer));\n }\n return true;\n }\n}\nregisterProcessor('pcm-capture', PcmCaptureProcessor);\n`;\n\n // Create a Blob from the worklet code and return its URL\n const blob = new Blob([workletCode], { type: 'application/javascript' });\n const blobUrl = URL.createObjectURL(blob);\n return blobUrl;\n}\n\nfunction fallbackScriptProcessor(options: {\n ctx: AudioContext;\n sourceNode: MediaStreamAudioSourceNode;\n streamSlicer: StreamTimeSlicerClass;\n}) {\n const { ctx, sourceNode, streamSlicer } = options;\n const bufferSize = 128;\n const processor = ctx.createScriptProcessor(bufferSize, 1, 1);\n processor.onaudioprocess = (ev) => {\n const channels = [];\n for (let i = 0; i < ev.inputBuffer.numberOfChannels; i++) {\n const input = ev.inputBuffer.getChannelData(i);\n const copy = new Float32Array(input.length);\n copy.set(input);\n channels.push(copy);\n }\n streamSlicer.push(channels);\n };\n sourceNode.connect(processor);\n // 可不输出:processor.connect(ctx!.destination);不连接 destination 在部分浏览器会被自动 GC,可连到 destination 或 gain(0)\n const gain = ctx.createGain();\n gain.gain.value = 0;\n processor.connect(gain).connect(ctx.destination);\n}\n\nexport default useUserMedia;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","apply","_objectSpread","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","key","_toPropertyKey","_toPrimitive","String","toPrimitive","Number","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","args","err","undefined","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","toString","Array","from","test","len","arr2","isArray","useContext","useEffect","useMemo","useRef","useState","App","Checkbox","Flex","Form","Modal","notification","Select","Typography","EasyConfigProvider","ReactEasyContext","StreamTimeSlicerClass","useRefFunction","useRefValue","useT","jsx","_jsx","jsxs","_jsxs","useUserMedia","props","_app$modal","media","pcmAudioOptions","disabled","_props$streamSliceMs","streamSliceMs","_props$soundDetection","soundDetectionThreshold","_props$soundDetection2","soundDetectionTimeout","onStartRecording","onStopRecording","onStreamChunk","onPcmStreamChunk","context","lang","contextRef","app","useApp","modal","confirm","modalRef","_useState","_useState2","requestMicrophoneEnUrl","setRequestMicrophoneEnUrl","_useState3","_useState4","requestMicrophoneZhUrl","setRequestMicrophoneZhUrl","_useState5","_useState6","resetMicrophoneEnUrl","setResetMicrophoneEnUrl","_useState7","_useState8","resetMicrophoneZhUrl","setResetMicrophoneZhUrl","_useState9","_useState10","requestCameraEnUrl","setRequestCameraEnUrl","_useState11","_useState12","requestCameraZhUrl","setRequestCameraZhUrl","_useState13","_useState14","resetCameraEnUrl","setResetCameraEnUrl","_useState15","_useState16","resetCameraZhUrl","setResetCameraZhUrl","_useState17","_useState18","isRecording","setIsRecording","_useState19","_useState20","mediaStream","setMediaStream","_useState21","_useState22","mediaRecorder","setMediaRecorder","stopSoundListeningRef","closePcmRef","includeAudio","audio","exactAudioDeviceIdRef","rafRef","isSpeakingRef","silenceVolumeThresholdRef","silenceDetectDurationRef","soundDetectStart","pcmSampleRateRef","onPcmStreamChunkRef","pcmStreamSlicerRef","timeSlice","onSlice","channels","_onPcmStreamChunkRef$","current","deviceType","video","featureName","showDeniedPopup","resetMicrophoneUrl","resetCameraUrl","title","width","content","children","Paragraph","Text","strong","src","alt","style","recordStream","_ref","_callee2","stream","options","recorder","ctx","sourceNode","node","setupWorklet","_callee2$","_context2","deviceId","exact","navigator","mediaDevices","getUserMedia","MediaRecorder","ondataavailable","event","data","size","start","AudioContext","audioContext","sampleRate","state","resume","createMediaStreamSource","_node","_node2","port","close","disconnect","_ref2","_callee","_callee$","_context","audioWorklet","addModule","generatePcmCaptureProcessorModule","AudioWorkletNode","workletOptions","onmessage","_e$data","connect","t0","fallbackScriptProcessor","streamSlicer","console","t1","message","startRecording","_callee3","_navigator$mediaDevic","_navigator$permission","result","requestMicrophoneUrl","requestCameraUrl","_callee3$","_context3","permissions","query","window","warning","onOk","stopRecording","_stopSoundListeningRe","_closePcmRef$current","getTracks","cancelAnimationFrame","waitForSound","source","analyser","createAnalyser","fftSize","Date","now","Uint8Array","cancelDetect","_stopSoundListeningRe2","loop","getByteTimeDomainData","sum","_iterator","_createForOfIteratorHelper","_step","rms","Math","sqrt","enumerateDevices","devices","audioInputs","kind","SaveAudioDeviceForm","onDeviceChange","setTimeout","onCancel","requestAnimationFrame","warn","_stopSoundListeningRe3","module","default","_Form$useForm","useForm","_Form$useForm2","form","_useContext","_useState23","_useState24","saveAudioDeviceEnUrl1","setSaveAudioDeviceEnUrl1","_useState25","_useState26","saveAudioDeviceEnUrl2","setSaveAudioDeviceEnUrl2","_useState27","_useState28","saveAudioDeviceZhUrl1","setSaveAudioDeviceZhUrl1","_useState29","_useState30","saveAudioDeviceZhUrl2","setSaveAudioDeviceZhUrl2","_useState31","_useState32","saveDefaultAudioDevicePermanently","setSaveDefaultAudioDevicePermanently","_useState33","_mediaStream$getAudio","_mediaStream$getAudio2","_audioInputs$","getAudioTracks","getSettings","_useState34","selectedDeviceId","setSelectedDeviceId","openDataImageInNewTab","dataUrl","_meta$match","_dataUrl$split","split","_dataUrl$split2","meta","b64","mime","match","binary","atob","bytes","charCodeAt","blob","Blob","url","URL","createObjectURL","open","layout","Item","label","map","input","defaultValue","onChange","id","marginBottom","target","checked","gap","align","flex","minWidth","href","onClick","preventDefault","height","workletCode","blobUrl","bufferSize","processor","createScriptProcessor","onaudioprocess","ev","inputBuffer","numberOfChannels","getChannelData","copy","Float32Array","set","gain","createGain","destination"],"sources":["../../src/hooks/useUserMedia.tsx"],"sourcesContent":["import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { App, Checkbox, Flex, Form, Modal, notification, Select, Typography } from 'antd';\nimport EasyConfigProvider from '../components/ConfigProvider';\nimport ReactEasyContext from '../components/ConfigProvider/context';\nimport { StreamTimeSlicerClass } from '../utils/stream';\nimport useRefFunction from './useRefFunction';\nimport useRefValue from './useRefValue';\nimport useT from './useT';\n\nexport interface UseUserMediaProps {\n /**\n * - **EN:** The media constraints for the audio and video stream.\n * - **CN:** 媒体流的媒体约束。\n */\n media: Pick<MediaStreamConstraints, 'audio' | 'video'>;\n /**\n * - **EN:** Whether to enable PCM output, only effective when recording audio. Please use\n * `onPcmStreamChunk` callback to get PCM data. Default is `false`.\n * - **CN:** 是否启用 PCM 输出,仅在录制音频时有效。请使用 `onPcmStreamChunk` 回调获取 PCM 数据。默认`false`\n */\n pcmAudioOptions?: {\n /**\n * - **EN:** The audio context options for the PCM output.\n * - **CN:** PCM 输出的音频上下文选项。\n */\n audioContext?: AudioContextOptions;\n /**\n * - **EN:** The worklet options for the PCM output.\n * - **CN:** PCM 输出的工作线程选项。\n */\n workletOptions?: AudioWorkletNodeOptions;\n };\n /**\n * - **EN:** Callback function that is triggered when the recording starts, providing the media\n * stream.\n * - **CN:** 开始录制时触发的回调函数,提供媒体流。\n *\n * @param {MediaStream} stream - The media stream.\n */\n onStartRecording?: (stream: MediaStream) => void;\n /**\n * - **EN:** Callback function that is triggered when the recording stops.\n * - **CN:** 停止录制时触发的回调函数。\n */\n onStopRecording?: () => void;\n /**\n * - **EN:** Callback function that is triggered when a new chunk of media data is available.\n * - **CN:** 当录制媒体流时,每个时间分片会触发一次 `onStreamChunk` 回调,提供媒体数据块。\n *\n * > 注意音频流编码格式为:audio/webm;codecs=opus。如果希望获取 PCM 数据,请使用 `onPcmData` 回调。\n *\n * @param {Blob} chunk - The media data chunk (MIME: audio/webm;codecs=opus) | 媒体数据块 (MIME:\n * audio/webm;codecs=opus)\n */\n onStreamChunk?: (chunk: Blob) => void;\n /**\n * - **EN:** Callback for raw PCM float data (per render quantum)\n * - **CN:** 获取原始 PCM 浮点数据的回调(每个渲染量子)\n *\n * @param data Monophonic or polyphonic spliced data | 单声道或多声道拼接数据\n * @param sampleRate Sample rate | 采样率\n */\n onPcmStreamChunk?: (channels: Float32Array[], sampleRate: number) => void;\n /**\n * - **EN:** Whether to disable this hook.\n * - **CN:** 是否禁用此工具\n */\n disabled?: boolean;\n /**\n * - **EN:** The slicing time period (milliseconds) for each fragment of the audio and video stream,\n * each time slice will trigger the `onStreamChunk` callback. Default is `500`.\n * - **CN:** 媒体流每个分片的切片时间段(毫秒),每个时间分片会触发一次 `onStreamChunk` 回调,默认值为 `500`。\n */\n streamSliceMs?: number;\n /**\n * - **EN:** The silence detection threshold (0-1) for the audio stream, below which the audio is\n * considered silent. Default is `0`.\n * - **CN:** 音频流的静音检测阈值(0-1),低于该值音频被视为静音。默认值为 `0`。\n */\n soundDetectionThreshold?: number;\n /**\n * - **EN:** The timeout duration (milliseconds) for detecting sound input. If no sound is detected\n * within this period, the user will be prompted to re-select the audio device. Default is\n * `3000`.\n * - **CN:** 检测是否有声音输入的超时时间(毫秒),如果在该时间段内没有检测到声音,则会提示用户重新选择音频设备。默认值为 `3000`。\n */\n soundDetectionTimeout?: number;\n}\n\nconst useUserMedia = (props: UseUserMediaProps): UseUserMediaResult => {\n const {\n media,\n pcmAudioOptions,\n disabled,\n streamSliceMs = 500,\n soundDetectionThreshold = 0,\n soundDetectionTimeout = 3000,\n onStartRecording,\n onStopRecording,\n onStreamChunk,\n onPcmStreamChunk,\n } = props;\n const context = useContext(ReactEasyContext);\n const { lang } = context;\n const contextRef = useRefValue(context);\n const t = useT();\n const app = App.useApp();\n // @ts-expect-error: because app may return a stub object when App is not used\n const modal = app.modal?.confirm ? app.modal : Modal;\n const modalRef = useRefValue(modal);\n const [requestMicrophoneEnUrl, setRequestMicrophoneEnUrl] = useState<string>();\n const [requestMicrophoneZhUrl, setRequestMicrophoneZhUrl] = useState<string>();\n const [resetMicrophoneEnUrl, setResetMicrophoneEnUrl] = useState<string>();\n const [resetMicrophoneZhUrl, setResetMicrophoneZhUrl] = useState<string>();\n const [requestCameraEnUrl, setRequestCameraEnUrl] = useState<string>();\n const [requestCameraZhUrl, setRequestCameraZhUrl] = useState<string>();\n const [resetCameraEnUrl, setResetCameraEnUrl] = useState<string>();\n const [resetCameraZhUrl, setResetCameraZhUrl] = useState<string>();\n const [isRecording, setIsRecording] = useState(false);\n const [mediaStream, setMediaStream] = useState<MediaStream>();\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder | null>(null);\n const stopSoundListeningRef = useRef<(() => void) | undefined>(undefined);\n const closePcmRef = useRef<(() => void) | undefined>(undefined);\n const includeAudio = !!media.audio;\n const exactAudioDeviceIdRef = useRef<string | undefined>(undefined);\n const rafRef = useRef<number>(0);\n const isSpeakingRef = useRef(false);\n const silenceVolumeThresholdRef = useRefValue(soundDetectionThreshold);\n const silenceDetectDurationRef = useRefValue(soundDetectionTimeout);\n const soundDetectStart = useRef<number>(0);\n const pcmSampleRateRef = useRef<number>(0);\n const onPcmStreamChunkRef = useRefValue(onPcmStreamChunk);\n const pcmStreamSlicerRef = useRef(\n new StreamTimeSlicerClass({\n timeSlice: streamSliceMs,\n onSlice: (channels) => {\n onPcmStreamChunkRef.current?.(channels, pcmSampleRateRef.current);\n },\n })\n );\n const deviceType = useMemo(\n () => (media.video ? t('hooks.useUserMedia.camera') : t('hooks.useUserMedia.microphone')),\n [media, t]\n );\n const featureName = useMemo(\n () => (media.video ? t('hooks.featureName.camera') : t('hooks.featureName.microphone')),\n [media, t]\n );\n\n const showDeniedPopup = () => {\n const resetMicrophoneUrl = lang === 'zh-CN' ? resetMicrophoneZhUrl : resetMicrophoneEnUrl;\n const resetCameraUrl = lang === 'zh-CN' ? resetCameraZhUrl : resetCameraEnUrl;\n modal.error({\n title: t('hooks.useUserMedia.devicePermission', { deviceType }),\n width: 500,\n content: (\n <div>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text strong type=\"danger\">\n {t('hooks.useUserMedia.deniedPermission', { deviceType, featureName })}\n </Typography.Text>\n </Typography.Paragraph>\n <Typography.Paragraph>{t('hooks.useUserMedia.reopenPermissionGuide', { deviceType })}</Typography.Paragraph>\n <img\n src={media.video ? resetCameraUrl : resetMicrophoneUrl}\n alt=\"microphone-permission\"\n style={{ width: 380 }}\n />\n </div>\n ),\n });\n };\n const recordStream = async () => {\n let stream: MediaStream;\n try {\n const options = media;\n if (media.audio) {\n if (exactAudioDeviceIdRef.current) {\n if (media.audio === true) {\n options.audio = { deviceId: { exact: exactAudioDeviceIdRef.current } };\n } else {\n options.audio = { deviceId: { exact: exactAudioDeviceIdRef.current }, ...media.audio };\n }\n }\n }\n stream = await navigator.mediaDevices.getUserMedia(options);\n setMediaStream(stream);\n onStartRecording?.(stream);\n\n const recorder = new MediaRecorder(stream);\n recorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n onStreamChunk?.(event.data);\n }\n };\n if (streamSliceMs) {\n recorder.start(streamSliceMs);\n } else {\n recorder.start();\n }\n setMediaRecorder(recorder);\n setIsRecording(true);\n\n // Capture PCM data if enabled\n if (options.audio && onPcmStreamChunkRef.current) {\n try {\n const ctx = new AudioContext(pcmAudioOptions?.audioContext);\n pcmSampleRateRef.current = ctx.sampleRate;\n // Safari might need resume\n if (ctx.state === 'suspended') {\n await ctx.resume();\n }\n const sourceNode = ctx.createMediaStreamSource(stream);\n let node: AudioWorkletNode | undefined;\n\n closePcmRef.current = () => {\n node?.port.close();\n node?.disconnect();\n sourceNode.disconnect();\n ctx.close().catch(() => {\n // Ignore errors\n });\n };\n\n const setupWorklet = async () => {\n try {\n // Load the worklet module\n await ctx.audioWorklet.addModule(generatePcmCaptureProcessorModule());\n node = new AudioWorkletNode(ctx, 'pcm-capture', pcmAudioOptions?.workletOptions);\n node.port.onmessage = (e: MessageEvent) => {\n if (e.data?.type === 'pcm') {\n const channels = e.data.channels as Float32Array[];\n pcmStreamSlicerRef.current.push(channels);\n }\n };\n sourceNode.connect(node);\n } catch (err) {\n fallbackScriptProcessor({ ctx, sourceNode, streamSlicer: pcmStreamSlicerRef.current });\n }\n };\n\n if ('audioWorklet' in ctx) {\n setupWorklet();\n } else {\n fallbackScriptProcessor({ ctx, sourceNode, streamSlicer: pcmStreamSlicerRef.current });\n }\n } catch (e) {\n console.error('setup pcm worklet failed', e);\n }\n }\n return recorder;\n } catch (error) {\n console.error(error);\n if (error instanceof Error && error.name === 'NotAllowedError') {\n showDeniedPopup();\n notification.error({ message: t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }) });\n throw new Error(t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }));\n }\n notification.error({ message: t('hooks.useUserMedia.notSupport') });\n throw new Error(t('hooks.useUserMedia.notSupport'));\n }\n };\n\n const startRecording = useRefFunction(async () => {\n if (disabled) {\n throw new Error(t('hooks.useUserMedia.disabledWarning'));\n }\n if (isRecording) {\n throw new Error(t('hooks.useUserMedia.isRecordingNow'));\n }\n if (!navigator.mediaDevices?.getUserMedia || !navigator.permissions?.query) {\n notification.error({\n message: t('hooks.useUserMedia.notSupport'),\n });\n throw new Error(t('hooks.useUserMedia.notSupport'));\n }\n try {\n const result = await window.navigator.permissions.query({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n name: media.video ? ('camera' as any) : ('microphone' as any),\n });\n if (result.state === 'denied') {\n showDeniedPopup();\n notification.error({ message: t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }) });\n throw new Error(t('hooks.useUserMedia.deniedPermission', { deviceType, featureName }));\n } else {\n if (result.state === 'prompt') {\n const requestMicrophoneUrl = lang === 'zh-CN' ? requestMicrophoneZhUrl : requestMicrophoneEnUrl;\n const requestCameraUrl = lang === 'zh-CN' ? requestCameraZhUrl : requestCameraEnUrl;\n return new Promise<MediaRecorder>((resolve, reject) => {\n modal.warning({\n title: t('hooks.useUserMedia.devicePermission', { deviceType }),\n content: (\n <div>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text strong>{t('hooks.useUserMedia.requestTip1', { deviceType })}</Typography.Text>\n </Typography.Paragraph>\n <Typography.Paragraph>{t('hooks.useUserMedia.requestTip2', { featureName })}</Typography.Paragraph>\n <div>\n <img\n src={media.video ? requestCameraUrl : requestMicrophoneUrl}\n alt=\"microphone-permission\"\n style={{ width: 380 }}\n />\n </div>\n </div>\n ),\n onOk: () => {\n try {\n recordStream()\n .then((recorder) => {\n resolve(recorder);\n })\n .catch((error) => {\n reject(error);\n });\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n width: 500,\n });\n });\n } else {\n return await recordStream();\n }\n }\n } catch (error) {\n console.error(error);\n throw error;\n }\n });\n\n const stopRecording = useRefFunction(() => {\n mediaRecorder?.stop();\n mediaStream?.getTracks().forEach((t) => t.stop());\n setMediaStream(undefined);\n setIsRecording(false);\n isSpeakingRef.current = false;\n cancelAnimationFrame(rafRef.current);\n stopSoundListeningRef.current?.();\n closePcmRef.current?.();\n onStopRecording?.();\n });\n\n // Wait for sound. If keep silent for a while, show a modal to let user reselect audio device\n const waitForSound = useRefFunction((mediaStream: MediaStream) => {\n const ctx = new AudioContext();\n const source = ctx.createMediaStreamSource(mediaStream);\n const analyser = ctx.createAnalyser();\n analyser.fftSize = 2048;\n source.connect(analyser);\n soundDetectStart.current = Date.now();\n const data = new Uint8Array(analyser.fftSize);\n const cancelDetect = () => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = 0;\n stopSoundListeningRef.current?.();\n };\n const loop = () => {\n analyser.getByteTimeDomainData(data);\n // Calculate RMS\n let sum = 0;\n for (const value of data) {\n const v = (value - 128) / 128;\n sum += v * v;\n }\n const rms = Math.sqrt(sum / data.length); // 0~1\n if (rms > silenceVolumeThresholdRef.current) {\n if (!isSpeakingRef.current) {\n isSpeakingRef.current = true;\n cancelDetect();\n return;\n }\n } else {\n if (Date.now() > soundDetectStart.current + silenceDetectDurationRef.current) {\n navigator.mediaDevices.enumerateDevices().then((devices) => {\n const audioInputs = devices.filter((d) => d.kind === 'audioinput');\n modalRef.current.confirm({\n title: t('hooks.useUserMedia.soundDetectTitle'),\n content: (\n <EasyConfigProvider {...contextRef.current}>\n <SaveAudioDeviceForm\n devices={audioInputs}\n mediaStream={mediaStream}\n onDeviceChange={(deviceId) => (exactAudioDeviceIdRef.current = deviceId)}\n />\n </EasyConfigProvider>\n ),\n width: 500,\n onOk: () => {\n if (exactAudioDeviceIdRef.current) {\n stopRecording();\n setTimeout(() => {\n startRecording();\n });\n }\n },\n onCancel: () => {\n cancelDetect();\n },\n });\n });\n\n cancelDetect();\n return;\n }\n }\n rafRef.current = requestAnimationFrame(loop);\n };\n loop();\n\n stopSoundListeningRef.current = () => {\n analyser.disconnect();\n source.disconnect();\n ctx.close().catch(() => {\n // Ignore errors\n });\n stopSoundListeningRef.current = undefined;\n };\n });\n\n // Component destroy\n useEffect(() => {\n return stopRecording;\n }, []);\n\n // Stop recording when disabled has been changed\n useEffect(() => {\n if (disabled && isRecording) {\n stopRecording();\n }\n }, [disabled, isRecording]);\n\n // Update PCM stream slicer time slice when input sample rate changes\n useEffect(() => {\n if (streamSliceMs && pcmStreamSlicerRef.current.timeSlice !== streamSliceMs) {\n pcmStreamSlicerRef.current.timeSlice = streamSliceMs;\n }\n }, [streamSliceMs]);\n\n // Detect sound activity (only for audio or media with audio)\n useEffect(() => {\n if (includeAudio && mediaStream && !isSpeakingRef.current) {\n try {\n waitForSound(mediaStream);\n } catch (e) {\n console.warn('Audio volume detecting failed:', e);\n }\n }\n return () => {\n stopSoundListeningRef.current?.();\n };\n }, [includeAudio, mediaStream, t]);\n\n useEffect(() => {\n import('../assets/request-microphone-en.js').then((module) => {\n setRequestMicrophoneEnUrl(module.default);\n });\n import('../assets/request-microphone-zh.js').then((module) => {\n setRequestMicrophoneZhUrl(module.default);\n });\n import('../assets/reset-microphone-en.js').then((module) => {\n setResetMicrophoneEnUrl(module.default);\n });\n import('../assets/reset-microphone-zh.js').then((module) => {\n setResetMicrophoneZhUrl(module.default);\n });\n import('../assets/request-camera-en.js').then((module) => {\n setRequestCameraEnUrl(module.default);\n });\n import('../assets/request-camera-zh.js').then((module) => {\n setRequestCameraZhUrl(module.default);\n });\n import('../assets/reset-camera-en.js').then((module) => {\n setResetCameraEnUrl(module.default);\n });\n import('../assets/reset-camera-zh.js').then((module) => {\n setResetCameraZhUrl(module.default);\n });\n }, []);\n\n return {\n isRecording,\n startRecording,\n stopRecording,\n };\n};\n\nexport interface UseUserMediaResult {\n /**\n * - **EN** Whether the media stream is currently being recorded\n * - **CN** 是否正在录制媒体流\n */\n isRecording: boolean;\n /**\n * - **EN** Start recording the media stream\n * - **CN** 开始录制媒体流\n */\n startRecording: () => Promise<MediaRecorder>;\n /**\n * - **EN** Stop recording the media stream\n * - **CN** 停止录制媒体流\n */\n stopRecording: () => void;\n /**\n * - **EN** Get the media stream being recorded, returns the stream if recording, otherwise returns\n * `undefined`\n * - **CN** 获取正在录制的媒体流,如果正在录制则返回该流,否则返回 `undefined`\n */\n mediaStream?: MediaStream;\n}\n\nfunction SaveAudioDeviceForm(props: {\n devices: MediaDeviceInfo[];\n mediaStream: MediaStream;\n onDeviceChange: (deviceId: string) => void;\n}) {\n const { devices, mediaStream, onDeviceChange } = props;\n const [form] = Form.useForm();\n const t = useT();\n const { lang } = useContext(ReactEasyContext);\n const [saveAudioDeviceEnUrl1, setSaveAudioDeviceEnUrl1] = useState<string>();\n const [saveAudioDeviceEnUrl2, setSaveAudioDeviceEnUrl2] = useState<string>();\n const [saveAudioDeviceZhUrl1, setSaveAudioDeviceZhUrl1] = useState<string>();\n const [saveAudioDeviceZhUrl2, setSaveAudioDeviceZhUrl2] = useState<string>();\n const [saveDefaultAudioDevicePermanently, setSaveDefaultAudioDevicePermanently] = useState(false);\n const audioInputs = useMemo(() => devices.filter((d) => d.kind === 'audioinput'), [devices]);\n const [selectedDeviceId, setSelectedDeviceId] = useState<string | undefined>(\n () => mediaStream.getAudioTracks()[0]?.getSettings()?.deviceId ?? audioInputs[0]?.deviceId\n );\n\n const openDataImageInNewTab = useRefFunction((dataUrl: string | undefined) => {\n if (!dataUrl) return;\n const [meta, b64] = dataUrl.split(',');\n const mime = meta.match(/data:(.*);base64/)?.[1] || 'image/png';\n const binary = atob(b64);\n const len = binary.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) bytes[i] = binary.charCodeAt(i);\n const blob = new Blob([bytes], { type: mime });\n const url = URL.createObjectURL(blob);\n window.open(url);\n });\n\n useEffect(() => {\n import('../assets/save-default-audio1-en.js').then((module) => {\n setSaveAudioDeviceEnUrl1(module.default);\n });\n import('../assets/save-default-audio2-en.js').then((module) => {\n setSaveAudioDeviceEnUrl2(module.default);\n });\n import('../assets/save-default-audio1-zh.js').then((module) => {\n setSaveAudioDeviceZhUrl1(module.default);\n });\n import('../assets/save-default-audio2-zh.js').then((module) => {\n setSaveAudioDeviceZhUrl2(module.default);\n });\n }, []);\n\n return (\n <Form layout=\"vertical\" form={form}>\n <Typography.Paragraph></Typography.Paragraph>\n <Typography.Paragraph>\n <Typography.Text>{t('hooks.useUserMedia.soundDetectDescription')}</Typography.Text>\n </Typography.Paragraph>\n <Form.Item label={t('hooks.useUserMedia.chooseMicrophoneDevice')}>\n <Select\n options={audioInputs.map((input) => ({\n label: input.label,\n value: input.deviceId,\n }))}\n defaultValue={selectedDeviceId}\n onChange={(id) => {\n setSelectedDeviceId(id);\n onDeviceChange(id);\n }}\n />\n </Form.Item>\n <Form.Item style={{ marginBottom: 0 }}>\n <Checkbox onChange={(e) => setSaveDefaultAudioDevicePermanently(e.target.checked)}>\n {t('hooks.useUserMedia.rememberDefaultAudioDevice')}\n </Checkbox>\n </Form.Item>\n {saveDefaultAudioDevicePermanently && (\n <div>\n <Typography.Paragraph>\n <Typography.Text>{t('hooks.useUserMedia.rememberDefaultAudioDeviceTip')}</Typography.Text>\n </Typography.Paragraph>\n <Flex gap={8} align=\"flex-start\">\n <div style={{ flex: 1, minWidth: 0 }}>\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n openDataImageInNewTab(lang === 'zh-CN' ? saveAudioDeviceZhUrl1 : saveAudioDeviceEnUrl1);\n }}\n >\n <img\n src={lang === 'zh-CN' ? saveAudioDeviceZhUrl1 : saveAudioDeviceEnUrl1}\n alt=\"the first step to save default audio device\"\n style={{ width: '100%', height: 'auto' }}\n />\n </a>\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n openDataImageInNewTab(lang === 'zh-CN' ? saveAudioDeviceZhUrl2 : saveAudioDeviceEnUrl2);\n }}\n >\n <img\n src={lang === 'zh-CN' ? saveAudioDeviceZhUrl2 : saveAudioDeviceEnUrl2}\n alt=\"the second step to save default audio device\"\n style={{ width: '100%', height: 'auto' }}\n />\n </a>\n </div>\n </Flex>\n </div>\n )}\n </Form>\n );\n}\n\nfunction generatePcmCaptureProcessorModule() {\n const workletCode = `\nclass PcmCaptureProcessor extends AudioWorkletProcessor {\n process(inputs, outputs, parameters) {\n const channelsIn = inputs[0];\n if (channelsIn && channelsIn[0]) {\n const channels = channelsIn.map((ch) => {\n const copy = new Float32Array(ch.length);\n copy.set(ch);\n return copy;\n });\n this.port.postMessage({ type: 'pcm', channels }, channels.map(ch => ch.buffer));\n }\n return true;\n }\n}\nregisterProcessor('pcm-capture', PcmCaptureProcessor);\n`;\n\n // Create a Blob from the worklet code and return its URL\n const blob = new Blob([workletCode], { type: 'application/javascript' });\n const blobUrl = URL.createObjectURL(blob);\n return blobUrl;\n}\n\nfunction fallbackScriptProcessor(options: {\n ctx: AudioContext;\n sourceNode: MediaStreamAudioSourceNode;\n streamSlicer: StreamTimeSlicerClass;\n}) {\n const { ctx, sourceNode, streamSlicer } = options;\n const bufferSize = 128;\n const processor = ctx.createScriptProcessor(bufferSize, 1, 1);\n processor.onaudioprocess = (ev) => {\n const channels = [];\n for (let i = 0; i < ev.inputBuffer.numberOfChannels; i++) {\n const input = ev.inputBuffer.getChannelData(i);\n const copy = new Float32Array(input.length);\n copy.set(input);\n channels.push(copy);\n }\n streamSlicer.push(channels);\n };\n sourceNode.connect(processor);\n // 可不输出:processor.connect(ctx!.destination);不连接 destination 在部分浏览器会被自动 GC,可连到 destination 或 gain(0)\n const gain = ctx.createGain();\n gain.gain.value = 0;\n processor.connect(gain).connect(ctx.destination);\n}\n\nexport default useUserMedia;\n"],"mappings":"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"}
@@ -45,6 +45,8 @@ export declare const resources: {
45
45
  readonly 'hooks.useUserMedia.chooseMicrophoneDevice': "Please reselect the audio device";
46
46
  readonly 'hooks.useUserMedia.rememberDefaultAudioDevice': "Remember default device?";
47
47
  readonly 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': "Please follow these steps to save the default audio device for automatic selection next time.";
48
+ readonly 'hooks.useStompSocket.connectError': "Connection failed, please try again later";
49
+ readonly 'hooks.useStompSocket.serverDisconnected': "Server disconnected";
48
50
  };
49
51
  };
50
52
  readonly 'en-US': {
@@ -90,6 +92,8 @@ export declare const resources: {
90
92
  readonly 'hooks.useUserMedia.chooseMicrophoneDevice': "Please reselect the audio device";
91
93
  readonly 'hooks.useUserMedia.rememberDefaultAudioDevice': "Remember default device?";
92
94
  readonly 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': "Please follow these steps to save the default audio device for automatic selection next time.";
95
+ readonly 'hooks.useStompSocket.connectError': "Connection failed, please try again later";
96
+ readonly 'hooks.useStompSocket.serverDisconnected': "Server disconnected";
93
97
  };
94
98
  };
95
99
  readonly 'zh-CN': {
@@ -135,6 +139,8 @@ export declare const resources: {
135
139
  readonly 'hooks.useUserMedia.chooseMicrophoneDevice': "请重新选择音频设备";
136
140
  readonly 'hooks.useUserMedia.rememberDefaultAudioDevice': "记住默认设备?";
137
141
  readonly 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': "请按照以下步骤保存默认音频设备,以便下次使用时自动选择。";
142
+ readonly 'hooks.useStompSocket.connectError': "连接失败,请稍后重试";
143
+ readonly 'hooks.useStompSocket.serverDisconnected': "服务端已断开连接";
138
144
  };
139
145
  };
140
146
  };
@@ -40,5 +40,7 @@ declare const enUS: {
40
40
  readonly 'hooks.useUserMedia.chooseMicrophoneDevice': "Please reselect the audio device";
41
41
  readonly 'hooks.useUserMedia.rememberDefaultAudioDevice': "Remember default device?";
42
42
  readonly 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': "Please follow these steps to save the default audio device for automatic selection next time.";
43
+ readonly 'hooks.useStompSocket.connectError': "Connection failed, please try again later";
44
+ readonly 'hooks.useStompSocket.serverDisconnected': "Server disconnected";
43
45
  };
44
46
  export default enUS;
@@ -39,7 +39,9 @@ var enUS = {
39
39
  'hooks.useUserMedia.soundDetectDescription': 'No sound seems to be detected. Please check if the microphone is working properly or if the correct audio input device is selected.',
40
40
  'hooks.useUserMedia.chooseMicrophoneDevice': 'Please reselect the audio device',
41
41
  'hooks.useUserMedia.rememberDefaultAudioDevice': 'Remember default device?',
42
- 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': 'Please follow these steps to save the default audio device for automatic selection next time.'
42
+ 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': 'Please follow these steps to save the default audio device for automatic selection next time.',
43
+ 'hooks.useStompSocket.connectError': 'Connection failed, please try again later',
44
+ 'hooks.useStompSocket.serverDisconnected': 'Server disconnected'
43
45
  };
44
46
  export default enUS;
45
47
  //# sourceMappingURL=en-US.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["enUS"],"sources":["../../../src/locales/langs/en-US.ts"],"sourcesContent":["const enUS = {\n 'components.EditableText.requiredMsg': 'Please enter text content',\n 'components.EditableText.placeholder': 'Please input text content, press Enter or click the OK button',\n 'components.EditableText.edit': 'Edit',\n 'components.EditableText.save': 'Save',\n 'components.EditableText.cancel': 'Cancel',\n 'validation.rule.number.message': 'Please enter a number',\n 'validation.rule.floatNumber.message': 'Please enter a number',\n 'validation.rule.email.message': 'Please enter the correct email address',\n 'validation.rule.ip.message': 'Please enter the correct ip address',\n 'validation.rule.chineseMobile.message': 'Please enter the correct mobile number',\n 'validation.rule.password.message': '8-16 digit password, at least two of numbers, letters, and symbols',\n 'validation.rule.buildRule.includeMandatory': 'At least one field in the include option is true',\n 'validation.rule.buildRule.messageFormat': 'Allow {{content}}',\n 'validation.rule.buildRule.startsWithFormat': `, start with {{prefix}}`,\n 'validation.rule.buildRule.minLength': `, at least {{min}} characters`,\n 'validation.rule.buildRule.maxLength': `, up to {{max}} characters`,\n 'validation.rule.buildRule.rangeLength': `, {{min}}~{{max}} characters`,\n 'validation.rule.buildRule.token.separator': ', ',\n 'validation.rule.buildRule.token.chinese': 'Chinese characters',\n 'validation.rule.buildRule.token.chinesePunctuation': 'Chinese punctuation',\n 'validation.rule.buildRule.token.letter': 'letter',\n 'validation.rule.buildRule.token.lowerLetter': 'lowercase letter',\n 'validation.rule.buildRule.token.upperLetter': 'uppercase letter',\n 'validation.rule.buildRule.token.number': 'number',\n 'hooks.useUserMedia.microphone': 'Microphone',\n 'hooks.useUserMedia.camera': 'Camera',\n 'hooks.featureName.microphone': 'Speech',\n 'hooks.featureName.camera': 'Video',\n 'hooks.useUserMedia.disabledWarning': 'User media is disabled',\n 'hooks.useUserMedia.isRecordingNow': 'User media is currently recording and cannot be operated on',\n 'hooks.useUserMedia.devicePermission': '{{deviceType}} Permission',\n 'hooks.useUserMedia.requestTip1':\n 'The browser is requesting {{deviceType}} permission. Please click the \"Allow\" button in the pop-up window that appears later.',\n 'hooks.useUserMedia.requestTip2':\n 'Please do not click the \"Deny\" button, otherwise you will not be able to use the {{featureName}} related feature.',\n 'hooks.useUserMedia.deniedPermission':\n 'You have denied the {{deviceType}} permission, which will prevent you from using the {{featureName}} related feature!',\n 'hooks.useUserMedia.reopenPermissionGuide':\n 'Please click the site settings icon in the address bar, and then follow these steps to reopen {{deviceType}} permission.',\n 'hooks.useUserMedia.notSupport': 'Current browser does not support audio recording',\n 'hooks.useUserMedia.soundDetectTitle': 'Sound Issue Detected',\n 'hooks.useUserMedia.soundDetectDescription':\n 'No sound seems to be detected. Please check if the microphone is working properly or if the correct audio input device is selected.',\n 'hooks.useUserMedia.chooseMicrophoneDevice': 'Please reselect the audio device',\n 'hooks.useUserMedia.rememberDefaultAudioDevice': 'Remember default device?',\n 'hooks.useUserMedia.rememberDefaultAudioDeviceTip':\n 'Please follow these steps to save the default audio device for automatic selection next time.',\n} as const;\nexport default enUS;\n"],"mappings":"AAAA,IAAMA,IAAI,GAAG;EACX,qCAAqC,EAAE,2BAA2B;EAClE,qCAAqC,EAAE,+DAA+D;EACtG,8BAA8B,EAAE,MAAM;EACtC,8BAA8B,EAAE,MAAM;EACtC,gCAAgC,EAAE,QAAQ;EAC1C,gCAAgC,EAAE,uBAAuB;EACzD,qCAAqC,EAAE,uBAAuB;EAC9D,+BAA+B,EAAE,wCAAwC;EACzE,4BAA4B,EAAE,qCAAqC;EACnE,uCAAuC,EAAE,wCAAwC;EACjF,kCAAkC,EAAE,oEAAoE;EACxG,4CAA4C,EAAE,kDAAkD;EAChG,yCAAyC,EAAE,mBAAmB;EAC9D,4CAA4C,2BAA2B;EACvE,qCAAqC,iCAAiC;EACtE,qCAAqC,8BAA8B;EACnE,uCAAuC,gCAAgC;EACvE,2CAA2C,EAAE,IAAI;EACjD,yCAAyC,EAAE,oBAAoB;EAC/D,oDAAoD,EAAE,qBAAqB;EAC3E,wCAAwC,EAAE,QAAQ;EAClD,6CAA6C,EAAE,kBAAkB;EACjE,6CAA6C,EAAE,kBAAkB;EACjE,wCAAwC,EAAE,QAAQ;EAClD,+BAA+B,EAAE,YAAY;EAC7C,2BAA2B,EAAE,QAAQ;EACrC,8BAA8B,EAAE,QAAQ;EACxC,0BAA0B,EAAE,OAAO;EACnC,oCAAoC,EAAE,wBAAwB;EAC9D,mCAAmC,EAAE,6DAA6D;EAClG,qCAAqC,EAAE,2BAA2B;EAClE,gCAAgC,EAC9B,+HAA+H;EACjI,gCAAgC,EAC9B,mHAAmH;EACrH,qCAAqC,EACnC,uHAAuH;EACzH,0CAA0C,EACxC,0HAA0H;EAC5H,+BAA+B,EAAE,kDAAkD;EACnF,qCAAqC,EAAE,sBAAsB;EAC7D,2CAA2C,EACzC,qIAAqI;EACvI,2CAA2C,EAAE,kCAAkC;EAC/E,+CAA+C,EAAE,0BAA0B;EAC3E,kDAAkD,EAChD;AACJ,CAAU;AACV,eAAeA,IAAI"}
1
+ {"version":3,"names":["enUS"],"sources":["../../../src/locales/langs/en-US.ts"],"sourcesContent":["const enUS = {\n 'components.EditableText.requiredMsg': 'Please enter text content',\n 'components.EditableText.placeholder': 'Please input text content, press Enter or click the OK button',\n 'components.EditableText.edit': 'Edit',\n 'components.EditableText.save': 'Save',\n 'components.EditableText.cancel': 'Cancel',\n 'validation.rule.number.message': 'Please enter a number',\n 'validation.rule.floatNumber.message': 'Please enter a number',\n 'validation.rule.email.message': 'Please enter the correct email address',\n 'validation.rule.ip.message': 'Please enter the correct ip address',\n 'validation.rule.chineseMobile.message': 'Please enter the correct mobile number',\n 'validation.rule.password.message': '8-16 digit password, at least two of numbers, letters, and symbols',\n 'validation.rule.buildRule.includeMandatory': 'At least one field in the include option is true',\n 'validation.rule.buildRule.messageFormat': 'Allow {{content}}',\n 'validation.rule.buildRule.startsWithFormat': `, start with {{prefix}}`,\n 'validation.rule.buildRule.minLength': `, at least {{min}} characters`,\n 'validation.rule.buildRule.maxLength': `, up to {{max}} characters`,\n 'validation.rule.buildRule.rangeLength': `, {{min}}~{{max}} characters`,\n 'validation.rule.buildRule.token.separator': ', ',\n 'validation.rule.buildRule.token.chinese': 'Chinese characters',\n 'validation.rule.buildRule.token.chinesePunctuation': 'Chinese punctuation',\n 'validation.rule.buildRule.token.letter': 'letter',\n 'validation.rule.buildRule.token.lowerLetter': 'lowercase letter',\n 'validation.rule.buildRule.token.upperLetter': 'uppercase letter',\n 'validation.rule.buildRule.token.number': 'number',\n 'hooks.useUserMedia.microphone': 'Microphone',\n 'hooks.useUserMedia.camera': 'Camera',\n 'hooks.featureName.microphone': 'Speech',\n 'hooks.featureName.camera': 'Video',\n 'hooks.useUserMedia.disabledWarning': 'User media is disabled',\n 'hooks.useUserMedia.isRecordingNow': 'User media is currently recording and cannot be operated on',\n 'hooks.useUserMedia.devicePermission': '{{deviceType}} Permission',\n 'hooks.useUserMedia.requestTip1':\n 'The browser is requesting {{deviceType}} permission. Please click the \"Allow\" button in the pop-up window that appears later.',\n 'hooks.useUserMedia.requestTip2':\n 'Please do not click the \"Deny\" button, otherwise you will not be able to use the {{featureName}} related feature.',\n 'hooks.useUserMedia.deniedPermission':\n 'You have denied the {{deviceType}} permission, which will prevent you from using the {{featureName}} related feature!',\n 'hooks.useUserMedia.reopenPermissionGuide':\n 'Please click the site settings icon in the address bar, and then follow these steps to reopen {{deviceType}} permission.',\n 'hooks.useUserMedia.notSupport': 'Current browser does not support audio recording',\n 'hooks.useUserMedia.soundDetectTitle': 'Sound Issue Detected',\n 'hooks.useUserMedia.soundDetectDescription':\n 'No sound seems to be detected. Please check if the microphone is working properly or if the correct audio input device is selected.',\n 'hooks.useUserMedia.chooseMicrophoneDevice': 'Please reselect the audio device',\n 'hooks.useUserMedia.rememberDefaultAudioDevice': 'Remember default device?',\n 'hooks.useUserMedia.rememberDefaultAudioDeviceTip':\n 'Please follow these steps to save the default audio device for automatic selection next time.',\n 'hooks.useStompSocket.connectError': 'Connection failed, please try again later',\n 'hooks.useStompSocket.serverDisconnected': 'Server disconnected',\n} as const;\nexport default enUS;\n"],"mappings":"AAAA,IAAMA,IAAI,GAAG;EACX,qCAAqC,EAAE,2BAA2B;EAClE,qCAAqC,EAAE,+DAA+D;EACtG,8BAA8B,EAAE,MAAM;EACtC,8BAA8B,EAAE,MAAM;EACtC,gCAAgC,EAAE,QAAQ;EAC1C,gCAAgC,EAAE,uBAAuB;EACzD,qCAAqC,EAAE,uBAAuB;EAC9D,+BAA+B,EAAE,wCAAwC;EACzE,4BAA4B,EAAE,qCAAqC;EACnE,uCAAuC,EAAE,wCAAwC;EACjF,kCAAkC,EAAE,oEAAoE;EACxG,4CAA4C,EAAE,kDAAkD;EAChG,yCAAyC,EAAE,mBAAmB;EAC9D,4CAA4C,2BAA2B;EACvE,qCAAqC,iCAAiC;EACtE,qCAAqC,8BAA8B;EACnE,uCAAuC,gCAAgC;EACvE,2CAA2C,EAAE,IAAI;EACjD,yCAAyC,EAAE,oBAAoB;EAC/D,oDAAoD,EAAE,qBAAqB;EAC3E,wCAAwC,EAAE,QAAQ;EAClD,6CAA6C,EAAE,kBAAkB;EACjE,6CAA6C,EAAE,kBAAkB;EACjE,wCAAwC,EAAE,QAAQ;EAClD,+BAA+B,EAAE,YAAY;EAC7C,2BAA2B,EAAE,QAAQ;EACrC,8BAA8B,EAAE,QAAQ;EACxC,0BAA0B,EAAE,OAAO;EACnC,oCAAoC,EAAE,wBAAwB;EAC9D,mCAAmC,EAAE,6DAA6D;EAClG,qCAAqC,EAAE,2BAA2B;EAClE,gCAAgC,EAC9B,+HAA+H;EACjI,gCAAgC,EAC9B,mHAAmH;EACrH,qCAAqC,EACnC,uHAAuH;EACzH,0CAA0C,EACxC,0HAA0H;EAC5H,+BAA+B,EAAE,kDAAkD;EACnF,qCAAqC,EAAE,sBAAsB;EAC7D,2CAA2C,EACzC,qIAAqI;EACvI,2CAA2C,EAAE,kCAAkC;EAC/E,+CAA+C,EAAE,0BAA0B;EAC3E,kDAAkD,EAChD,+FAA+F;EACjG,mCAAmC,EAAE,2CAA2C;EAChF,yCAAyC,EAAE;AAC7C,CAAU;AACV,eAAeA,IAAI"}
@@ -40,5 +40,7 @@ declare const zhCN: {
40
40
  readonly 'hooks.useUserMedia.chooseMicrophoneDevice': "请重新选择音频设备";
41
41
  readonly 'hooks.useUserMedia.rememberDefaultAudioDevice': "记住默认设备?";
42
42
  readonly 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': "请按照以下步骤保存默认音频设备,以便下次使用时自动选择。";
43
+ readonly 'hooks.useStompSocket.connectError': "连接失败,请稍后重试";
44
+ readonly 'hooks.useStompSocket.serverDisconnected': "服务端已断开连接";
43
45
  };
44
46
  export default zhCN;
@@ -39,7 +39,9 @@ var zhCN = {
39
39
  'hooks.useUserMedia.soundDetectDescription': '似乎没有检测到声音,请检查麦克风是否正常工作,或者可能没有选择正确的音频输入设备。',
40
40
  'hooks.useUserMedia.chooseMicrophoneDevice': '请重新选择音频设备',
41
41
  'hooks.useUserMedia.rememberDefaultAudioDevice': '记住默认设备?',
42
- 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': '请按照以下步骤保存默认音频设备,以便下次使用时自动选择。'
42
+ 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': '请按照以下步骤保存默认音频设备,以便下次使用时自动选择。',
43
+ 'hooks.useStompSocket.connectError': '连接失败,请稍后重试',
44
+ 'hooks.useStompSocket.serverDisconnected': '服务端已断开连接'
43
45
  };
44
46
  export default zhCN;
45
47
  //# sourceMappingURL=zh-CN.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["zhCN"],"sources":["../../../src/locales/langs/zh-CN.ts"],"sourcesContent":["const zhCN = {\n 'components.EditableText.requiredMsg': '请输入文本内容',\n 'components.EditableText.placeholder': '输入文本内容,按回车或点击确定按钮',\n 'components.EditableText.edit': '编辑',\n 'components.EditableText.save': '保存',\n 'components.EditableText.cancel': '取消',\n 'validation.rule.number.message': '请输入数字',\n 'validation.rule.floatNumber.message': '请输入数字',\n 'validation.rule.email.message': '请输入正确的邮箱地址',\n 'validation.rule.ip.message': '请输入正确的ip地址',\n 'validation.rule.chineseMobile.message': '请输入正确的手机号',\n 'validation.rule.password.message': '8-16位密码,数字、字母、符号至少包含两种',\n 'validation.rule.buildRule.includeMandatory': 'include选项中至少有一个字段为true',\n 'validation.rule.buildRule.messageFormat': '支持{{content}}',\n 'validation.rule.buildRule.startsWithFormat': `,以{{prefix}}开头`,\n 'validation.rule.buildRule.minLength': `,至少{{min}}字符`,\n 'validation.rule.buildRule.maxLength': `,{{max}}字符以内`,\n 'validation.rule.buildRule.rangeLength': `,{{min}}~{{max}}个字符`,\n 'validation.rule.buildRule.token.separator': '、',\n 'validation.rule.buildRule.token.chinese': '汉字',\n 'validation.rule.buildRule.token.chinesePunctuation': '中文标点',\n 'validation.rule.buildRule.token.letter': '字母',\n 'validation.rule.buildRule.token.lowerLetter': '小写字母',\n 'validation.rule.buildRule.token.upperLetter': '大写字母',\n 'validation.rule.buildRule.token.number': '数字',\n 'hooks.useUserMedia.microphone': '麦克风',\n 'hooks.useUserMedia.camera': '摄像头',\n 'hooks.featureName.microphone': '语音',\n 'hooks.featureName.camera': '视频',\n 'hooks.useUserMedia.disabledWarning': '用户媒体已禁用',\n 'hooks.useUserMedia.isRecordingNow': '用户媒体正在录制,不可操作',\n 'hooks.useUserMedia.devicePermission': '{{deviceType}}权限',\n 'hooks.useUserMedia.requestTip1':\n '浏览器正在申请{{deviceType}}权限,请在稍后弹出的弹窗中点击“访问该网站时允许”按钮。',\n 'hooks.useUserMedia.requestTip2': '请不要点击“不允许”按钮,否则将无法使用{{featureName}}相关功能。',\n 'hooks.useUserMedia.deniedPermission': '您已经拒绝了{{deviceType}}权限,将无法使用{{featureName}}相关功能!',\n 'hooks.useUserMedia.reopenPermissionGuide':\n '请点击地址栏的站点设置图标,然后按照以下步骤重新打开{{deviceType}}权限。',\n 'hooks.useUserMedia.notSupport': '当前浏览器不支持录制语音',\n 'hooks.useUserMedia.soundDetectTitle': '声音检测到问题',\n 'hooks.useUserMedia.soundDetectDescription':\n '似乎没有检测到声音,请检查麦克风是否正常工作,或者可能没有选择正确的音频输入设备。',\n 'hooks.useUserMedia.chooseMicrophoneDevice': '请重新选择音频设备',\n 'hooks.useUserMedia.rememberDefaultAudioDevice': '记住默认设备?',\n 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': '请按照以下步骤保存默认音频设备,以便下次使用时自动选择。',\n} as const;\nexport default zhCN;\n"],"mappings":"AAAA,IAAMA,IAAI,GAAG;EACX,qCAAqC,EAAE,SAAS;EAChD,qCAAqC,EAAE,mBAAmB;EAC1D,8BAA8B,EAAE,IAAI;EACpC,8BAA8B,EAAE,IAAI;EACpC,gCAAgC,EAAE,IAAI;EACtC,gCAAgC,EAAE,OAAO;EACzC,qCAAqC,EAAE,OAAO;EAC9C,+BAA+B,EAAE,YAAY;EAC7C,4BAA4B,EAAE,YAAY;EAC1C,uCAAuC,EAAE,WAAW;EACpD,kCAAkC,EAAE,wBAAwB;EAC5D,4CAA4C,EAAE,wBAAwB;EACtE,yCAAyC,EAAE,eAAe;EAC1D,4CAA4C,sCAAkB;EAC9D,qCAAqC,yCAAgB;EACrD,qCAAqC,yCAAgB;EACrD,uCAAuC,2CAAuB;EAC9D,2CAA2C,EAAE,GAAG;EAChD,yCAAyC,EAAE,IAAI;EAC/C,oDAAoD,EAAE,MAAM;EAC5D,wCAAwC,EAAE,IAAI;EAC9C,6CAA6C,EAAE,MAAM;EACrD,6CAA6C,EAAE,MAAM;EACrD,wCAAwC,EAAE,IAAI;EAC9C,+BAA+B,EAAE,KAAK;EACtC,2BAA2B,EAAE,KAAK;EAClC,8BAA8B,EAAE,IAAI;EACpC,0BAA0B,EAAE,IAAI;EAChC,oCAAoC,EAAE,SAAS;EAC/C,mCAAmC,EAAE,eAAe;EACpD,qCAAqC,EAAE,kBAAkB;EACzD,gCAAgC,EAC9B,mDAAmD;EACrD,gCAAgC,EAAE,0CAA0C;EAC5E,qCAAqC,EAAE,kDAAkD;EACzF,0CAA0C,EACxC,6CAA6C;EAC/C,+BAA+B,EAAE,cAAc;EAC/C,qCAAqC,EAAE,SAAS;EAChD,2CAA2C,EACzC,2CAA2C;EAC7C,2CAA2C,EAAE,WAAW;EACxD,+CAA+C,EAAE,SAAS;EAC1D,kDAAkD,EAAE;AACtD,CAAU;AACV,eAAeA,IAAI"}
1
+ {"version":3,"names":["zhCN"],"sources":["../../../src/locales/langs/zh-CN.ts"],"sourcesContent":["const zhCN = {\n 'components.EditableText.requiredMsg': '请输入文本内容',\n 'components.EditableText.placeholder': '输入文本内容,按回车或点击确定按钮',\n 'components.EditableText.edit': '编辑',\n 'components.EditableText.save': '保存',\n 'components.EditableText.cancel': '取消',\n 'validation.rule.number.message': '请输入数字',\n 'validation.rule.floatNumber.message': '请输入数字',\n 'validation.rule.email.message': '请输入正确的邮箱地址',\n 'validation.rule.ip.message': '请输入正确的ip地址',\n 'validation.rule.chineseMobile.message': '请输入正确的手机号',\n 'validation.rule.password.message': '8-16位密码,数字、字母、符号至少包含两种',\n 'validation.rule.buildRule.includeMandatory': 'include选项中至少有一个字段为true',\n 'validation.rule.buildRule.messageFormat': '支持{{content}}',\n 'validation.rule.buildRule.startsWithFormat': `,以{{prefix}}开头`,\n 'validation.rule.buildRule.minLength': `,至少{{min}}字符`,\n 'validation.rule.buildRule.maxLength': `,{{max}}字符以内`,\n 'validation.rule.buildRule.rangeLength': `,{{min}}~{{max}}个字符`,\n 'validation.rule.buildRule.token.separator': '、',\n 'validation.rule.buildRule.token.chinese': '汉字',\n 'validation.rule.buildRule.token.chinesePunctuation': '中文标点',\n 'validation.rule.buildRule.token.letter': '字母',\n 'validation.rule.buildRule.token.lowerLetter': '小写字母',\n 'validation.rule.buildRule.token.upperLetter': '大写字母',\n 'validation.rule.buildRule.token.number': '数字',\n 'hooks.useUserMedia.microphone': '麦克风',\n 'hooks.useUserMedia.camera': '摄像头',\n 'hooks.featureName.microphone': '语音',\n 'hooks.featureName.camera': '视频',\n 'hooks.useUserMedia.disabledWarning': '用户媒体已禁用',\n 'hooks.useUserMedia.isRecordingNow': '用户媒体正在录制,不可操作',\n 'hooks.useUserMedia.devicePermission': '{{deviceType}}权限',\n 'hooks.useUserMedia.requestTip1':\n '浏览器正在申请{{deviceType}}权限,请在稍后弹出的弹窗中点击“访问该网站时允许”按钮。',\n 'hooks.useUserMedia.requestTip2': '请不要点击“不允许”按钮,否则将无法使用{{featureName}}相关功能。',\n 'hooks.useUserMedia.deniedPermission': '您已经拒绝了{{deviceType}}权限,将无法使用{{featureName}}相关功能!',\n 'hooks.useUserMedia.reopenPermissionGuide':\n '请点击地址栏的站点设置图标,然后按照以下步骤重新打开{{deviceType}}权限。',\n 'hooks.useUserMedia.notSupport': '当前浏览器不支持录制语音',\n 'hooks.useUserMedia.soundDetectTitle': '声音检测到问题',\n 'hooks.useUserMedia.soundDetectDescription':\n '似乎没有检测到声音,请检查麦克风是否正常工作,或者可能没有选择正确的音频输入设备。',\n 'hooks.useUserMedia.chooseMicrophoneDevice': '请重新选择音频设备',\n 'hooks.useUserMedia.rememberDefaultAudioDevice': '记住默认设备?',\n 'hooks.useUserMedia.rememberDefaultAudioDeviceTip': '请按照以下步骤保存默认音频设备,以便下次使用时自动选择。',\n 'hooks.useStompSocket.connectError': '连接失败,请稍后重试',\n 'hooks.useStompSocket.serverDisconnected': '服务端已断开连接',\n} as const;\nexport default zhCN;\n"],"mappings":"AAAA,IAAMA,IAAI,GAAG;EACX,qCAAqC,EAAE,SAAS;EAChD,qCAAqC,EAAE,mBAAmB;EAC1D,8BAA8B,EAAE,IAAI;EACpC,8BAA8B,EAAE,IAAI;EACpC,gCAAgC,EAAE,IAAI;EACtC,gCAAgC,EAAE,OAAO;EACzC,qCAAqC,EAAE,OAAO;EAC9C,+BAA+B,EAAE,YAAY;EAC7C,4BAA4B,EAAE,YAAY;EAC1C,uCAAuC,EAAE,WAAW;EACpD,kCAAkC,EAAE,wBAAwB;EAC5D,4CAA4C,EAAE,wBAAwB;EACtE,yCAAyC,EAAE,eAAe;EAC1D,4CAA4C,sCAAkB;EAC9D,qCAAqC,yCAAgB;EACrD,qCAAqC,yCAAgB;EACrD,uCAAuC,2CAAuB;EAC9D,2CAA2C,EAAE,GAAG;EAChD,yCAAyC,EAAE,IAAI;EAC/C,oDAAoD,EAAE,MAAM;EAC5D,wCAAwC,EAAE,IAAI;EAC9C,6CAA6C,EAAE,MAAM;EACrD,6CAA6C,EAAE,MAAM;EACrD,wCAAwC,EAAE,IAAI;EAC9C,+BAA+B,EAAE,KAAK;EACtC,2BAA2B,EAAE,KAAK;EAClC,8BAA8B,EAAE,IAAI;EACpC,0BAA0B,EAAE,IAAI;EAChC,oCAAoC,EAAE,SAAS;EAC/C,mCAAmC,EAAE,eAAe;EACpD,qCAAqC,EAAE,kBAAkB;EACzD,gCAAgC,EAC9B,mDAAmD;EACrD,gCAAgC,EAAE,0CAA0C;EAC5E,qCAAqC,EAAE,kDAAkD;EACzF,0CAA0C,EACxC,6CAA6C;EAC/C,+BAA+B,EAAE,cAAc;EAC/C,qCAAqC,EAAE,SAAS;EAChD,2CAA2C,EACzC,2CAA2C;EAC7C,2CAA2C,EAAE,WAAW;EACxD,+CAA+C,EAAE,SAAS;EAC1D,kDAAkD,EAAE,8BAA8B;EAClF,mCAAmC,EAAE,YAAY;EACjD,yCAAyC,EAAE;AAC7C,CAAU;AACV,eAAeA,IAAI"}