@norgate-av/react-crestron-ch5-hooks 1.0.0

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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +914 -0
  3. package/dist/hooks/index.d.ts +18 -0
  4. package/dist/hooks/useCrestronAnalog/index.d.ts +11 -0
  5. package/dist/hooks/useCrestronAnalogCollection/index.d.ts +12 -0
  6. package/dist/hooks/useCrestronDigital/index.d.ts +11 -0
  7. package/dist/hooks/useCrestronDigitalCollection/index.d.ts +12 -0
  8. package/dist/hooks/useCrestronPublishAnalog/index.d.ts +9 -0
  9. package/dist/hooks/useCrestronPublishAnalogCollection/index.d.ts +10 -0
  10. package/dist/hooks/useCrestronPublishDigital/index.d.ts +9 -0
  11. package/dist/hooks/useCrestronPublishDigitalCollection/index.d.ts +10 -0
  12. package/dist/hooks/useCrestronPublishSerial/index.d.ts +9 -0
  13. package/dist/hooks/useCrestronPublishSerialCollection/index.d.ts +10 -0
  14. package/dist/hooks/useCrestronSerial/index.d.ts +11 -0
  15. package/dist/hooks/useCrestronSerialCollection/index.d.ts +12 -0
  16. package/dist/hooks/useCrestronSubscribeAnalog/index.d.ts +11 -0
  17. package/dist/hooks/useCrestronSubscribeAnalogCollection/index.d.ts +12 -0
  18. package/dist/hooks/useCrestronSubscribeDigital/index.d.ts +11 -0
  19. package/dist/hooks/useCrestronSubscribeDigitalCollection/index.d.ts +12 -0
  20. package/dist/hooks/useCrestronSubscribeSerial/index.d.ts +11 -0
  21. package/dist/hooks/useCrestronSubscribeSerialCollection/index.d.ts +12 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.js +8 -0
  24. package/dist/react-crestron-ch5-hooks.cjs.development.js +643 -0
  25. package/dist/react-crestron-ch5-hooks.cjs.development.js.map +1 -0
  26. package/dist/react-crestron-ch5-hooks.cjs.production.min.js +2 -0
  27. package/dist/react-crestron-ch5-hooks.cjs.production.min.js.map +1 -0
  28. package/dist/react-crestron-ch5-hooks.esm.js +602 -0
  29. package/dist/react-crestron-ch5-hooks.esm.js.map +1 -0
  30. package/dist/react-crestron-ch5-hooks.umd.development.js +645 -0
  31. package/dist/react-crestron-ch5-hooks.umd.development.js.map +1 -0
  32. package/dist/react-crestron-ch5-hooks.umd.production.min.js +2 -0
  33. package/dist/react-crestron-ch5-hooks.umd.production.min.js.map +1 -0
  34. package/dist/types/Analog/index.d.ts +1 -0
  35. package/dist/types/AnalogStateCallback/index.d.ts +3 -0
  36. package/dist/types/Digital/index.d.ts +1 -0
  37. package/dist/types/DigitalStateCallback/index.d.ts +3 -0
  38. package/dist/types/IAnalogEventAction/index.d.ts +4 -0
  39. package/dist/types/IAnalogSignal/index.d.ts +5 -0
  40. package/dist/types/IAnalogState/index.d.ts +4 -0
  41. package/dist/types/IBaseEventAction/index.d.ts +3 -0
  42. package/dist/types/IBaseSignal/index.d.ts +4 -0
  43. package/dist/types/IBaseState/index.d.ts +3 -0
  44. package/dist/types/IDigitalEventAction/index.d.ts +7 -0
  45. package/dist/types/IDigitalSignal/index.d.ts +5 -0
  46. package/dist/types/IDigitalState/index.d.ts +4 -0
  47. package/dist/types/ISerialEventAction/index.d.ts +4 -0
  48. package/dist/types/ISerialSignal/index.d.ts +5 -0
  49. package/dist/types/ISerialState/index.d.ts +4 -0
  50. package/dist/types/IStateSubscription/index.d.ts +4 -0
  51. package/dist/types/Serial/index.d.ts +1 -0
  52. package/dist/types/SerialStateCallback/index.d.ts +3 -0
  53. package/dist/types/StateCallback/index.d.ts +1 -0
  54. package/dist/types/index.d.ts +20 -0
  55. package/dist/utils/getSignalCollection.d.ts +3 -0
  56. package/dist/utils/index.d.ts +1 -0
  57. package/package.json +135 -0
@@ -0,0 +1,602 @@
1
+ import { publishEvent, subscribeState, unsubscribeState } from '@crestron/ch5-crcomlib';
2
+ import CrestronCH5 from '@norgate-av/crestron-ch5-helper';
3
+ import { useState, useRef, useEffect } from 'react';
4
+
5
+ /**
6
+ * `useCrestronPublishAnalog` is a hook that returns an object with a setValue function.
7
+ * @param {string} signalName - The name of the signal you want to publish to.
8
+ * @returns An array with a single IAnalogEventAction object.
9
+ */
10
+
11
+ function useCrestronPublishAnalog(signalName) {
12
+ return [{
13
+ setValue: function setValue(value) {
14
+ return publishEvent(CrestronCH5.SignalType.Number, signalName, value);
15
+ }
16
+ }];
17
+ }
18
+ var useCrestronPublishNumber = useCrestronPublishAnalog;
19
+
20
+ /**
21
+ * `useCrestronSubscribeAnalog` is a hook that returns an object with a value property.
22
+ * @param {string} signalName - The name of the signal you want to subscribe to.
23
+ * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state
24
+ * changes.
25
+ * @returns An array with a single IAnalogState object.
26
+ */
27
+
28
+ function useCrestronSubscribeAnalog(signalName, callback) {
29
+ var _useState = useState(0),
30
+ state = _useState[0],
31
+ setState = _useState[1];
32
+
33
+ var callbackRef = useRef();
34
+ useEffect(function () {
35
+ callbackRef.current = callback;
36
+ }, [callback]);
37
+ useEffect(function () {
38
+ var signalType = CrestronCH5.SignalType.Number;
39
+ var id = subscribeState(signalType, signalName, function (value) {
40
+ setState(value);
41
+
42
+ if (callbackRef.current) {
43
+ callbackRef.current(value, signalName);
44
+ }
45
+ });
46
+ return function () {
47
+ unsubscribeState(signalType, signalName, id);
48
+ };
49
+ }, [signalName]);
50
+ return [{
51
+ value: state
52
+ }];
53
+ }
54
+ var useCrestronSubscribeNumber = useCrestronSubscribeAnalog;
55
+
56
+ /**
57
+ * `useCrestronAnalog` is a hook that returns an object with a state and action property.
58
+ * @param {string} signalName - The name of the signal you want to use.
59
+ * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal
60
+ * changes.
61
+ * @returns An array with a single IAnalogSignal object.
62
+ */
63
+
64
+ function useCrestronAnalog(signalName, callback) {
65
+ var _useCrestronSubscribe = useCrestronSubscribeAnalog(signalName, callback),
66
+ state = _useCrestronSubscribe[0];
67
+
68
+ var _useCrestronPublishAn = useCrestronPublishAnalog(signalName),
69
+ action = _useCrestronPublishAn[0];
70
+
71
+ return [{
72
+ state: state,
73
+ action: action
74
+ }];
75
+ }
76
+ var useCrestronNumber = useCrestronAnalog;
77
+
78
+ /**
79
+ * `useCrestronPublishDigital` is a hook that returns an object with setValue, push, release and click functions.
80
+ * @param {string} signalName - The name of the signal you want to publish to.
81
+ * @returns An array with a single IDigitalEventAction object.
82
+ */
83
+
84
+ function useCrestronPublishDigital(signalName) {
85
+ var signalType = CrestronCH5.SignalType.Boolean;
86
+
87
+ var setValue = function setValue(value) {
88
+ publishEvent(signalType, signalName, value);
89
+ };
90
+
91
+ var push = function push() {
92
+ setValue(true);
93
+ };
94
+
95
+ var release = function release() {
96
+ setValue(false);
97
+ };
98
+
99
+ var click = function click() {
100
+ push();
101
+ release();
102
+ }; // const hold = (duration: number, callback: () => void) => {
103
+ // push();
104
+ // setTimeout(() => {
105
+ // release();
106
+ // callback();
107
+ // }, duration);
108
+ // };
109
+
110
+
111
+ return [{
112
+ setValue: setValue,
113
+ push: push,
114
+ release: release,
115
+ click: click
116
+ }];
117
+ }
118
+ var useCrestronPublishBoolean = useCrestronPublishDigital;
119
+
120
+ /**
121
+ * `useCrestronSubscribeDigital` is a hook that returns an object with a value property.
122
+ * @param {string} signalName - The name of the signal you want to subscribe to.
123
+ * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state
124
+ * changes.
125
+ * @returns An array with a single IDigitalState object.
126
+ */
127
+
128
+ function useCrestronSubscribeDigital(signalName, callback) {
129
+ var _useState = useState(false),
130
+ state = _useState[0],
131
+ setState = _useState[1];
132
+
133
+ var callbackRef = useRef();
134
+ useEffect(function () {
135
+ callbackRef.current = callback;
136
+ }, [callback]);
137
+ useEffect(function () {
138
+ var signalType = CrestronCH5.SignalType.Boolean;
139
+ var id = subscribeState(signalType, signalName, function (value) {
140
+ setState(value);
141
+
142
+ if (callbackRef.current) {
143
+ callbackRef.current(value, signalName);
144
+ }
145
+ });
146
+ return function () {
147
+ unsubscribeState(signalType, signalName, id);
148
+ };
149
+ }, [signalName]);
150
+ return [{
151
+ value: state
152
+ }];
153
+ }
154
+ var useCrestronSubscribeBoolean = useCrestronSubscribeDigital;
155
+
156
+ /**
157
+ * `useCrestronDigital` is a hook that returns an object with a state and action property.
158
+ * @param {string} signalName - The name of the signal you want to use.
159
+ * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal
160
+ * changes.
161
+ * @returns An array with a single IDigitalSignal object
162
+ */
163
+
164
+ function useCrestronDigital(signalName, callback) {
165
+ var _useCrestronSubscribe = useCrestronSubscribeDigital(signalName, callback),
166
+ state = _useCrestronSubscribe[0];
167
+
168
+ var _useCrestronPublishDi = useCrestronPublishDigital(signalName),
169
+ action = _useCrestronPublishDi[0];
170
+
171
+ return [{
172
+ state: state,
173
+ action: action
174
+ }];
175
+ }
176
+ var useCrestronBoolean = useCrestronDigital;
177
+
178
+ /**
179
+ * `useCrestronPublishSerial` is a hook that returns an object with a setValue function.
180
+ * @param {string} signalName - The name of the signal you want to publish to.
181
+ * @returns An array with a single ISerialEventAction object.
182
+ */
183
+
184
+ function useCrestronPublishSerial(signalName) {
185
+ return [{
186
+ setValue: function setValue(value) {
187
+ return publishEvent(CrestronCH5.SignalType.String, signalName, value);
188
+ }
189
+ }];
190
+ }
191
+ var useCrestronPublishString = useCrestronPublishSerial;
192
+
193
+ /**
194
+ * `useCrestronSubscribeSerial` is a hook that returns an object with a value property.
195
+ * @param {string} signalName - The name of the signal you want to subscribe to.
196
+ * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state
197
+ * changes.
198
+ * @returns An array with a single ISerialState object.
199
+ */
200
+
201
+ function useCrestronSubscribeSerial(signalName, callback) {
202
+ var _useState = useState(""),
203
+ state = _useState[0],
204
+ setState = _useState[1];
205
+
206
+ var callbackRef = useRef();
207
+ useEffect(function () {
208
+ callbackRef.current = callback;
209
+ }, [callback]);
210
+ useEffect(function () {
211
+ var signalType = CrestronCH5.SignalType.String;
212
+ var id = subscribeState(signalType, signalName, function (value) {
213
+ setState(value);
214
+
215
+ if (callbackRef.current) {
216
+ callbackRef.current(value, signalName);
217
+ }
218
+ });
219
+ return function () {
220
+ unsubscribeState(signalType, signalName, id);
221
+ };
222
+ }, [signalName]);
223
+ return [{
224
+ value: state
225
+ }];
226
+ }
227
+ var useCrestronSubscribeString = useCrestronSubscribeSerial;
228
+
229
+ /**
230
+ * `useCrestronSerial` is a hook that returns an object with a state and action property.
231
+ * @param {string} signalName - The name of the signal you want to use.
232
+ * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal
233
+ * changes.
234
+ * @returns An array with a single ISerialSignal object.
235
+ */
236
+
237
+ function useCrestronSerial(signalName, callback) {
238
+ var _useCrestronSubscribe = useCrestronSubscribeSerial(signalName, callback),
239
+ state = _useCrestronSubscribe[0];
240
+
241
+ var _useCrestronPublishSe = useCrestronPublishSerial(signalName),
242
+ action = _useCrestronPublishSe[0];
243
+
244
+ return [{
245
+ state: state,
246
+ action: action
247
+ }];
248
+ }
249
+ var useCrestronString = useCrestronSerial;
250
+
251
+ function getSignalCollection(length, state, action) {
252
+ var signals = []; // eslint-disable-next-line no-plusplus
253
+
254
+ for (var index = 0; index < length; index++) {
255
+ signals.push({
256
+ state: state[index],
257
+ action: action[index]
258
+ });
259
+ }
260
+
261
+ return signals;
262
+ }
263
+
264
+ /**
265
+ * `useCrestronPublishAnalogCollection` is a hook that returns an array of objects each with a setValue function.
266
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
267
+ * to publish to.
268
+ * @returns An array of IAnalogEventAction objects.
269
+ */
270
+
271
+ function useCrestronPublishAnalogCollection(signalNames) {
272
+ var signalType = CrestronCH5.SignalType.Number;
273
+ var actions = [];
274
+ signalNames.forEach(function (signalName) {
275
+ actions.push({
276
+ setValue: function setValue(value) {
277
+ return publishEvent(signalType, signalName, value);
278
+ }
279
+ });
280
+ });
281
+ return actions;
282
+ }
283
+ var useCrestronPublishNumberCollection = useCrestronPublishAnalogCollection;
284
+
285
+ function _extends() {
286
+ _extends = Object.assign || function (target) {
287
+ for (var i = 1; i < arguments.length; i++) {
288
+ var source = arguments[i];
289
+
290
+ for (var key in source) {
291
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
292
+ target[key] = source[key];
293
+ }
294
+ }
295
+ }
296
+
297
+ return target;
298
+ };
299
+
300
+ return _extends.apply(this, arguments);
301
+ }
302
+
303
+ /**
304
+ * `useCrestronSubscribeAnalogCollection` is a hook that returns an array of objects each with a value property.
305
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
306
+ * to subscribe to.
307
+ * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the
308
+ * state changes.
309
+ * @returns An array of IAnalogState objects.
310
+ */
311
+
312
+ function useCrestronSubscribeAnalogCollection(signalNames, callback) {
313
+ var _useState = useState(Array.from({
314
+ length: signalNames.length
315
+ }).fill({
316
+ value: 0
317
+ })),
318
+ state = _useState[0],
319
+ setState = _useState[1];
320
+
321
+ var callbackRef = useRef();
322
+ useEffect(function () {
323
+ callbackRef.current = callback;
324
+ }, [callback]);
325
+ useEffect(function () {
326
+ var signalType = CrestronCH5.SignalType.Number;
327
+ var subscriptions = [];
328
+ signalNames.forEach(function (signalName, index) {
329
+ var id = subscribeState(signalType, signalName, function (value) {
330
+ setState(function (prevState) {
331
+ var newState = [].concat(prevState);
332
+ newState[index] = _extends({}, newState[index], {
333
+ value: value
334
+ });
335
+ return newState;
336
+ });
337
+
338
+ if (callbackRef.current) {
339
+ callbackRef.current(value, signalName);
340
+ }
341
+ });
342
+ subscriptions.push({
343
+ id: id,
344
+ signalName: signalName
345
+ });
346
+ });
347
+
348
+ var unsubscribeAll = function unsubscribeAll() {
349
+ subscriptions.forEach(function (_ref) {
350
+ var id = _ref.id,
351
+ signalName = _ref.signalName;
352
+ unsubscribeState(signalType, signalName, id);
353
+ });
354
+ };
355
+
356
+ return function () {
357
+ unsubscribeAll();
358
+ };
359
+ }, []);
360
+ return state;
361
+ }
362
+ var useCrestronSubscribeNumberCollection = useCrestronSubscribeAnalogCollection;
363
+
364
+ /**
365
+ * `useCrestronAnalogCollection` is a hook that returns an array of objects each with state and action properties.
366
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
367
+ * to use.
368
+ * @param {AnalogStateCallback} [callback] - A optional callback function that will be called whenever the state of
369
+ * the signal changes.
370
+ * @returns An array of IAnalogSignal objects.
371
+ */
372
+
373
+ function useCrestronAnalogCollection(signalNames, callback) {
374
+ var state = useCrestronSubscribeAnalogCollection(signalNames, callback);
375
+ var action = useCrestronPublishAnalogCollection(signalNames);
376
+ return getSignalCollection(signalNames.length, state, action);
377
+ }
378
+ var useCrestronNumberCollection = useCrestronAnalogCollection;
379
+
380
+ /**
381
+ * `useCrestronPublishDigitalCollection` is a hook that returns an array of objects each with setValue, push, release and click functions.
382
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
383
+ * to publish to.
384
+ * @returns An array of IDigitalEventAction objects.
385
+ */
386
+
387
+ function useCrestronPublishDigitalCollection(signalNames) {
388
+ var signalType = CrestronCH5.SignalType.Boolean;
389
+ var actions = [];
390
+ signalNames.forEach(function (signalName) {
391
+ var setValue = function setValue(value) {
392
+ publishEvent(signalType, signalName, value);
393
+ };
394
+
395
+ var push = function push() {
396
+ setValue(true);
397
+ };
398
+
399
+ var release = function release() {
400
+ setValue(false);
401
+ };
402
+
403
+ var click = function click() {
404
+ push();
405
+ release();
406
+ }; // const hold = (duration: number, callback: () => void) => {
407
+ // push();
408
+ // setTimeout(() => {
409
+ // release();
410
+ // callback();
411
+ // }, duration);
412
+ // };
413
+
414
+
415
+ actions.push({
416
+ setValue: setValue,
417
+ push: push,
418
+ release: release,
419
+ click: click
420
+ });
421
+ });
422
+ return actions;
423
+ }
424
+ var useCrestronPublishBooleanCollection = useCrestronPublishDigitalCollection;
425
+
426
+ /**
427
+ * `useCrestronSubscribeDigitalCollection` is a hook that returns an array of objects each with a value property.
428
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
429
+ * to subscribe to.
430
+ * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the
431
+ * state changes.
432
+ * @returns An array of IDigitalState objects.
433
+ */
434
+
435
+ function useCrestronSubscribeDigitalCollection(signalNames, callback) {
436
+ var _useState = useState(Array.from({
437
+ length: signalNames.length
438
+ }).fill({
439
+ value: false
440
+ })),
441
+ state = _useState[0],
442
+ setState = _useState[1];
443
+
444
+ var callbackRef = useRef();
445
+ useEffect(function () {
446
+ callbackRef.current = callback;
447
+ }, [callback]);
448
+ useEffect(function () {
449
+ var signalType = CrestronCH5.SignalType.Boolean;
450
+ var subscriptions = [];
451
+ signalNames.forEach(function (signalName, index) {
452
+ var id = subscribeState(signalType, signalName, function (value) {
453
+ setState(function (prevState) {
454
+ var newState = [].concat(prevState);
455
+ newState[index] = _extends({}, newState[index], {
456
+ value: value
457
+ });
458
+ return newState;
459
+ });
460
+
461
+ if (callbackRef.current) {
462
+ callbackRef.current(value, signalName);
463
+ }
464
+ });
465
+ subscriptions.push({
466
+ id: id,
467
+ signalName: signalName
468
+ });
469
+ });
470
+
471
+ var unsubscribeAll = function unsubscribeAll() {
472
+ subscriptions.forEach(function (_ref) {
473
+ var id = _ref.id,
474
+ signalName = _ref.signalName;
475
+ unsubscribeState(signalType, signalName, id);
476
+ });
477
+ };
478
+
479
+ return function () {
480
+ unsubscribeAll();
481
+ };
482
+ }, []);
483
+ return state;
484
+ }
485
+ var useCrestronSubscribeBooleanCollection = useCrestronSubscribeDigitalCollection;
486
+
487
+ /**
488
+ * `useCrestronDigitalCollection` is a hook that returns an array of objects each with state and action properties.
489
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
490
+ * to use.
491
+ * @param {DigitalStateCallback} [callback] - A optional callback function that will be called whenever the state of
492
+ * the signal changes.
493
+ * @returns An array of IDigitalSignal objects.
494
+ */
495
+
496
+ function useCrestronDigitalCollection(signalNames, callback) {
497
+ var state = useCrestronSubscribeDigitalCollection(signalNames, callback);
498
+ var action = useCrestronPublishDigitalCollection(signalNames);
499
+ return getSignalCollection(signalNames.length, state, action);
500
+ }
501
+ var useCrestronBooleanCollection = useCrestronDigitalCollection;
502
+
503
+ /**
504
+ * `useCrestronPublishSerialCollection` is a hook that returns an array of objects each with a setValue function.
505
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
506
+ * to publish to.
507
+ * @returns An array of ISerialEventAction objects.
508
+ */
509
+
510
+ function useCrestronPublishSerialCollection(signalNames) {
511
+ var signalType = CrestronCH5.SignalType.String;
512
+ var actions = [];
513
+ signalNames.forEach(function (signalName) {
514
+ actions.push({
515
+ setValue: function setValue(value) {
516
+ return publishEvent(signalType, signalName, value);
517
+ }
518
+ });
519
+ });
520
+ return actions;
521
+ }
522
+ var useCrestronPublishStringCollection = useCrestronPublishSerialCollection;
523
+
524
+ /**
525
+ * `useCrestronSubscribeSerialCollection` is a hook that returns an array of objects each with a value property.
526
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
527
+ * to subscribe to.
528
+ * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the
529
+ * state changes.
530
+ * @returns An array of ISerialState objects.
531
+ */
532
+
533
+ function useCrestronSubscribeSerialCollection(signalNames, callback) {
534
+ var _useState = useState(Array.from({
535
+ length: signalNames.length
536
+ }).fill({
537
+ value: ""
538
+ })),
539
+ state = _useState[0],
540
+ setState = _useState[1];
541
+
542
+ var callbackRef = useRef();
543
+ useEffect(function () {
544
+ callbackRef.current = callback;
545
+ }, [callback]);
546
+ useEffect(function () {
547
+ var signalType = CrestronCH5.SignalType.String;
548
+ var subscriptions = [];
549
+ signalNames.forEach(function (signalName, index) {
550
+ var id = subscribeState(signalType, signalName, function (value) {
551
+ setState(function (prevState) {
552
+ var newState = [].concat(prevState);
553
+ newState[index] = _extends({}, newState[index], {
554
+ value: value
555
+ });
556
+ return newState;
557
+ });
558
+
559
+ if (callbackRef.current) {
560
+ callbackRef.current(value, signalName);
561
+ }
562
+ });
563
+ subscriptions.push({
564
+ id: id,
565
+ signalName: signalName
566
+ });
567
+ });
568
+
569
+ var unsubscribeAll = function unsubscribeAll() {
570
+ subscriptions.forEach(function (_ref) {
571
+ var id = _ref.id,
572
+ signalName = _ref.signalName;
573
+ unsubscribeState(signalType, signalName, id);
574
+ });
575
+ };
576
+
577
+ return function () {
578
+ unsubscribeAll();
579
+ };
580
+ }, []);
581
+ return state;
582
+ }
583
+ var useCrestronSubscribeStringCollection = useCrestronSubscribeSerialCollection;
584
+
585
+ /**
586
+ * `useCrestronSerialCollection` is a hook that returns an array of objects each with state and action properties.
587
+ * @param {string[]} signalNames - An array of strings that represent the names of the signals you want
588
+ * to use.
589
+ * @param {SerialStateCallback} [callback] - A optional callback function that will be called whenever the state of
590
+ * the signal changes.
591
+ * @returns An array of ISerialSignal objects.
592
+ */
593
+
594
+ function useCrestronSerialCollection(signalNames, callback) {
595
+ var state = useCrestronSubscribeSerialCollection(signalNames, callback);
596
+ var action = useCrestronPublishSerialCollection(signalNames);
597
+ return getSignalCollection(signalNames.length, state, action);
598
+ }
599
+ var useCrestronStringCollection = useCrestronSerialCollection;
600
+
601
+ export { useCrestronAnalog, useCrestronAnalogCollection, useCrestronBoolean, useCrestronBooleanCollection, useCrestronDigital, useCrestronDigitalCollection, useCrestronNumber, useCrestronNumberCollection, useCrestronPublishAnalog, useCrestronPublishAnalogCollection, useCrestronPublishBoolean, useCrestronPublishBooleanCollection, useCrestronPublishDigital, useCrestronPublishDigitalCollection, useCrestronPublishNumber, useCrestronPublishNumberCollection, useCrestronPublishSerial, useCrestronPublishSerialCollection, useCrestronPublishString, useCrestronPublishStringCollection, useCrestronSerial, useCrestronSerialCollection, useCrestronString, useCrestronStringCollection, useCrestronSubscribeAnalog, useCrestronSubscribeAnalogCollection, useCrestronSubscribeBoolean, useCrestronSubscribeBooleanCollection, useCrestronSubscribeDigital, useCrestronSubscribeDigitalCollection, useCrestronSubscribeNumber, useCrestronSubscribeNumberCollection, useCrestronSubscribeSerial, useCrestronSubscribeSerialCollection, useCrestronSubscribeString, useCrestronSubscribeStringCollection };
602
+ //# sourceMappingURL=react-crestron-ch5-hooks.esm.js.map