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