react-device-portal
Version:
Simple WebRTC data channel for React.
29 lines (26 loc) • 1.16 kB
JavaScript
import { useState, useRef, useEffect } from 'react';
import { Initiator } from './webrtc/Initiator.js';
// @TODO: warn if one room is used by multiple useDevicePortalInput hooks more than once at the same time
var useDevicePortalInput = function (room, value, onValueFromOutput) {
var _a = useState(null), initiator = _a[0], setInitiator = _a[1];
var onValueFromOutputRef = useRef(onValueFromOutput);
onValueFromOutputRef.current = onValueFromOutput;
useEffect(function () {
var initiator = new Initiator(encodeURIComponent(room), {
onValue: function (value) {
var _a;
(_a = onValueFromOutputRef.current) === null || _a === void 0 ? void 0 : _a.call(onValueFromOutputRef, value);
},
});
setInitiator(initiator);
return function () {
initiator.destroy();
setInitiator(null);
};
}, [room]);
useEffect(function () {
initiator === null || initiator === void 0 ? void 0 : initiator.send(value);
}, [value, initiator]);
};
export { useDevicePortalInput };
//# sourceMappingURL=useDevicePortalInput.js.map