// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { useEffect, useRef } from 'react'; import * as Backbone from 'backbone'; type PropsType = { View: typeof Backbone.View; className?: string; }; export const BackboneHost = ({ View, className }: PropsType): JSX.Element => { const hostRef = useRef(null); const viewRef = useRef(undefined); useEffect(() => { const view = new View({ el: hostRef.current, }); viewRef.current = view; return () => { if (!viewRef || !viewRef.current) { return; } viewRef.current.remove(); viewRef.current = undefined; }; }, [View]); return (
); };