@device-portal/react 0.0.1 → 0.0.5

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 CHANGED
@@ -14,16 +14,22 @@ npm install @device-portal/react
14
14
 
15
15
  It is expected that the package will be used on two different devices. Create for them two separate pages or apps. Let's call them App A and App B. Both apps will be linked by same `room` (e.g. `'my-test-room'`).
16
16
 
17
- ### App A
17
+ ### One-way Data Flow
18
18
 
19
- The first app will be a value provider or `Provider`.
19
+ This is the simplest use case where a `Provider` sends data to one or more `Consumer`s.
20
+
21
+ #### App A (Provider)
22
+
23
+ The provider app sends a value.
20
24
 
21
25
  ```jsx
22
26
  import { useDevicePortalProvider } from '@device-portal/react'
27
+ import { useState } from 'react'
23
28
 
24
29
  const AppA = () => {
25
30
  const [value, setValue] = useState(0)
26
- useDevicePortalProvider('my-test-room', value.toString(), {
31
+ useDevicePortalProvider('my-test-room', {
32
+ value: value.toString(),
27
33
  websocketSignalingServer: 'wss://device-portal.filipchalupa.cz',
28
34
  })
29
35
 
@@ -43,14 +49,23 @@ const AppA = () => {
43
49
  }
44
50
  ```
45
51
 
46
- ### App B
52
+ #### App B (Consumer)
47
53
 
48
- The other app will be a value consumer or `Consumer`. Every time provider value in App A changes, the consumer in App B will be automatically updated.
54
+ The consumer app receives the value from the provider. Every time the provider's value changes, the consumer will be automatically updated.
49
55
 
50
56
  ```jsx
51
57
  import { useDevicePortalConsumer } from '@device-portal/react'
58
+ import { Suspense } from 'react'
52
59
 
53
60
  const AppB = () => {
61
+ return (
62
+ <Suspense fallback={<p>Connecting...</p>}>
63
+ <ConsumerComponent />
64
+ </Suspense>
65
+ )
66
+ }
67
+
68
+ const ConsumerComponent = () => {
54
69
  const { value } = useDevicePortalConsumer('my-test-room', {
55
70
  websocketSignalingServer: 'wss://device-portal.filipchalupa.cz',
56
71
  })
@@ -58,12 +73,88 @@ const AppB = () => {
58
73
  return (
59
74
  <>
60
75
  <h1>App B</h1>
76
+ <p>Value from provider: {value}</p>
77
+ </>
78
+ )
79
+ }
80
+ ```
81
+
82
+ ### Two-way Communication
83
+
84
+ You can also send messages from the `Consumer` back to the `Provider`.
85
+
86
+ #### App A (Provider with message handling)
87
+
88
+ The provider now also listens for messages from the consumer.
89
+
90
+ ```jsx
91
+ import { useDevicePortalProvider } from '@device-portal/react'
92
+ import { useState } from 'react'
93
+
94
+ const AppA = () => {
95
+ const [value, setValue] = useState(0)
96
+ const [messageFromB, setMessageFromB] = useState('')
97
+
98
+ useDevicePortalProvider('my-test-room', {
99
+ value: value.toString(),
100
+ onMessageFromConsumer: (message) => {
101
+ setMessageFromB(message)
102
+ },
103
+ })
104
+
105
+ return (
106
+ <>
107
+ <h1>App A</h1>
61
108
  <p>Value: {value}</p>
109
+ <button
110
+ onClick={() => {
111
+ setValue(value + 1)
112
+ }}
113
+ >
114
+ Increment
115
+ </button>
116
+ <p>Last message from App B: {messageFromB}</p>
62
117
  </>
63
118
  )
64
119
  }
65
120
  ```
66
121
 
122
+ #### App B (Consumer with message sending)
123
+
124
+ The consumer can now send messages to the provider.
125
+
126
+ ```jsx
127
+ import { useDevicePortalConsumer } from '@device-portal/react'
128
+ import { Suspense } from 'react'
129
+
130
+ const AppB = () => {
131
+ return (
132
+ <Suspense fallback={<p>Connecting…</p>}>
133
+ <ConsumerComponent />
134
+ </Suspense>
135
+ )
136
+ }
137
+
138
+ const ConsumerComponent = () => {
139
+ const { value, sendMessageToProvider } =
140
+ useDevicePortalConsumer('my-test-room')
141
+
142
+ return (
143
+ <>
144
+ <h1>App B</h1>
145
+ <p>Value from provider: {value}</p>
146
+ <button onClick={() => sendMessageToProvider('Hello from B!')}>
147
+ Send Message to A
148
+ </button>
149
+ </>
150
+ )
151
+ }
152
+ ```
153
+
154
+ ## Resilience
155
+
156
+ The WebRTC connection is designed to be resilient. If the connection to the signaling server is temporarily lost, any established peer-to-peer connections will remain active. The client will attempt to reconnect to the signaling server in the background to handle any future connection negotiations.
157
+
67
158
  ## Development
68
159
 
69
160
  Run
@@ -1,6 +1,3 @@
1
- function _OverloadYield(e, d) {
2
- this.v = e, this.k = d;
3
- }
4
1
  function _arrayLikeToArray(r, a) {
5
2
  (null == a || a > r.length) && (a = r.length);
6
3
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
@@ -9,52 +6,6 @@ function _arrayLikeToArray(r, a) {
9
6
  function _arrayWithHoles(r) {
10
7
  if (Array.isArray(r)) return r;
11
8
  }
12
- function _assertThisInitialized(e) {
13
- if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
14
- return e;
15
- }
16
- function asyncGeneratorStep(n, t, e, r, o, a, c) {
17
- try {
18
- var i = n[a](c),
19
- u = i.value;
20
- } catch (n) {
21
- return void e(n);
22
- }
23
- i.done ? t(u) : Promise.resolve(u).then(r, o);
24
- }
25
- function _asyncToGenerator(n) {
26
- return function () {
27
- var t = this,
28
- e = arguments;
29
- return new Promise(function (r, o) {
30
- var a = n.apply(t, e);
31
- function _next(n) {
32
- asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
33
- }
34
- function _throw(n) {
35
- asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
36
- }
37
- _next(void 0);
38
- });
39
- };
40
- }
41
- function _callSuper(t, o, e) {
42
- return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
43
- }
44
- function _classCallCheck(a, n) {
45
- if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
46
- }
47
- function _defineProperties(e, r) {
48
- for (var t = 0; t < r.length; t++) {
49
- var o = r[t];
50
- o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
51
- }
52
- }
53
- function _createClass(e, r, t) {
54
- return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
55
- writable: false
56
- }), e;
57
- }
58
9
  function _createForOfIteratorHelper(r, e) {
59
10
  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
60
11
  if (!t) {
@@ -103,48 +54,6 @@ function _createForOfIteratorHelper(r, e) {
103
54
  }
104
55
  };
105
56
  }
106
- function _defineProperty(e, r, t) {
107
- return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
108
- value: t,
109
- enumerable: true,
110
- configurable: true,
111
- writable: true
112
- }) : e[r] = t, e;
113
- }
114
- function _get() {
115
- return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
116
- var p = _superPropBase(e, t);
117
- if (p) {
118
- var n = Object.getOwnPropertyDescriptor(p, t);
119
- return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
120
- }
121
- }, _get.apply(null, arguments);
122
- }
123
- function _getPrototypeOf(t) {
124
- return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
125
- return t.__proto__ || Object.getPrototypeOf(t);
126
- }, _getPrototypeOf(t);
127
- }
128
- function _inherits(t, e) {
129
- if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
130
- t.prototype = Object.create(e && e.prototype, {
131
- constructor: {
132
- value: t,
133
- writable: true,
134
- configurable: true
135
- }
136
- }), Object.defineProperty(t, "prototype", {
137
- writable: false
138
- }), e && _setPrototypeOf(t, e);
139
- }
140
- function _isNativeReflectConstruct() {
141
- try {
142
- var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
143
- } catch (t) {}
144
- return (_isNativeReflectConstruct = function () {
145
- return !!t;
146
- })();
147
- }
148
57
  function _iterableToArrayLimit(r, l) {
149
58
  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
150
59
  if (null != t) {
@@ -192,216 +101,9 @@ function _objectWithoutPropertiesLoose(r, e) {
192
101
  }
193
102
  return t;
194
103
  }
195
- function _possibleConstructorReturn(t, e) {
196
- if (e && ("object" == typeof e || "function" == typeof e)) return e;
197
- if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
198
- return _assertThisInitialized(t);
199
- }
200
- function _regenerator() {
201
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
202
- var e,
203
- t,
204
- r = "function" == typeof Symbol ? Symbol : {},
205
- n = r.iterator || "@@iterator",
206
- o = r.toStringTag || "@@toStringTag";
207
- function i(r, n, o, i) {
208
- var c = n && n.prototype instanceof Generator ? n : Generator,
209
- u = Object.create(c.prototype);
210
- return _regeneratorDefine(u, "_invoke", function (r, n, o) {
211
- var i,
212
- c,
213
- u,
214
- f = 0,
215
- p = o || [],
216
- y = false,
217
- G = {
218
- p: 0,
219
- n: 0,
220
- v: e,
221
- a: d,
222
- f: d.bind(e, 4),
223
- d: function (t, r) {
224
- return i = t, c = 0, u = e, G.n = r, a;
225
- }
226
- };
227
- function d(r, n) {
228
- for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
229
- var o,
230
- i = p[t],
231
- d = G.p,
232
- l = i[2];
233
- r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
234
- }
235
- if (o || r > 1) return a;
236
- throw y = true, n;
237
- }
238
- return function (o, p, l) {
239
- if (f > 1) throw TypeError("Generator is already running");
240
- for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
241
- i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
242
- try {
243
- if (f = 2, i) {
244
- if (c || (o = "next"), t = i[o]) {
245
- if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
246
- if (!t.done) return t;
247
- u = t.value, c < 2 && (c = 0);
248
- } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
249
- i = e;
250
- } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
251
- } catch (t) {
252
- i = e, c = 1, u = t;
253
- } finally {
254
- f = 1;
255
- }
256
- }
257
- return {
258
- value: t,
259
- done: y
260
- };
261
- };
262
- }(r, o, i), true), u;
263
- }
264
- var a = {};
265
- function Generator() {}
266
- function GeneratorFunction() {}
267
- function GeneratorFunctionPrototype() {}
268
- t = Object.getPrototypeOf;
269
- var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
270
- return this;
271
- }), t),
272
- u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
273
- function f(e) {
274
- return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
275
- }
276
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
277
- return this;
278
- }), _regeneratorDefine(u, "toString", function () {
279
- return "[object Generator]";
280
- }), (_regenerator = function () {
281
- return {
282
- w: i,
283
- m: f
284
- };
285
- })();
286
- }
287
- function _regeneratorAsync(n, e, r, t, o) {
288
- var a = _regeneratorAsyncGen(n, e, r, t, o);
289
- return a.next().then(function (n) {
290
- return n.done ? n.value : a.next();
291
- });
292
- }
293
- function _regeneratorAsyncGen(r, e, t, o, n) {
294
- return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise);
295
- }
296
- function _regeneratorAsyncIterator(t, e) {
297
- function n(r, o, i, f) {
298
- try {
299
- var c = t[r](o),
300
- u = c.value;
301
- return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) {
302
- n("next", t, i, f);
303
- }, function (t) {
304
- n("throw", t, i, f);
305
- }) : e.resolve(u).then(function (t) {
306
- c.value = t, i(c);
307
- }, function (t) {
308
- return n("throw", t, i, f);
309
- });
310
- } catch (t) {
311
- f(t);
312
- }
313
- }
314
- var r;
315
- this.next || (_regeneratorDefine(_regeneratorAsyncIterator.prototype), _regeneratorDefine(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
316
- return this;
317
- })), _regeneratorDefine(this, "_invoke", function (t, o, i) {
318
- function f() {
319
- return new e(function (e, r) {
320
- n(t, i, e, r);
321
- });
322
- }
323
- return r = r ? r.then(f, f) : f();
324
- }, true);
325
- }
326
- function _regeneratorDefine(e, r, n, t) {
327
- var i = Object.defineProperty;
328
- try {
329
- i({}, "", {});
330
- } catch (e) {
331
- i = 0;
332
- }
333
- _regeneratorDefine = function (e, r, n, t) {
334
- function o(r, n) {
335
- _regeneratorDefine(e, r, function (e) {
336
- return this._invoke(r, n, e);
337
- });
338
- }
339
- r ? i ? i(e, r, {
340
- value: n,
341
- enumerable: !t,
342
- configurable: !t,
343
- writable: !t
344
- }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
345
- }, _regeneratorDefine(e, r, n, t);
346
- }
347
- function _regeneratorKeys(e) {
348
- var n = Object(e),
349
- r = [];
350
- for (var t in n) r.unshift(t);
351
- return function e() {
352
- for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = false, e;
353
- return e.done = true, e;
354
- };
355
- }
356
- function _regeneratorValues(e) {
357
- if (null != e) {
358
- var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
359
- r = 0;
360
- if (t) return t.call(e);
361
- if ("function" == typeof e.next) return e;
362
- if (!isNaN(e.length)) return {
363
- next: function () {
364
- return e && r >= e.length && (e = void 0), {
365
- value: e && e[r++],
366
- done: !e
367
- };
368
- }
369
- };
370
- }
371
- throw new TypeError(typeof e + " is not iterable");
372
- }
373
- function _setPrototypeOf(t, e) {
374
- return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
375
- return t.__proto__ = e, t;
376
- }, _setPrototypeOf(t, e);
377
- }
378
104
  function _slicedToArray(r, e) {
379
105
  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
380
106
  }
381
- function _superPropBase(t, o) {
382
- for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)););
383
- return t;
384
- }
385
- function _superPropGet(t, o, e, r) {
386
- var p = _get(_getPrototypeOf(t.prototype ), o, e);
387
- return "function" == typeof p ? function (t) {
388
- return p.apply(e, t);
389
- } : p;
390
- }
391
- function _toPrimitive(t, r) {
392
- if ("object" != typeof t || !t) return t;
393
- var e = t[Symbol.toPrimitive];
394
- if (void 0 !== e) {
395
- var i = e.call(t, r);
396
- if ("object" != typeof i) return i;
397
- throw new TypeError("@@toPrimitive must return a primitive value.");
398
- }
399
- return (String )(t);
400
- }
401
- function _toPropertyKey(t) {
402
- var i = _toPrimitive(t, "string");
403
- return "symbol" == typeof i ? i : i + "";
404
- }
405
107
  function _unsupportedIterableToArray(r, a) {
406
108
  if (r) {
407
109
  if ("string" == typeof r) return _arrayLikeToArray(r, a);
@@ -409,74 +111,6 @@ function _unsupportedIterableToArray(r, a) {
409
111
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
410
112
  }
411
113
  }
412
- function _regeneratorRuntime() {
413
-
414
- var r = _regenerator(),
415
- e = r.m(_regeneratorRuntime),
416
- t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
417
- function n(r) {
418
- var e = "function" == typeof r && r.constructor;
419
- return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
420
- }
421
- var o = {
422
- throw: 1,
423
- return: 2,
424
- break: 3,
425
- continue: 3
426
- };
427
- function a(r) {
428
- var e, t;
429
- return function (n) {
430
- e || (e = {
431
- stop: function () {
432
- return t(n.a, 2);
433
- },
434
- catch: function () {
435
- return n.v;
436
- },
437
- abrupt: function (r, e) {
438
- return t(n.a, o[r], e);
439
- },
440
- delegateYield: function (r, o, a) {
441
- return e.resultName = o, t(n.d, _regeneratorValues(r), a);
442
- },
443
- finish: function (r) {
444
- return t(n.f, r);
445
- }
446
- }, t = function (r, t, o) {
447
- n.p = e.prev, n.n = e.next;
448
- try {
449
- return r(t, o);
450
- } finally {
451
- e.next = n.n;
452
- }
453
- }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
454
- try {
455
- return r.call(this, e);
456
- } finally {
457
- n.p = e.prev, n.n = e.next;
458
- }
459
- };
460
- }
461
- return (_regeneratorRuntime = function () {
462
- return {
463
- wrap: function (e, t, n, o) {
464
- return r.w(a(e), t, n, o && o.reverse());
465
- },
466
- isGeneratorFunction: n,
467
- mark: r.m,
468
- awrap: function (r, e) {
469
- return new _OverloadYield(r, e);
470
- },
471
- AsyncIterator: _regeneratorAsyncIterator,
472
- async: function (r, e, t, o, u) {
473
- return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u);
474
- },
475
- keys: _regeneratorKeys,
476
- values: _regeneratorValues
477
- };
478
- })();
479
- }
480
114
 
481
- export { _OverloadYield as OverloadYield, _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _assertThisInitialized as assertThisInitialized, _asyncToGenerator as asyncToGenerator, _callSuper as callSuper, _classCallCheck as classCallCheck, _createClass as createClass, _createForOfIteratorHelper as createForOfIteratorHelper, _defineProperty as defineProperty, _get as get, _getPrototypeOf as getPrototypeOf, _inherits as inherits, _isNativeReflectConstruct as isNativeReflectConstruct, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _possibleConstructorReturn as possibleConstructorReturn, _regenerator as regenerator, _regeneratorAsync as regeneratorAsync, _regeneratorAsyncGen as regeneratorAsyncGen, _regeneratorAsyncIterator as regeneratorAsyncIterator, _regeneratorDefine as regeneratorDefine, _regeneratorKeys as regeneratorKeys, _regeneratorRuntime as regeneratorRuntime, _regeneratorValues as regeneratorValues, _setPrototypeOf as setPrototypeOf, _slicedToArray as slicedToArray, _superPropBase as superPropBase, _superPropGet as superPropGet, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };
115
+ export { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _createForOfIteratorHelper as createForOfIteratorHelper, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _unsupportedIterableToArray as unsupportedIterableToArray };
482
116
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { slicedToArray as _slicedToArray, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { useState, useMemo } from 'react';
3
- import { Responder } from '../webrtc/Responder.js';
3
+ import { Responder } from '@device-portal/client';
4
4
 
5
5
  var responders = {};
6
6
  var useDevicePortalConsumer = function useDevicePortalConsumer(room) {
@@ -1 +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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"}
1
+ {"version":3,"file":"useDevicePortalConsumer.js","sources":["../../src/consumer/useDevicePortalConsumer.ts"],"sourcesContent":["import { useMemo, useState, type Dispatch, type SetStateAction } from 'react'\nimport { Responder } from '@device-portal/client'\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":";;;;AASA,IAAMA,UAUL,GAAG,EAAE;IAEOC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CACnCC,IAAY,EAIwC;AAAA,EAAA,IAHpDC,OAEC,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAEN,EAAA,IAAAG,SAAA,GAAoCC,QAAQ,CAAe,IAAI,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzDI,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEhC,EAAA,IAAMI,eAAe,GAAGC,OAAO,CAAC,YAAM;AACrC,IAAA,IAAI,CAACd,UAAU,CAACE,IAAI,CAAC,EAAE;AAAA,MAAA,IAAAa,cAAA,EAAAC,eAAA,EAAAC,KAAA;AACtBC,MAAAA,OAAO,CAACC,GAAG,CAAA,6DAAA,CAAAC,MAAA,CACoDlB,IAAI,CACnE,CAAC;AACD,MAAA,IAAMmB,aAAa,GAAG,SAAhBA,aAAaA,GAAS;AAC3B,QAAA,IAAIC,OAAgC;AACpC,QAAA,IAAIC,MAA8B;QAClC,IAAMC,OAAO,GAAG,IAAIC,OAAO,CAAS,UAACC,GAAG,EAAEC,GAAG,EAAK;AACjDL,UAAAA,OAAO,GAAGI,GAAG;AACbH,UAAAA,MAAM,GAAGI,GAAG;AACb,SAAC,CAAC;QACF,OAAO;AAAEH,UAAAA,OAAO,EAAPA,OAAO;AAAEF,UAAAA,OAAO,EAAEA,OAAQ;AAAEC,UAAAA,MAAM,EAAEA;SAAS;OACtD;AAED,MAAA,IAAAK,IAAA,GAAA,CAAAb,cAAA,GAAA,CAAAC,eAAA,GACC,CAAAC,KAAA,GAACQ,OAAO,EAASJ,aAAa,MAAAL,IAAAA,IAAAA,eAAA,KAA9BA,MAAAA,GAAAA,MAAAA,GAAAA,eAAA,CAAAa,IAAA,CAAAZ,KAAiC,CAAC,MAAA,IAAA,IAAAF,cAAA,KAAA,MAAA,GAAAA,cAAA,GAAIM,aAAa,EAAE;QADrCS,iBAAiB,GAAAF,IAAA,CAA1BJ,OAAO;QAA8BO,iBAAiB,GAAAH,IAAA,CAA1BN,OAAO;AAG3C,MAAA,IAAMU,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,KAAa,EAAK;QAChDjC,UAAU,CAACE,IAAI,CAAC,CAACgC,SAAS,CAACC,IAAI,CAACF,KAAK,CAAC;OACtC;AAED,MAAA,IAAMC,SAAS,GAAG,IAAIE,SAAS,CAAClC,IAAI,EAAE;AACrCmC,QAAAA,SAAS,EAAE,SAAXA,SAASA,CAAGJ,OAAK,EAAEK,MAAM,EAAK;AAC7B,UAAA,IAAMC,QAAQ,GAAG;AAAEN,YAAAA,KAAK,EAALA,OAAK;AAAED,YAAAA,qBAAqB,EAArBA;WAAuB;AACjDhC,UAAAA,UAAU,CAACE,IAAI,CAAC,CAACqC,QAAQ,GAAGA,QAAQ;UAAA,IAAAC,SAAA,GAAAC,0BAAA,CACbzC,UAAU,CAACE,IAAI,CAAC,CAACwC,cAAc,CAAA;YAAAC,KAAA;AAAA,UAAA,IAAA;YAAtD,KAAAH,SAAA,CAAAI,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAH,SAAA,CAAAK,CAAA,EAAAC,EAAAA,IAAA,GAAwD;AAAA,cAAA,IAA7CC,QAAQ,GAAAJ,KAAA,CAAAV,KAAA;AAClBc,cAAAA,QAAQ,CAAC;AAAE7C,gBAAAA,IAAI,EAAJA,IAAI;AAAE+B,gBAAAA,KAAK,EAALA,OAAK;AAAED,gBAAAA,qBAAqB,EAArBA;AAAsB,eAAC,CAAC;AACjD;AAAC,WAAA,CAAA,OAAAgB,GAAA,EAAA;YAAAR,SAAA,CAAAS,CAAA,CAAAD,GAAA,CAAA;AAAA,WAAA,SAAA;AAAAR,YAAAA,SAAA,CAAAU,CAAA,EAAA;AAAA;UACDnB,iBAAiB,CAACE,OAAK,CAAC;SACxB;AACDkB,QAAAA,kCAAkC,EAAE,KAAK;QACzCC,wBAAwB,EAAEjD,OAAO,CAACiD;AACnC,OAAC,CAAC;MAEFpD,UAAU,CAACE,IAAI,CAAC,GAAG;AAClBgC,QAAAA,SAAS,EAATA,SAAS;AACTJ,QAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBS,QAAAA,QAAQ,EAAE,IAAI;QACdG,cAAc,EAAE,IAAIW,GAAG;OACvB;AACF;IAEArD,UAAU,CAACE,IAAI,CAAC,CAACwC,cAAc,CAACY,GAAG,CAAC1C,aAAa,CAAC;AAElD,IAAA,OAAOZ,UAAU,CAACE,IAAI,CAAC,CAACqC,QAAQ;GAChC,EAAE,CAACrC,IAAI,EAAEC,OAAO,CAACiD,wBAAwB,EAAExC,aAAa,CAAC,CAAC;;AAE3D;AACA;;AAEA,EAAA,IAAID,UAAU,IAAIA,UAAU,CAACT,IAAI,KAAKA,IAAI,EAAE;IAC3C,OAAO;MACN+B,KAAK,EAAEtB,UAAU,CAACsB,KAAK;MACvBD,qBAAqB,EAAErB,UAAU,CAACqB;KAClC;AACF;AAEA,EAAA,IAAInB,eAAe,EAAE;AACpB,IAAA,OAAOA,eAAe;AACvB;AAEA,EAAA,MAAMb,UAAU,CAACE,IAAI,CAAC,CAAC4B,iBAAiB;AACzC;;;;"}
@@ -1 +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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"}
1
+ {"version":3,"file":"DevicePortalProvider.js","sources":["../../src/provider/DevicePortalProvider.tsx"],"sourcesContent":["import { Fragment, type FunctionComponent, type ReactNode } from 'react'\nimport { type Initiator, type PeerId } from '@device-portal/client'\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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"}
@@ -1 +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;;;;"}
1
+ {"version":3,"file":"useDevicePortalPeer.js","sources":["../../src/provider/useDevicePortalPeer.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Initiator, type PeerId } from '@device-portal/client'\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":";;AAQO,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;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { useState, useRef, useEffect } from 'react';
3
- import { Initiator } from '../webrtc/Initiator.js';
3
+ import { Initiator } from '@device-portal/client';
4
4
 
5
5
  // @TODO: warn if one room is used by multiple useDevicePortalProvider hooks more than once at the same time
6
6
 
@@ -1 +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;;;;"}
1
+ {"version":3,"file":"useDevicePortalProvider.js","sources":["../../src/provider/useDevicePortalProvider.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { Initiator, type PeerId } from '@device-portal/client'\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":";;;;AAGA;;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;;;;"}