Some checks failed
Close stale issues and PRs / stale (push) Has been cancelled
71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import { ExcalidrawApp } from '@jitsi/excalidraw';
|
|
import i18next from 'i18next';
|
|
import React, { useCallback, useRef } from 'react';
|
|
|
|
import { WHITEBOARD_UI_OPTIONS } from '../../constants';
|
|
|
|
/**
|
|
* Whiteboard wrapper for mobile.
|
|
*
|
|
* @returns {JSX.Element}
|
|
*/
|
|
const WhiteboardWrapper = ({
|
|
className,
|
|
collabDetails,
|
|
collabServerUrl,
|
|
localParticipantName
|
|
}: {
|
|
className?: string;
|
|
collabDetails: {
|
|
roomId: string;
|
|
roomKey: string;
|
|
};
|
|
collabServerUrl: string;
|
|
localParticipantName: string;
|
|
}) => {
|
|
const excalidrawRef = useRef<any>(null);
|
|
const excalidrawAPIRef = useRef<any>(null);
|
|
const collabAPIRef = useRef<any>(null);
|
|
|
|
const getExcalidrawAPI = useCallback(excalidrawAPI => {
|
|
if (excalidrawAPIRef.current) {
|
|
return;
|
|
}
|
|
excalidrawAPIRef.current = excalidrawAPI;
|
|
}, []);
|
|
|
|
const getCollabAPI = useCallback(collabAPI => {
|
|
if (collabAPIRef.current) {
|
|
return;
|
|
}
|
|
collabAPIRef.current = collabAPI;
|
|
collabAPIRef.current.setUsername(localParticipantName);
|
|
}, [ localParticipantName ]);
|
|
|
|
return (
|
|
<div className = { className }>
|
|
<div className = 'excalidraw-wrapper'>
|
|
<ExcalidrawApp
|
|
collabDetails = { collabDetails }
|
|
collabServerUrl = { collabServerUrl }
|
|
detectScroll = { true }
|
|
excalidraw = {{
|
|
isCollaborating: true,
|
|
langCode: i18next.language,
|
|
|
|
// @ts-ignore
|
|
ref: excalidrawRef,
|
|
theme: 'light',
|
|
UIOptions: WHITEBOARD_UI_OPTIONS
|
|
}}
|
|
getCollabAPI = { getCollabAPI }
|
|
getExcalidrawAPI = { getExcalidrawAPI } />
|
|
</div>
|
|
|
|
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default WhiteboardWrapper;
|