@device-portal/react 0.0.1
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.
- package/README.md +74 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js +482 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/consumer/DevicePortalConsumer.js +50 -0
- package/dist/consumer/DevicePortalConsumer.js.map +1 -0
- package/dist/consumer/useDevicePortalConsumer.js +90 -0
- package/dist/consumer/useDevicePortalConsumer.js.map +1 -0
- package/dist/delay.js +8 -0
- package/dist/delay.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/DevicePortalProvider.js +74 -0
- package/dist/provider/DevicePortalProvider.js.map +1 -0
- package/dist/provider/useDevicePortalPeer.js +23 -0
- package/dist/provider/useDevicePortalPeer.js.map +1 -0
- package/dist/provider/useDevicePortalProvider.js +52 -0
- package/dist/provider/useDevicePortalProvider.js.map +1 -0
- package/dist/settings.js +12 -0
- package/dist/settings.js.map +1 -0
- package/dist/webrtc/Initiator.js +359 -0
- package/dist/webrtc/Initiator.js.map +1 -0
- package/dist/webrtc/Peer.js +367 -0
- package/dist/webrtc/Peer.js.map +1 -0
- package/dist/webrtc/Responder.js +133 -0
- package/dist/webrtc/Responder.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { useState, useMemo } from 'react';
|
|
3
|
+
import { Responder } from '../webrtc/Responder.js';
|
|
4
|
+
|
|
5
|
+
var responders = {};
|
|
6
|
+
var useDevicePortalConsumer = function useDevicePortalConsumer(room) {
|
|
7
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
8
|
+
var _useState = useState(null),
|
|
9
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
10
|
+
valueState = _useState2[0],
|
|
11
|
+
setValueState = _useState2[1];
|
|
12
|
+
var currentConsumer = useMemo(function () {
|
|
13
|
+
if (!responders[room]) {
|
|
14
|
+
var _withResolvers, _withResolvers2, _ref2;
|
|
15
|
+
console.log("[useDevicePortalConsumer] Creating new Responder for room: ".concat(room));
|
|
16
|
+
var withResolvers = function withResolvers() {
|
|
17
|
+
var resolve;
|
|
18
|
+
var reject;
|
|
19
|
+
var promise = new Promise(function (res, rej) {
|
|
20
|
+
resolve = res;
|
|
21
|
+
reject = rej;
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
promise: promise,
|
|
25
|
+
resolve: resolve,
|
|
26
|
+
reject: reject
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
var _ref = (_withResolvers = (_withResolvers2 = (_ref2 = Promise).withResolvers) === null || _withResolvers2 === void 0 ? void 0 : _withResolvers2.call(_ref2)) !== null && _withResolvers !== void 0 ? _withResolvers : withResolvers(),
|
|
30
|
+
firstValuePromise = _ref.promise,
|
|
31
|
+
firstValueResolve = _ref.resolve;
|
|
32
|
+
var sendMessageToProvider = function sendMessageToProvider(value) {
|
|
33
|
+
responders[room].responder.send(value);
|
|
34
|
+
};
|
|
35
|
+
var responder = new Responder(room, {
|
|
36
|
+
onMessage: function onMessage(value_0, peerId) {
|
|
37
|
+
var consumer = {
|
|
38
|
+
value: value_0,
|
|
39
|
+
sendMessageToProvider: sendMessageToProvider
|
|
40
|
+
};
|
|
41
|
+
responders[room].consumer = consumer;
|
|
42
|
+
var _iterator = _createForOfIteratorHelper(responders[room].setValueStates),
|
|
43
|
+
_step;
|
|
44
|
+
try {
|
|
45
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
46
|
+
var setState = _step.value;
|
|
47
|
+
setState({
|
|
48
|
+
room: room,
|
|
49
|
+
value: value_0,
|
|
50
|
+
sendMessageToProvider: sendMessageToProvider
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
} catch (err) {
|
|
54
|
+
_iterator.e(err);
|
|
55
|
+
} finally {
|
|
56
|
+
_iterator.f();
|
|
57
|
+
}
|
|
58
|
+
firstValueResolve(value_0);
|
|
59
|
+
},
|
|
60
|
+
sendLastValueOnConnectAndReconnect: false,
|
|
61
|
+
websocketSignalingServer: options.websocketSignalingServer
|
|
62
|
+
});
|
|
63
|
+
responders[room] = {
|
|
64
|
+
responder: responder,
|
|
65
|
+
firstValuePromise: firstValuePromise,
|
|
66
|
+
consumer: null,
|
|
67
|
+
setValueStates: new Set()
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
responders[room].setValueStates.add(setValueState);
|
|
71
|
+
return responders[room].consumer;
|
|
72
|
+
}, [room, options.websocketSignalingServer, setValueState]);
|
|
73
|
+
|
|
74
|
+
// Cleanup on unmount (though this hook is currently designed for global persistence)
|
|
75
|
+
// useEffect(() => () => { responders[room]?.setValueStates.delete(setValueState) }, [room, setValueState]);
|
|
76
|
+
|
|
77
|
+
if (valueState && valueState.room === room) {
|
|
78
|
+
return {
|
|
79
|
+
value: valueState.value,
|
|
80
|
+
sendMessageToProvider: valueState.sendMessageToProvider
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (currentConsumer) {
|
|
84
|
+
return currentConsumer;
|
|
85
|
+
}
|
|
86
|
+
throw responders[room].firstValuePromise;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export { useDevicePortalConsumer };
|
|
90
|
+
//# sourceMappingURL=useDevicePortalConsumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDevicePortalConsumer.js","sources":["../../src/consumer/useDevicePortalConsumer.ts"],"sourcesContent":["import { useMemo, useState, type Dispatch, type SetStateAction } from 'react'\nimport { Responder } from '../webrtc/Responder'\n\ntype State = {\n\troom: string\n\tvalue: string\n\tsendMessageToProvider: (value: string) => void\n}\n\nconst responders: {\n\t[room: string]: {\n\t\tresponder: Responder\n\t\tfirstValuePromise: Promise<string>\n\t\tconsumer: null | {\n\t\t\tvalue: string\n\t\t\tsendMessageToProvider: (value: string) => void\n\t\t}\n\t\tsetValueStates: Set<Dispatch<SetStateAction<State | null>>>\n\t}\n} = {}\n\nexport const useDevicePortalConsumer = (\n\troom: string,\n\toptions: {\n\t\twebsocketSignalingServer?: string\n\t} = {},\n): Pick<State, 'value' | 'sendMessageToProvider'> => {\n\tconst [valueState, setValueState] = useState<State | null>(null)\n\n\tconst currentConsumer = useMemo(() => {\n\t\tif (!responders[room]) {\n\t\t\tconsole.log(\n\t\t\t\t`[useDevicePortalConsumer] Creating new Responder for room: ${room}`,\n\t\t\t)\n\t\t\tconst withResolvers = () => {\n\t\t\t\tlet resolve: (value: string) => void\n\t\t\t\tlet reject: (reason?: any) => void\n\t\t\t\tconst promise = new Promise<string>((res, rej) => {\n\t\t\t\t\tresolve = res\n\t\t\t\t\treject = rej\n\t\t\t\t})\n\t\t\t\treturn { promise, resolve: resolve!, reject: reject! }\n\t\t\t}\n\n\t\t\tconst { promise: firstValuePromise, resolve: firstValueResolve } =\n\t\t\t\t(Promise as any).withResolvers?.() ?? withResolvers()\n\n\t\t\tconst sendMessageToProvider = (value: string) => {\n\t\t\t\tresponders[room].responder.send(value)\n\t\t\t}\n\n\t\t\tconst responder = new Responder(room, {\n\t\t\t\tonMessage: (value, peerId) => {\n\t\t\t\t\tconst consumer = { value, sendMessageToProvider }\n\t\t\t\t\tresponders[room].consumer = consumer\n\t\t\t\t\tfor (const setState of responders[room].setValueStates) {\n\t\t\t\t\t\tsetState({ room, value, sendMessageToProvider })\n\t\t\t\t\t}\n\t\t\t\t\tfirstValueResolve(value)\n\t\t\t\t},\n\t\t\t\tsendLastValueOnConnectAndReconnect: false,\n\t\t\t\twebsocketSignalingServer: options.websocketSignalingServer,\n\t\t\t})\n\n\t\t\tresponders[room] = {\n\t\t\t\tresponder,\n\t\t\t\tfirstValuePromise,\n\t\t\t\tconsumer: null,\n\t\t\t\tsetValueStates: new Set(),\n\t\t\t}\n\t\t}\n\n\t\tresponders[room].setValueStates.add(setValueState)\n\n\t\treturn responders[room].consumer\n\t}, [room, options.websocketSignalingServer, setValueState])\n\n\t// Cleanup on unmount (though this hook is currently designed for global persistence)\n\t// useEffect(() => () => { responders[room]?.setValueStates.delete(setValueState) }, [room, setValueState]);\n\n\tif (valueState && valueState.room === room) {\n\t\treturn {\n\t\t\tvalue: valueState.value,\n\t\t\tsendMessageToProvider: valueState.sendMessageToProvider,\n\t\t}\n\t}\n\n\tif (currentConsumer) {\n\t\treturn currentConsumer\n\t}\n\n\tthrow responders[room].firstValuePromise\n}\n"],"names":["responders","useDevicePortalConsumer","room","options","arguments","length","undefined","_useState","useState","_useState2","_slicedToArray","valueState","setValueState","currentConsumer","useMemo","_withResolvers","_withResolvers2","_ref2","console","log","concat","withResolvers","resolve","reject","promise","Promise","res","rej","_ref","call","firstValuePromise","firstValueResolve","sendMessageToProvider","value","responder","send","Responder","onMessage","peerId","consumer","_iterator","_createForOfIteratorHelper","setValueStates","_step","s","n","done","setState","err","e","f","sendLastValueOnConnectAndReconnect","websocketSignalingServer","Set","add"],"mappings":"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"}
|
package/dist/delay.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay.js","sources":["../src/delay.ts"],"sourcesContent":["export const delay = (milliseconds: number) =>\n\tnew Promise((resolve) => setTimeout(resolve, milliseconds))\n"],"names":["delay","milliseconds","Promise","resolve","setTimeout"],"mappings":"IAAaA,KAAK,GAAG,SAARA,KAAKA,CAAIC,YAAoB,EAAA;AAAA,EAAA,OACzC,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAA;AAAA,IAAA,OAAKC,UAAU,CAACD,OAAO,EAAEF,YAAY,CAAC;GAAC,CAAA;AAAA;;;;"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { DevicePortalProvider } from './provider/DevicePortalProvider.js';
|
|
2
|
+
export { useDevicePortalProvider } from './provider/useDevicePortalProvider.js';
|
|
3
|
+
export { useDevicePortalPeer } from './provider/useDevicePortalPeer.js';
|
|
4
|
+
export { DevicePortalConsumer } from './consumer/DevicePortalConsumer.js';
|
|
5
|
+
export { useDevicePortalConsumer } from './consumer/useDevicePortalConsumer.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { c } from 'react/compiler-runtime';
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
|
+
import { useDevicePortalPeer } from './useDevicePortalPeer.js';
|
|
5
|
+
import { useDevicePortalProvider } from './useDevicePortalProvider.js';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var _excluded = ["room", "children"];
|
|
9
|
+
var DevicePortalProvider = function DevicePortalProvider(t0) {
|
|
10
|
+
var $ = c(11);
|
|
11
|
+
var children;
|
|
12
|
+
var options;
|
|
13
|
+
var room;
|
|
14
|
+
if ($[0] !== t0) {
|
|
15
|
+
var _t = t0;
|
|
16
|
+
room = _t.room;
|
|
17
|
+
children = _t.children;
|
|
18
|
+
options = _objectWithoutProperties(_t, _excluded);
|
|
19
|
+
$[0] = t0;
|
|
20
|
+
$[1] = children;
|
|
21
|
+
$[2] = options;
|
|
22
|
+
$[3] = room;
|
|
23
|
+
} else {
|
|
24
|
+
children = $[1];
|
|
25
|
+
options = $[2];
|
|
26
|
+
room = $[3];
|
|
27
|
+
}
|
|
28
|
+
var _useDevicePortalProvi = useDevicePortalProvider(room, options),
|
|
29
|
+
peers = _useDevicePortalProvi.peers,
|
|
30
|
+
initiator = _useDevicePortalProvi.initiator;
|
|
31
|
+
if (!initiator || !children) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
var t1;
|
|
35
|
+
if ($[4] !== children || $[5] !== initiator || $[6] !== peers) {
|
|
36
|
+
var t2;
|
|
37
|
+
if ($[8] !== children || $[9] !== initiator) {
|
|
38
|
+
t2 = function t2(peerId) {
|
|
39
|
+
return /*#__PURE__*/jsx(Fragment, {
|
|
40
|
+
children: children(function (options_0) {
|
|
41
|
+
return /*#__PURE__*/jsx(PeerBase, {
|
|
42
|
+
peerId: peerId,
|
|
43
|
+
initiator: initiator,
|
|
44
|
+
options: options_0
|
|
45
|
+
});
|
|
46
|
+
}, peerId)
|
|
47
|
+
}, peerId);
|
|
48
|
+
};
|
|
49
|
+
$[8] = children;
|
|
50
|
+
$[9] = initiator;
|
|
51
|
+
$[10] = t2;
|
|
52
|
+
} else {
|
|
53
|
+
t2 = $[10];
|
|
54
|
+
}
|
|
55
|
+
t1 = peers.map(t2);
|
|
56
|
+
$[4] = children;
|
|
57
|
+
$[5] = initiator;
|
|
58
|
+
$[6] = peers;
|
|
59
|
+
$[7] = t1;
|
|
60
|
+
} else {
|
|
61
|
+
t1 = $[7];
|
|
62
|
+
}
|
|
63
|
+
return t1;
|
|
64
|
+
};
|
|
65
|
+
var PeerBase = function PeerBase(t0) {
|
|
66
|
+
var peerId = t0.peerId,
|
|
67
|
+
initiator = t0.initiator,
|
|
68
|
+
options = t0.options;
|
|
69
|
+
useDevicePortalPeer(initiator, peerId, options);
|
|
70
|
+
return null;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export { DevicePortalProvider };
|
|
74
|
+
//# sourceMappingURL=DevicePortalProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevicePortalProvider.js","sources":["../../src/provider/DevicePortalProvider.tsx"],"sourcesContent":["import { Fragment, type FunctionComponent, type ReactNode } from 'react'\nimport type { Initiator } from '../webrtc/Initiator'\nimport { PeerId } from '../webrtc/PeerId'\nimport { PeerOptions, useDevicePortalPeer } from './useDevicePortalPeer'\nimport {\n\tuseDevicePortalProvider,\n\ttype DevicePortalProviderOptions,\n} from './useDevicePortalProvider'\n\nexport const DevicePortalProvider: FunctionComponent<\n\t{\n\t\troom: string\n\t} & Omit<DevicePortalProviderOptions, 'value'> &\n\t\t(\n\t\t\t| {\n\t\t\t\t\tvalue?: undefined\n\t\t\t\t\tchildren?: (\n\t\t\t\t\t\tPeer: FunctionComponent<PeerOptions>,\n\t\t\t\t\t\tpeerId: PeerId,\n\t\t\t\t\t) => ReactNode\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tvalue: string\n\t\t\t\t\tchildren?: undefined\n\t\t\t }\n\t\t)\n> = ({ room, children, ...options }) => {\n\tconst { peers, initiator } = useDevicePortalProvider(room, options)\n\n\tif (!initiator || !children) {\n\t\treturn null\n\t}\n\n\treturn peers.map((peerId) => (\n\t\t<Fragment key={peerId}>\n\t\t\t{children(\n\t\t\t\t(options) => (\n\t\t\t\t\t<PeerBase peerId={peerId} initiator={initiator} options={options} />\n\t\t\t\t),\n\t\t\t\tpeerId,\n\t\t\t)}\n\t\t</Fragment>\n\t))\n}\n\nconst PeerBase: FunctionComponent<{\n\tpeerId: PeerId\n\tinitiator: Initiator\n\toptions: PeerOptions\n}> = ({ peerId, initiator, options }) => {\n\tuseDevicePortalPeer(initiator, peerId, options)\n\treturn null\n}\n"],"names":["DevicePortalProvider","t0","$","_c","children","options","room","_t","_objectWithoutProperties","_excluded","_useDevicePortalProvi","useDevicePortalProvider","peers","initiator","t1","t2","peerId","_jsx","Fragment","options_0","PeerBase","map","useDevicePortalPeer"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
var useDevicePortalPeer = function useDevicePortalPeer(initiator, peerId) {
|
|
4
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
5
|
+
var onMessageFromConsumerRef = useRef(options.onMessageFromConsumer);
|
|
6
|
+
onMessageFromConsumerRef.current = options.onMessageFromConsumer;
|
|
7
|
+
useEffect(function () {
|
|
8
|
+
var unsubscribe = initiator.addPeerListener(peerId, function (value) {
|
|
9
|
+
var _onMessageFromConsume;
|
|
10
|
+
(_onMessageFromConsume = onMessageFromConsumerRef.current) === null || _onMessageFromConsume === void 0 || _onMessageFromConsume.call(onMessageFromConsumerRef, value);
|
|
11
|
+
});
|
|
12
|
+
return unsubscribe;
|
|
13
|
+
}, [initiator, peerId]);
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
if (options.value === undefined) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
initiator.sendToPeer(peerId, options.value);
|
|
19
|
+
}, [initiator, peerId, options.value]);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { useDevicePortalPeer };
|
|
23
|
+
//# sourceMappingURL=useDevicePortalPeer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDevicePortalPeer.js","sources":["../../src/provider/useDevicePortalPeer.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Initiator } from '../webrtc/Initiator'\nimport { PeerId } from '../webrtc/PeerId'\n\nexport type PeerOptions = {\n\tvalue?: string\n\tonMessageFromConsumer?: (value: string) => void\n}\n\nexport const useDevicePortalPeer = (\n\tinitiator: Initiator,\n\tpeerId: PeerId,\n\toptions: PeerOptions = {},\n) => {\n\tconst onMessageFromConsumerRef = useRef(options.onMessageFromConsumer)\n\tonMessageFromConsumerRef.current = options.onMessageFromConsumer\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = initiator.addPeerListener(peerId, (value) => {\n\t\t\tonMessageFromConsumerRef.current?.(value)\n\t\t})\n\n\t\treturn unsubscribe\n\t}, [initiator, peerId])\n\n\tuseEffect(() => {\n\t\tif (options.value === undefined) {\n\t\t\treturn\n\t\t}\n\t\tinitiator.sendToPeer(peerId, options.value)\n\t}, [initiator, peerId, options.value])\n}\n"],"names":["useDevicePortalPeer","initiator","peerId","options","arguments","length","undefined","onMessageFromConsumerRef","useRef","onMessageFromConsumer","current","useEffect","unsubscribe","addPeerListener","value","_onMessageFromConsume","call","sendToPeer"],"mappings":";;AASO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAC/BC,SAAoB,EACpBC,MAAc,EAEV;AAAA,EAAA,IADJC,OAAoB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAEzB,EAAA,IAAMG,wBAAwB,GAAGC,MAAM,CAACL,OAAO,CAACM,qBAAqB,CAAC;AACtEF,EAAAA,wBAAwB,CAACG,OAAO,GAAGP,OAAO,CAACM,qBAAqB;AAEhEE,EAAAA,SAAS,CAAC,YAAM;IACf,IAAMC,WAAW,GAAGX,SAAS,CAACY,eAAe,CAACX,MAAM,EAAE,UAACY,KAAK,EAAK;AAAA,MAAA,IAAAC,qBAAA;AAChE,MAAA,CAAAA,qBAAA,GAAAR,wBAAwB,CAACG,OAAO,MAAAK,IAAAA,IAAAA,qBAAA,KAAhCA,MAAAA,IAAAA,qBAAA,CAAAC,IAAA,CAAAT,wBAAwB,EAAWO,KAAK,CAAC;AAC1C,KAAC,CAAC;AAEF,IAAA,OAAOF,WAAW;AACnB,GAAC,EAAE,CAACX,SAAS,EAAEC,MAAM,CAAC,CAAC;AAEvBS,EAAAA,SAAS,CAAC,YAAM;AACf,IAAA,IAAIR,OAAO,CAACW,KAAK,KAAKR,SAAS,EAAE;AAChC,MAAA;AACD;IACAL,SAAS,CAACgB,UAAU,CAACf,MAAM,EAAEC,OAAO,CAACW,KAAK,CAAC;GAC3C,EAAE,CAACb,SAAS,EAAEC,MAAM,EAAEC,OAAO,CAACW,KAAK,CAAC,CAAC;AACvC;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import { Initiator } from '../webrtc/Initiator.js';
|
|
4
|
+
|
|
5
|
+
// @TODO: warn if one room is used by multiple useDevicePortalProvider hooks more than once at the same time
|
|
6
|
+
|
|
7
|
+
var useDevicePortalProvider = function useDevicePortalProvider(room) {
|
|
8
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
9
|
+
var _useState = useState(null),
|
|
10
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
11
|
+
initiator = _useState2[0],
|
|
12
|
+
setInitiator = _useState2[1];
|
|
13
|
+
var _useState3 = useState([]),
|
|
14
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
15
|
+
peers = _useState4[0],
|
|
16
|
+
setPeers = _useState4[1];
|
|
17
|
+
var onMessageFromConsumerRef = useRef(options.onMessageFromConsumer);
|
|
18
|
+
onMessageFromConsumerRef.current = options.onMessageFromConsumer;
|
|
19
|
+
useEffect(function () {
|
|
20
|
+
var initiator_0 = new Initiator(room, {
|
|
21
|
+
onMessage: function onMessage(value, peerId) {
|
|
22
|
+
var _onMessageFromConsume;
|
|
23
|
+
(_onMessageFromConsume = onMessageFromConsumerRef.current) === null || _onMessageFromConsume === void 0 || _onMessageFromConsume.call(onMessageFromConsumerRef, value, peerId);
|
|
24
|
+
},
|
|
25
|
+
onPeersChange: function onPeersChange(peers_0) {
|
|
26
|
+
setPeers(peers_0);
|
|
27
|
+
},
|
|
28
|
+
websocketSignalingServer: options.websocketSignalingServer,
|
|
29
|
+
maxClients: options.maxClients
|
|
30
|
+
});
|
|
31
|
+
setInitiator(initiator_0);
|
|
32
|
+
setPeers(initiator_0.peers);
|
|
33
|
+
return function () {
|
|
34
|
+
initiator_0.destroy();
|
|
35
|
+
setInitiator(null);
|
|
36
|
+
setPeers([]);
|
|
37
|
+
};
|
|
38
|
+
}, [room, options.websocketSignalingServer, options.maxClients]);
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
if (options.value === undefined) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
initiator === null || initiator === void 0 || initiator.send(options.value);
|
|
44
|
+
}, [options.value, initiator]);
|
|
45
|
+
return {
|
|
46
|
+
peers: peers,
|
|
47
|
+
initiator: initiator
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { useDevicePortalProvider };
|
|
52
|
+
//# sourceMappingURL=useDevicePortalProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDevicePortalProvider.js","sources":["../../src/provider/useDevicePortalProvider.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { Initiator } from '../webrtc/Initiator'\nimport { PeerId } from '../webrtc/PeerId'\n\n// @TODO: warn if one room is used by multiple useDevicePortalProvider hooks more than once at the same time\n\nexport type DevicePortalProviderOptions = {\n\tvalue?: string\n\twebsocketSignalingServer?: string\n\tonMessageFromConsumer?: (value: string, peerId: PeerId) => void\n\tmaxClients?: number\n}\n\nexport const useDevicePortalProvider = (\n\troom: string,\n\toptions: DevicePortalProviderOptions = {},\n) => {\n\tconst [initiator, setInitiator] = useState<Initiator | null>(null)\n\tconst [peers, setPeers] = useState<PeerId[]>([])\n\tconst onMessageFromConsumerRef = useRef(options.onMessageFromConsumer)\n\tonMessageFromConsumerRef.current = options.onMessageFromConsumer\n\n\tuseEffect(() => {\n\t\tconst initiator = new Initiator(room, {\n\t\t\tonMessage: (value, peerId) => {\n\t\t\t\tonMessageFromConsumerRef.current?.(value, peerId)\n\t\t\t},\n\t\t\tonPeersChange: (peers) => {\n\t\t\t\tsetPeers(peers)\n\t\t\t},\n\t\t\twebsocketSignalingServer: options.websocketSignalingServer,\n\t\t\tmaxClients: options.maxClients,\n\t\t})\n\t\tsetInitiator(initiator)\n\t\tsetPeers(initiator.peers)\n\n\t\treturn () => {\n\t\t\tinitiator.destroy()\n\t\t\tsetInitiator(null)\n\t\t\tsetPeers([])\n\t\t}\n\t}, [room, options.websocketSignalingServer, options.maxClients])\n\n\tuseEffect(() => {\n\t\tif (options.value === undefined) {\n\t\t\treturn\n\t\t}\n\t\tinitiator?.send(options.value)\n\t}, [options.value, initiator])\n\n\treturn { peers, initiator }\n}\n"],"names":["useDevicePortalProvider","room","options","arguments","length","undefined","_useState","useState","_useState2","_slicedToArray","initiator","setInitiator","_useState3","_useState4","peers","setPeers","onMessageFromConsumerRef","useRef","onMessageFromConsumer","current","useEffect","Initiator","onMessage","value","peerId","_onMessageFromConsume","call","onPeersChange","websocketSignalingServer","maxClients","destroy","send"],"mappings":";;;;AAIA;;IASaA,uBAAuB,GAAG,SAA1BA,uBAAuBA,CACnCC,IAAY,EAER;AAAA,EAAA,IADJC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAEzC,EAAA,IAAAG,SAAA,GAAkCC,QAAQ,CAAmB,IAAI,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA3DI,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,YAAY,GAAAH,UAAA,CAAA,CAAA,CAAA;AAC9B,EAAA,IAAAI,UAAA,GAA0BL,QAAQ,CAAW,EAAE,CAAC;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAzCE,IAAAA,KAAK,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,QAAQ,GAAAF,UAAA,CAAA,CAAA,CAAA;AACtB,EAAA,IAAMG,wBAAwB,GAAGC,MAAM,CAACf,OAAO,CAACgB,qBAAqB,CAAC;AACtEF,EAAAA,wBAAwB,CAACG,OAAO,GAAGjB,OAAO,CAACgB,qBAAqB;AAEhEE,EAAAA,SAAS,CAAC,YAAM;AACf,IAAA,IAAMV,WAAS,GAAG,IAAIW,SAAS,CAACpB,IAAI,EAAE;AACrCqB,MAAAA,SAAS,EAAE,SAAXA,SAASA,CAAGC,KAAK,EAAEC,MAAM,EAAK;AAAA,QAAA,IAAAC,qBAAA;AAC7B,QAAA,CAAAA,qBAAA,GAAAT,wBAAwB,CAACG,OAAO,cAAAM,qBAAA,KAAA,MAAA,IAAhCA,qBAAA,CAAAC,IAAA,CAAAV,wBAAwB,EAAWO,KAAK,EAAEC,MAAM,CAAC;OACjD;AACDG,MAAAA,aAAa,EAAE,SAAfA,aAAaA,CAAGb,OAAK,EAAK;QACzBC,QAAQ,CAACD,OAAK,CAAC;OACf;MACDc,wBAAwB,EAAE1B,OAAO,CAAC0B,wBAAwB;MAC1DC,UAAU,EAAE3B,OAAO,CAAC2B;AACrB,KAAC,CAAC;IACFlB,YAAY,CAACD,WAAS,CAAC;AACvBK,IAAAA,QAAQ,CAACL,WAAS,CAACI,KAAK,CAAC;AAEzB,IAAA,OAAO,YAAM;MACZJ,WAAS,CAACoB,OAAO,EAAE;MACnBnB,YAAY,CAAC,IAAI,CAAC;MAClBI,QAAQ,CAAC,EAAE,CAAC;KACZ;AACF,GAAC,EAAE,CAACd,IAAI,EAAEC,OAAO,CAAC0B,wBAAwB,EAAE1B,OAAO,CAAC2B,UAAU,CAAC,CAAC;AAEhET,EAAAA,SAAS,CAAC,YAAM;AACf,IAAA,IAAIlB,OAAO,CAACqB,KAAK,KAAKlB,SAAS,EAAE;AAChC,MAAA;AACD;IACAK,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,MAAA,IAATA,SAAS,CAAEqB,IAAI,CAAC7B,OAAO,CAACqB,KAAK,CAAC;GAC9B,EAAE,CAACrB,OAAO,CAACqB,KAAK,EAAEb,SAAS,CAAC,CAAC;EAE9B,OAAO;AAAEI,IAAAA,KAAK,EAALA,KAAK;AAAEJ,IAAAA,SAAS,EAATA;GAAW;AAC5B;;;;"}
|
package/dist/settings.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var settings = {
|
|
2
|
+
channel: {
|
|
3
|
+
label: 'data'
|
|
4
|
+
},
|
|
5
|
+
defaultWebsocketSignalingServer: 'wss://device-portal.filipchalupa.cz',
|
|
6
|
+
iceServers: [{
|
|
7
|
+
urls: ['stun:stun1.l.google.com:19302', 'stun:stun3.l.google.com:19302']
|
|
8
|
+
}]
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { settings };
|
|
12
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sources":["../src/settings.ts"],"sourcesContent":["export const settings = {\n\tchannel: {\n\t\tlabel: 'data',\n\t},\n\tdefaultWebsocketSignalingServer: 'wss://device-portal.filipchalupa.cz',\n\ticeServers: [\n\t\t{\n\t\t\turls: ['stun:stun1.l.google.com:19302', 'stun:stun3.l.google.com:19302'],\n\t\t},\n\t] satisfies Array<RTCIceServer>,\n} as const\n"],"names":["settings","channel","label","defaultWebsocketSignalingServer","iceServers","urls"],"mappings":"AAAO,IAAMA,QAAQ,GAAG;AACvBC,EAAAA,OAAO,EAAE;AACRC,IAAAA,KAAK,EAAE;GACP;AACDC,EAAAA,+BAA+B,EAAE,qCAAqC;AACtEC,EAAAA,UAAU,EAAE,CACX;AACCC,IAAAA,IAAI,EAAE,CAAC,+BAA+B,EAAE,+BAA+B;GACvE;AAEH;;;;"}
|