@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.
@@ -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,8 @@
1
+ var delay = function delay(milliseconds) {
2
+ return new Promise(function (resolve) {
3
+ return setTimeout(resolve, milliseconds);
4
+ });
5
+ };
6
+
7
+ export { delay };
8
+ //# sourceMappingURL=delay.js.map
@@ -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;;;;"}
@@ -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;;;;"}