Commit 1625d42a by Sergey

add screencust option

parent 1eb73454
......@@ -9,7 +9,6 @@
<option name="SPACE_AFTER_UNARY_NOT" value="true" />
</JSCodeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="BLOCK_COMMENT_ADD_SPACE" value="true" />
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
......
<component name="ProjectDictionaryState">
<dictionary name="ubuntu">
<words>
<w>cust</w>
</words>
</dictionary>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
<component name="JavaScriptSettings">
<option name="languageLevel" value="JSX" />
</component>
</project>
\ No newline at end of file
......@@ -14,7 +14,7 @@ const App = () => {
console.log('sads', value);
}}
uploadOptions={{
url: 'https://cdn.atmaguru.online/upload/?sid=test&md5=r7or90O0oY-ZENaz2voSLQ&expires=1656059260',
url: 'https://cdn.atmaguru.online/upload/?sid=test&md5=RfC4jdfFN05c9ZAc0bZqBg&expires=1694259932',
errorMessage: 'Загрузка временно невозможна'
}}
style={{
......
......@@ -71,9 +71,11 @@
"@tiptap/starter-kit": "^2.0.0-beta.185",
"axios": "^0.27.2",
"katex": "^0.15.3",
"prosemirror-state": "^1.4.1",
"prosemirror-state": "1.4.0",
"rc-upload": "^4.3.3",
"react": "^17.0.2",
"react-media-recorder": "^1.6.6",
"react-webcam": "^7.0.1",
"sass": "^1.49.9"
}
}
......@@ -25,11 +25,16 @@ import Video from './extensions/Video'
import Iframe from './extensions/Iframe'
import CustomLink from './extensions/CustomLink'
import DragAndDrop from "./extensions/DragAndDrop";
import Webcamera from "./extensions/Webcamera";
//import Formula from './extensions/Formula'
import { useReactMediaRecorder } from "react-media-recorder";
import axios from "axios";
const initialBubbleItems = ['bold', 'italic', 'underline', 'strike', '|', 'colorText', 'highlight'];
const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions = { type: 'all' } }) => {
global.uploadUrl = uploadOptions.url;
const [innerModalType, setInnerModalType] = useState(null);
const [embedContent, setEmbedContent] = useState('');
const [uploaderUid, setUploaderUid] = useState('uid' + new Date());
......@@ -40,10 +45,22 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
const [colorsSelected, setColorsSelected] = useState(null);
const [focusFromTo, setFocusFromTo] = useState(null);
const [oldFocusFromTo, setOldFocusFromTo] = useState(null);
const [isUploading, setIsUploading] = useState(false);
const getRgb = (hex) => {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? `rgb(${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)})` : null;
}
const { status, startRecording, stopRecording, mediaBlobUrl, previewStream, muteAudio, unMuteAudio, isAudioMuted, clearBlobUrl } = useReactMediaRecorder({ screen: true });
const [isRecord, setIsRecord] = useState(false);
const videoRef = useRef(null);
useEffect(() => {
if (videoRef.current && previewStream) {
videoRef.current.srcObject = previewStream;
}
}, [previewStream]);
useEffect(() => {
if(focusFromTo !== oldFocusFromTo){
......@@ -52,6 +69,14 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
}
}, [focusFromTo])
useEffect(() => {
if (status === "recording" || status === "acquiring_media") {
setIsRecord(true)
} else if (status === "stopped"){
setIsRecord(false)
}
}, [status])
const modalOpener = (type, title) => {
setModalTitle(title);
setInnerModalType(type);
......@@ -123,6 +148,10 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
title: 'Загрузить видео',
onClick: () => modalOpener('video', 'Загрузить видео')
},
webcamera: {
title: 'Записать экран',
onClick: () => modalOpener('webcamera', 'Записать экран')
},
iframe: {
title: 'Видео по ссылке',
onClick: () => modalOpener('iframe', 'Видео по ссылке')
......@@ -324,7 +353,10 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
className: 'atma-editor-focused',
mode: "all"
}),
DragAndDrop,
DragAndDrop.configure({
linkUpload: uploadOptions.url
}),
Webcamera
],
content: value,
onUpdate: ({editor}) => onChange(editor.getHTML()),
......@@ -394,6 +426,26 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
/>
}
const saveScreenCust = async (fileBlob) => {
console.log(fileBlob);
setIsUploading(true)
let blobData = await fetch(fileBlob).then((res) => res.blob());
const data = new FormData();
let file = new File([blobData], "name.mp4");
data.append("file", file);
console.log(blobData);
const headers = {'Content-Type': 'multipart/form-data'};
await axios.post(uploadOptions.url, data, {headers: headers} ).then(response => {
if (response.data.state === "success"){
console.log(response.data);
setUploadedPaths(response.data)
}
setIsUploading(false)
});
};
const getInnerModal = () => {
switch (innerModalType) {
case 'iframe':
......@@ -422,6 +474,35 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
return (
<Fragment>{ getUploader({ accept: '*', afterParams: ['no_convert=1'] }) }</Fragment>
)
case 'webcamera':
return (
<>
<Fragment>
<div className={"webwrap"}>
{
mediaBlobUrl ?
<video id={"id-video"} width={window.innerWidth / 2} height={window.innerHeight / 2} src={mediaBlobUrl} autoPlay controls /> : status === "recording" &&
<video ref={videoRef} width={window.innerWidth / 2} height={window.innerHeight / 2} src={previewStream} autoPlay controls={false} />
}
<div className={"btn-video-wrap"}>
{
isRecord ?
<button className={"btn-video btn-video-stop"} onClick={stopRecording}>Остановить запись</button> : mediaBlobUrl ?
(<>
<button className={"btn-video btn-video-stop"} onClick={clearBlobUrl}>Перезаписать</button>
<button className={"btn-video btn-video-record "} style={{ backgroundColor: isUploading && "#AAB2BD" }} disabled={isUploading} onClick={() => saveScreenCust(mediaBlobUrl)}>{isUploading ? "Загрузка..." : "Сохранить запись"}</button>
</>) :
<button className={"btn-video btn-video-record"} onClick={startRecording}>Начать запись</button>
}
{
isRecord &&
<button className={"btn-video btn-video-mute"} onClick={isAudioMuted ? unMuteAudio : muteAudio}>{isAudioMuted ? "Вернуть звук" : "Убрать звук"}</button>
}
</div>
</div>
</Fragment>
</>
)
default:
return <div>Пусто</div>
}
......@@ -576,6 +657,9 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions
editor.chain().focus().setVideo({ src: file.path, poster: file.path + '.jpg' }).run();
});
break
case 'webcamera':
editor.chain().focus().setVideo({ src: uploadedPaths.file_path }).run();
break
case 'iframe':
let _url = embedContent;
let reg = /(http|https):\/\/([\w.]+\/?)\S*/;
......
......@@ -49,7 +49,12 @@ const toolsInit = {
'iframe',
]
},
{
type: 'g',
items: [
'webcamera',
]
},
{
type: 'g',
items: [
......@@ -100,6 +105,12 @@ const toolsInit = {
{
type: 'g',
items: [
'webcamera',
]
},
{
type: 'g',
items: [
'bulletList',
'orderedList',
'blockquote',
......
......@@ -7,7 +7,7 @@ const upload = async (file) => {
formData.append('file', file);
const headers = {'Content-Type': 'multipart/form-data'};
const response = await axios.post("https://cdn.atmaguru.online/upload/?sid=test&md5=RfC4jdfFN05c9ZAc0bZqBg&expires=1694259932", formData, {headers: headers} );
const response = await axios.post(global.uploadUrl, formData, {headers: headers} );
return response.data.file_path;
};
......
......@@ -6,6 +6,58 @@ body{
min-height: 204px;
padding-bottom: 12px;
}
.webwrap {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.btn {
&-video {
border-radius: 66px;
width: 200px;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
color: white;
margin: 5px;
margin-top: 30px;
border: none;
font-size: 17px;
&:hover {
-webkit-box-shadow: 4px 4px 26px 12px rgba(34, 60, 80, 0.2);
-moz-box-shadow: 4px 4px 26px 12px rgba(34, 60, 80, 0.2);
box-shadow: 4px 4px 26px 12px rgba(34, 60, 80, 0.2);
}
&-disabled {
background-color: #AAB2BD;
}
&-wrap {
display: flex;
flex-direction: row;
}
&-record {
background-color: #72c85f;
}
&-stop {
background-color: #EE505A;
}
&-mute {
background-color: #AAB2BD;
}
}
}
.atma-editor {
position: relative;
border-radius: 8px;
......@@ -735,6 +787,9 @@ body{
&.qfile{
background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%229%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4.85%2015c-1.062%200-1.969-.365-2.721-1.094C1.376%2013.177%201%2012.282%201%2011.22V3.695c0-.747.265-1.382.796-1.908A2.627%202.627%200%200%201%203.713%201c.758%200%201.4.262%201.925.787.524.526.787%201.167.787%201.926v6.894c0%20.444-.152.82-.455%201.13-.303.308-.677.463-1.12.463-.443%200-.817-.166-1.12-.499a1.694%201.694%200%200%201-.455-1.181V4.01c0-.093.035-.175.105-.245a.336.336%200%200%201%20.49%200c.07.07.105.152.105.245v6.562c0%20.257.085.476.254.657.169.18.376.271.621.271a.83.83%200%200%200%20.621-.262.874.874%200%200%200%20.254-.63V3.694c0-.56-.195-1.033-.586-1.417A1.956%201.956%200%200%200%203.713%201.7c-.56%200-1.036.193-1.427.578-.39.384-.586.857-.586%201.417v7.56c0%20.852.31%201.572.928%202.161.618.59%201.359.884%202.222.884.875%200%201.619-.298%202.231-.893.613-.595.919-1.324.919-2.187V4.01c0-.093.035-.175.105-.245a.336.336%200%200%201%20.49%200c.07.07.105.152.105.245v7.192c0%201.062-.376%201.96-1.129%202.696C6.82%2014.632%205.911%2015%204.85%2015z%22%20fill%3D%22%231D1D1F%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%231D1D1F%22%20stroke-width%3D%22.5%22%2F%3E%3C%2Fsvg%3E');
}
&.qwebcamera {
background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20transform%3D%22translate%281.107%20.622%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20stroke%3D%22%231F1E1D%22%20stroke-width%3D%221.2%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20width%3D%2212%22%20height%3D%2212%22%20rx%3D%222%22%2F%3E%3Ccircle%20fill%3D%22%231F1E1D%22%20cx%3D%223.667%22%20cy%3D%223.667%22%20r%3D%221%22%2F%3E%3Cpath%20stroke%3D%22%231F1E1D%22%20stroke-width%3D%221.2%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22m11.467%208.006-3-3.273-6.6%207.2%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E');
}
}
.qcolors{
......
......@@ -1199,6 +1199,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0":
version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259"
integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.16.7", "@babel/template@^7.4.0", "@babel/template@^7.8.6":
version "7.16.7"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz"
......@@ -2782,6 +2789,14 @@ atob@^2.1.2:
resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
automation-events@^4.0.21:
version "4.0.21"
resolved "https://registry.yarnpkg.com/automation-events/-/automation-events-4.0.21.tgz#7dbf168a83210f1863824cd4a60644dc852f7eca"
integrity sha512-VJdSzclxoBVAqE4UAwmqPLHAM3EI2iYhZ2MADdQnjFlW/GE17B47aQ6y9JE9up2bf8f7I5RfqGhJM464jPMzww==
dependencies:
"@babel/runtime" "^7.19.0"
tslib "^2.4.0"
autoprefixer@^9.6.1, autoprefixer@^9.7.3:
version "9.8.8"
resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz"
......@@ -3147,6 +3162,16 @@ braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
broker-factory@^3.0.68:
version "3.0.68"
resolved "https://registry.yarnpkg.com/broker-factory/-/broker-factory-3.0.68.tgz#b46105c66cc5761fe7291f88b3605397d5cbe71c"
integrity sha512-QrbDJ/7YwZ2+TuSreT8WMKrssIO3VjywMu5C5Jq+pJ+OkIVIXhUkxdBhNX2mmRXlzkU+jVXz8uMyRP+2uAgx8w==
dependencies:
"@babel/runtime" "^7.19.0"
fast-unique-numbers "^6.0.21"
tslib "^2.4.0"
worker-factory "^6.0.69"
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz"
......@@ -3713,6 +3738,16 @@ commondir@^1.0.1:
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
compilerr@^9.0.21:
version "9.0.21"
resolved "https://registry.yarnpkg.com/compilerr/-/compilerr-9.0.21.tgz#a72f1bba419bc24f69e56abea602426910e934af"
integrity sha512-H6ZnGHPBiwVdWt8GbAPuQK4mmtRTJ5yucysgFFhGxmPoLCAmaMSxtvHNzhAAGNqBRZOTsGjkwT8clNw6CJcGgQ==
dependencies:
"@babel/runtime" "^7.19.0"
dashify "^2.0.0"
indefinite-article "0.0.2"
tslib "^2.4.0"
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz"
......@@ -4261,6 +4296,11 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
dashify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dashify/-/dashify-2.0.0.tgz#fff270ca2868ca427fee571de35691d6e437a648"
integrity sha512-hpA5C/YrPjucXypHPPc0oJ1l9Hf6wWbiOL7Ik42cxnsUOhWiCB/fylKbKqqJalW9FgkNQCw16YO8uW9Hs0Iy1A==
data-urls@^1.0.0, data-urls@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz"
......@@ -5276,6 +5316,48 @@ extend@~3.0.2:
resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extendable-media-recorder-wav-encoder-broker@^7.0.70:
version "7.0.70"
resolved "https://registry.yarnpkg.com/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.70.tgz#9b97470d891d5fa8c2c6438920a64be444af716a"
integrity sha512-nnVAxiLBdf0PLDXP/8+bKYYRs2PmoJMoJzpcDGOra8GsHIPS+ytmS+85DUFSYGxaxohrhovgN0jVXSyjJ6hQSQ==
dependencies:
"@babel/runtime" "^7.19.0"
broker-factory "^3.0.68"
extendable-media-recorder-wav-encoder-worker "^8.0.69"
tslib "^2.4.0"
extendable-media-recorder-wav-encoder-worker@^8.0.69:
version "8.0.69"
resolved "https://registry.yarnpkg.com/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.69.tgz#21264ca6829503af5213d850f429565e0d1fe306"
integrity sha512-8RJgKYTTHkzDoCWrnPMMqX+TyJpwzP9lwqxQWDpa9J5J1DP0SybgoYWP8Dtty/R5xT344lU+NKo7g1661i7Ujg==
dependencies:
"@babel/runtime" "^7.19.0"
tslib "^2.4.0"
worker-factory "^6.0.69"
extendable-media-recorder-wav-encoder@^7.0.68:
version "7.0.76"
resolved "https://registry.yarnpkg.com/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.76.tgz#c9140bc492a16b6b2ff8812b5bb60dfa2b1e6a01"
integrity sha512-HLeyR9R0mUPOo7zG3d3GRWltNaSYUjyUZGQ8amRjuQVkZFXszmOIAAUVBq3fou0Z3V1mAEo+mXnCqbEfYtgZXQ==
dependencies:
"@babel/runtime" "^7.19.0"
extendable-media-recorder-wav-encoder-broker "^7.0.70"
extendable-media-recorder-wav-encoder-worker "^8.0.69"
tslib "^2.4.0"
extendable-media-recorder@^6.6.5:
version "6.6.10"
resolved "https://registry.yarnpkg.com/extendable-media-recorder/-/extendable-media-recorder-6.6.10.tgz#44f3ac8f15441e8499ea9f311761dbbbc1561161"
integrity sha512-gnSmLqDFq40ZdbGfuarnMLNqYPLCPpPr0p21V+g67wG4Pv2oCc/ga8sfsZrEM5GywEi7FcpyRm3z99JWZ/0aPw==
dependencies:
"@babel/runtime" "^7.18.9"
media-encoder-host "^8.0.76"
multi-buffer-data-view "^3.0.20"
recorder-audio-worklet "^5.1.26"
standardized-audio-context "^25.3.29"
subscribable-things "^2.1.6"
tslib "^2.4.0"
external-editor@^3.0.3:
version "3.1.0"
resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"
......@@ -5341,6 +5423,14 @@ fast-levenshtein@~2.0.6:
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fast-unique-numbers@^6.0.21:
version "6.0.21"
resolved "https://registry.yarnpkg.com/fast-unique-numbers/-/fast-unique-numbers-6.0.21.tgz#39ce05ba6a3bee5c5528328a24469a9a2a5b6f07"
integrity sha512-MW8UAAypyhNtbnMlSch9EiEAuiMo1y6O02WzI5mcHAzvirdIm/hXMVp4QH9ijWnU1xzW23GXk6Bf+5B1kv9hzw==
dependencies:
"@babel/runtime" "^7.19.0"
tslib "^2.4.0"
fastparse@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz"
......@@ -6340,6 +6430,11 @@ imurmurhash@^0.1.4:
resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
indefinite-article@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/indefinite-article/-/indefinite-article-0.0.2.tgz#4bc855257066cfab61ea68beba75d100d6e2506b"
integrity sha512-Au/2XzRkvxq2J6w5uvSSbBKPZ5kzINx5F2wb0SF8xpRL8BP9Lav81TnRbfPp6p+SYjYxwaaLn4EUwI3/MmYKSw==
indent-string@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
......@@ -7819,6 +7914,37 @@ mdn-data@2.0.4:
resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz"
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
media-encoder-host-broker@^7.0.70:
version "7.0.70"
resolved "https://registry.yarnpkg.com/media-encoder-host-broker/-/media-encoder-host-broker-7.0.70.tgz#ac3df47e5442e82d118cfebd304d3917a2080add"
integrity sha512-ixixE9auojgUHEIQHYvJ75vPxetkHreIfxK20SQ4ZoZSO/vRj4+up72rETMbj2e0UO7xnDJqADsx+sfkoV2eVA==
dependencies:
"@babel/runtime" "^7.19.0"
broker-factory "^3.0.68"
fast-unique-numbers "^6.0.21"
media-encoder-host-worker "^9.0.70"
tslib "^2.4.0"
media-encoder-host-worker@^9.0.70:
version "9.0.70"
resolved "https://registry.yarnpkg.com/media-encoder-host-worker/-/media-encoder-host-worker-9.0.70.tgz#a36b82a4f481d14330f3b54d1539b496553b3981"
integrity sha512-ttZAvG0osaOTl6C1OMIzZzFQ/ZIBiRDHyrfcM0d+ZF65tAjLtA53vWoINcgwRBEwc4P62y9a12pbujB1ZdCU6Q==
dependencies:
"@babel/runtime" "^7.19.0"
extendable-media-recorder-wav-encoder-broker "^7.0.70"
tslib "^2.4.0"
worker-factory "^6.0.69"
media-encoder-host@^8.0.76:
version "8.0.78"
resolved "https://registry.yarnpkg.com/media-encoder-host/-/media-encoder-host-8.0.78.tgz#d59566ee4c1e77687a21b1aa06d275655e85789e"
integrity sha512-kobfdkFcfp8w2SkPY8ISHzG6L7o8tgtIvXtK5/j1hfZGZxqf0sxxXEzU9WFm9jNKnlgko6RSZhPzD24w60I4zQ==
dependencies:
"@babel/runtime" "^7.19.0"
media-encoder-host-broker "^7.0.70"
media-encoder-host-worker "^9.0.70"
tslib "^2.4.0"
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
......@@ -8128,6 +8254,14 @@ ms@2.1.3, ms@^2.1.1:
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
multi-buffer-data-view@^3.0.20:
version "3.0.21"
resolved "https://registry.yarnpkg.com/multi-buffer-data-view/-/multi-buffer-data-view-3.0.21.tgz#448e75312f9e949e98b4b8778bd0b5a060df16cd"
integrity sha512-K/v5mjWMbJEgiZzn6Pr7+jKoKuChY6GdQEeiKNWhIi0QILXzJmUvuho85z6AYYh38Ua2kGY/5E3qs2ceoZ8chA==
dependencies:
"@babel/runtime" "^7.19.0"
tslib "^2.4.0"
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"
......@@ -9817,7 +9951,7 @@ prosemirror-schema-list@^1.1.6:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.0.0"
prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.4:
prosemirror-state@1.4.0, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.4:
version "1.4.0"
resolved "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.0.tgz"
integrity sha512-mVDZdjNX/YT5FvypiwbphJe9psA5h+j9apsSszVRFc6oKFoIInvzdujh8QW9f9lwHtSYajLxNiM1hPhd0Sl1XA==
......@@ -9825,14 +9959,6 @@ prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, pr
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
prosemirror-state@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.1.tgz#f6e26c7b6a7e11206176689eb6ebbf91870953e1"
integrity sha512-U/LBDW2gNmVa07sz/D229XigSdDQ5CLFwVB1Vb32MJbAHHhWe/6pOc721faI17tqw4pZ49i1xfY/jEZ9tbIhPg==
dependencies:
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
prosemirror-tables@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.1.1.tgz"
......@@ -10086,6 +10212,14 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.8.4:
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-media-recorder@^1.6.6:
version "1.6.6"
resolved "https://registry.yarnpkg.com/react-media-recorder/-/react-media-recorder-1.6.6.tgz#4067c54e3f11c56f33a7df9daa1650a7aa4305f1"
integrity sha512-VdC4bUINMWJyqOAHw1DaZ8HZhdCyVBK85zJ4cHMo9tsrekui3wq5ZxNtBmNe6nbAFQBTNj/pRnLEsiVrCW+TNQ==
dependencies:
extendable-media-recorder "^6.6.5"
extendable-media-recorder-wav-encoder "^7.0.68"
react-scripts@^3.4.1:
version "3.4.4"
resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.4.tgz"
......@@ -10146,6 +10280,11 @@ react-scripts@^3.4.1:
optionalDependencies:
fsevents "2.1.2"
react-webcam@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/react-webcam/-/react-webcam-7.0.1.tgz#8249e1d621eb4bba7e3f52135f562439d0528df3"
integrity sha512-8E/Eb/7ksKwn5QdLn67tOR7+TdP9BZdu6E5/DSt20v8yfW/s0VGBigE6VA7R4278mBuBUowovAB3DkCfVmSPvA==
react@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz"
......@@ -10233,6 +10372,28 @@ realpath-native@^1.1.0:
dependencies:
util.promisify "^1.0.0"
recorder-audio-worklet-processor@^4.2.15:
version "4.2.15"
resolved "https://registry.yarnpkg.com/recorder-audio-worklet-processor/-/recorder-audio-worklet-processor-4.2.15.tgz#0c8a79e7c75552e1794e76d9140b63aa1ca6bb51"
integrity sha512-5QTJKukH8JcQR1f2FqZsQ1QD2aoc6/+tM0WPv8sqEI4THzbiMfH4VuWF3BfdL2F9mRjLo81nFC9OShCj87wMhg==
dependencies:
"@babel/runtime" "^7.19.0"
tslib "^2.4.0"
recorder-audio-worklet@^5.1.26:
version "5.1.28"
resolved "https://registry.yarnpkg.com/recorder-audio-worklet/-/recorder-audio-worklet-5.1.28.tgz#a7380721b6817905f5a5cf92798f5255e4763f80"
integrity sha512-mopyuTwCsoTAkkzxMC98WWX4rhsCb5OyaIAznxB0fPkzWCkULL8qNANnebwwC0r1uZ+Yza93kRfJPRsrZItWHw==
dependencies:
"@babel/runtime" "^7.19.0"
broker-factory "^3.0.68"
fast-unique-numbers "^6.0.21"
recorder-audio-worklet-processor "^4.2.15"
standardized-audio-context "^25.3.31"
subscribable-things "^2.1.7"
tslib "^2.4.0"
worker-factory "^6.0.69"
recursive-readdir@2.2.2:
version "2.2.2"
resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz"
......@@ -10676,6 +10837,11 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
rxjs-interop@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/rxjs-interop/-/rxjs-interop-2.0.0.tgz#dca61a93789a8304f653d2e159e377cefa348ec7"
integrity sha512-ASEq9atUw7lualXB+knvgtvwkCEvGWV2gDD/8qnASzBkzEARZck9JAyxmY8OS6Nc1pCPEgDTKNcx+YqqYfzArw==
rxjs@^6.5.3, rxjs@^6.6.0:
version "6.6.7"
resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz"
......@@ -11237,6 +11403,15 @@ stack-utils@^1.0.1:
dependencies:
escape-string-regexp "^2.0.0"
standardized-audio-context@^25.3.29, standardized-audio-context@^25.3.31:
version "25.3.31"
resolved "https://registry.yarnpkg.com/standardized-audio-context/-/standardized-audio-context-25.3.31.tgz#3280db56122eef1fa660bc89a62fe9e36e831bc2"
integrity sha512-5aX8pksrTulXoPewTuZ7XDTxEoVHSp/nd5Q1bcXsvV+WaUETxrswQTfk753BZCIu3l8M4OlxeHg79eJp/IcVZA==
dependencies:
"@babel/runtime" "^7.19.0"
automation-events "^4.0.21"
tslib "^2.4.0"
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"
......@@ -11492,6 +11667,15 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
subscribable-things@^2.1.6, subscribable-things@^2.1.7:
version "2.1.7"
resolved "https://registry.yarnpkg.com/subscribable-things/-/subscribable-things-2.1.7.tgz#4bbbfc8d22fee72b3c8fdccbd6ca1be568892bdc"
integrity sha512-z8CMs8i0KSz69Lk83db40io5OEEq4TeuB/g6Z8tpSzmG20oNAL+C2Uys7XAOvcU4Iqrvvc/gcdFLRn6bi1Gb/w==
dependencies:
"@babel/runtime" "^7.19.0"
rxjs-interop "^2.0.0"
tslib "^2.4.0"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
......@@ -11789,7 +11973,7 @@ tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.3:
tslib@^2.0.3, tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
......@@ -12494,6 +12678,16 @@ workbox-window@^4.3.1:
dependencies:
workbox-core "^4.3.1"
worker-factory@^6.0.69:
version "6.0.69"
resolved "https://registry.yarnpkg.com/worker-factory/-/worker-factory-6.0.69.tgz#2d0ce19b96bdf17e44e61e2d5798a15edbaed038"
integrity sha512-vut3DexCAyRicCuvfUAhOAlt7s4segcDutnqAH/ybxbpYzDu4qLfkmpEzfinbGCkPffTzXq64XulaSdqVG3Ncw==
dependencies:
"@babel/runtime" "^7.19.0"
compilerr "^9.0.21"
fast-unique-numbers "^6.0.21"
tslib "^2.4.0"
worker-farm@^1.7.0:
version "1.7.0"
resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment