@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 @@
1
+ {"version":3,"file":"react-crestron-ch5-hooks.umd.development.js","sources":["../src/hooks/useCrestronPublishAnalog/index.ts","../src/hooks/useCrestronSubscribeAnalog/index.ts","../src/hooks/useCrestronAnalog/index.ts","../src/hooks/useCrestronPublishDigital/index.ts","../src/hooks/useCrestronSubscribeDigital/index.ts","../src/hooks/useCrestronDigital/index.ts","../src/hooks/useCrestronPublishSerial/index.ts","../src/hooks/useCrestronSubscribeSerial/index.ts","../src/hooks/useCrestronSerial/index.ts","../src/utils/getSignalCollection.ts","../src/hooks/useCrestronPublishAnalogCollection/index.ts","../src/hooks/useCrestronSubscribeAnalogCollection/index.ts","../src/hooks/useCrestronAnalogCollection/index.ts","../src/hooks/useCrestronPublishDigitalCollection/index.ts","../src/hooks/useCrestronSubscribeDigitalCollection/index.ts","../src/hooks/useCrestronDigitalCollection/index.ts","../src/hooks/useCrestronPublishSerialCollection/index.ts","../src/hooks/useCrestronSubscribeSerialCollection/index.ts","../src/hooks/useCrestronSerialCollection/index.ts"],"sourcesContent":["import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IAnalogEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishAnalog` is a hook that returns an object with a setValue function.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single IAnalogEventAction object.\n */\nexport function useCrestronPublishAnalog(\n signalName: string,\n): [IAnalogEventAction] {\n return [\n {\n setValue: (value: number) =>\n publishEvent(CrestronCH5.SignalType.Number, signalName, value),\n },\n ];\n}\n\nexport default useCrestronPublishAnalog;\nexport const useCrestronPublishNumber = useCrestronPublishAnalog;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { AnalogStateCallback, IAnalogState } from \"../../types\";\n\n/**\n * `useCrestronSubscribeAnalog` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single IAnalogState object.\n */\nexport function useCrestronSubscribeAnalog(\n signalName: string,\n callback?: AnalogStateCallback,\n): [IAnalogState] {\n const [state, setState] = useState<number>(0);\n const callbackRef = useRef<AnalogStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Number;\n const id = subscribeState(signalType, signalName, (value: number) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeAnalog;\nexport const useCrestronSubscribeNumber = useCrestronSubscribeAnalog;\n","import { AnalogStateCallback, IAnalogSignal } from \"../../types\";\nimport { useCrestronPublishAnalog } from \"../useCrestronPublishAnalog\";\nimport { useCrestronSubscribeAnalog } from \"../useCrestronSubscribeAnalog\";\n\n/**\n * `useCrestronAnalog` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single IAnalogSignal object.\n */\nexport function useCrestronAnalog(\n signalName: string,\n callback?: AnalogStateCallback,\n): [IAnalogSignal] {\n const [state] = useCrestronSubscribeAnalog(signalName, callback);\n const [action] = useCrestronPublishAnalog(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronAnalog;\nexport const useCrestronNumber = useCrestronAnalog;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IDigitalEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishDigital` is a hook that returns an object with setValue, push, release and click functions.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single IDigitalEventAction object.\n */\nexport function useCrestronPublishDigital(\n signalName: string,\n): [IDigitalEventAction] {\n const signalType = CrestronCH5.SignalType.Boolean;\n\n const setValue = (value: boolean) => {\n publishEvent(signalType, signalName, value);\n };\n\n const push = () => {\n setValue(true);\n };\n\n const release = () => {\n setValue(false);\n };\n\n const click = () => {\n push();\n release();\n };\n\n // const hold = (duration: number, callback: () => void) => {\n // push();\n\n // setTimeout(() => {\n // release();\n // callback();\n // }, duration);\n // };\n\n return [\n {\n setValue,\n push,\n release,\n click,\n // hold,\n },\n ];\n}\n\nexport default useCrestronPublishDigital;\nexport const useCrestronPublishBoolean = useCrestronPublishDigital;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { DigitalStateCallback, IDigitalState } from \"../../types\";\n\n/**\n * `useCrestronSubscribeDigital` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single IDigitalState object.\n */\nexport function useCrestronSubscribeDigital(\n signalName: string,\n callback?: DigitalStateCallback,\n): [IDigitalState] {\n const [state, setState] = useState<boolean>(false);\n const callbackRef = useRef<DigitalStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Boolean;\n const id = subscribeState(signalType, signalName, (value: boolean) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeDigital;\nexport const useCrestronSubscribeBoolean = useCrestronSubscribeDigital;\n","import { DigitalStateCallback, IDigitalSignal } from \"../../types\";\nimport { useCrestronPublishDigital } from \"../useCrestronPublishDigital\";\nimport { useCrestronSubscribeDigital } from \"../useCrestronSubscribeDigital\";\n\n/**\n * `useCrestronDigital` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single IDigitalSignal object\n */\nexport function useCrestronDigital(\n signalName: string,\n callback?: DigitalStateCallback,\n): [IDigitalSignal] {\n const [state] = useCrestronSubscribeDigital(signalName, callback);\n const [action] = useCrestronPublishDigital(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronDigital;\nexport const useCrestronBoolean = useCrestronDigital;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishSerial` is a hook that returns an object with a setValue function.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single ISerialEventAction object.\n */\nexport function useCrestronPublishSerial(\n signalName: string,\n): [ISerialEventAction] {\n return [\n {\n setValue: (value: string) =>\n publishEvent(CrestronCH5.SignalType.String, signalName, value),\n },\n ];\n}\n\nexport default useCrestronPublishSerial;\nexport const useCrestronPublishString = useCrestronPublishSerial;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialState, SerialStateCallback } from \"../../types\";\n\n/**\n * `useCrestronSubscribeSerial` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single ISerialState object.\n */\nexport function useCrestronSubscribeSerial(\n signalName: string,\n callback?: SerialStateCallback,\n): [ISerialState] {\n const [state, setState] = useState<string>(\"\");\n const callbackRef = useRef<SerialStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.String;\n const id = subscribeState(signalType, signalName, (value: string) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeSerial;\nexport const useCrestronSubscribeString = useCrestronSubscribeSerial;\n","import { ISerialSignal, SerialStateCallback } from \"../../types\";\nimport { useCrestronPublishSerial } from \"../useCrestronPublishSerial\";\nimport { useCrestronSubscribeSerial } from \"../useCrestronSubscribeSerial\";\n\n/**\n * `useCrestronSerial` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single ISerialSignal object.\n */\nexport function useCrestronSerial(\n signalName: string,\n callback?: SerialStateCallback,\n): [ISerialSignal] {\n const [state] = useCrestronSubscribeSerial(signalName, callback);\n const [action] = useCrestronPublishSerial(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronSerial;\nexport const useCrestronString = useCrestronSerial;\n","import { IBaseSignal } from \"../types\";\n\nexport function getSignalCollection<TState, TEventAction>(\n length: number,\n state: TState[],\n action: TEventAction[],\n): IBaseSignal<TState, TEventAction>[] {\n const signals: IBaseSignal<TState, TEventAction>[] = [];\n\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < length; index++) {\n signals.push({ state: state[index], action: action[index] });\n }\n\n return signals;\n}\n\nexport default getSignalCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IAnalogEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishAnalogCollection` is a hook that returns an array of objects each with a setValue function.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of IAnalogEventAction objects.\n */\nexport function useCrestronPublishAnalogCollection(\n signalNames: string[],\n): IAnalogEventAction[] {\n const signalType = CrestronCH5.SignalType.Number;\n const actions: IAnalogEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n actions.push({\n setValue: (value: number) =>\n publishEvent(signalType, signalName, value),\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishAnalogCollection;\nexport const useCrestronPublishNumberCollection =\n useCrestronPublishAnalogCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n AnalogStateCallback,\n IAnalogState,\n IStateSubscription,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeAnalogCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of IAnalogState objects.\n */\nexport function useCrestronSubscribeAnalogCollection(\n signalNames: string[],\n callback?: AnalogStateCallback,\n): IAnalogState[] {\n const [state, setState] = useState<IAnalogState[]>(\n Array.from<IAnalogState>({ length: signalNames.length }).fill({\n value: 0,\n }),\n );\n\n const callbackRef = useRef<AnalogStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Number;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: number) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeAnalogCollection;\nexport const useCrestronSubscribeNumberCollection =\n useCrestronSubscribeAnalogCollection;\n","import {\n AnalogStateCallback,\n IAnalogEventAction,\n IAnalogSignal,\n IAnalogState,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishAnalogCollection } from \"../useCrestronPublishAnalogCollection\";\nimport { useCrestronSubscribeAnalogCollection } from \"../useCrestronSubscribeAnalogCollection\";\n\n/**\n * `useCrestronAnalogCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {AnalogStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of IAnalogSignal objects.\n */\nexport function useCrestronAnalogCollection(\n signalNames: string[],\n callback?: AnalogStateCallback,\n): IAnalogSignal[] {\n const state = useCrestronSubscribeAnalogCollection(signalNames, callback);\n const action = useCrestronPublishAnalogCollection(signalNames);\n\n return getSignalCollection<IAnalogState, IAnalogEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronAnalogCollection;\nexport const useCrestronNumberCollection = useCrestronAnalogCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IDigitalEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishDigitalCollection` is a hook that returns an array of objects each with setValue, push, release and click functions.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of IDigitalEventAction objects.\n */\nexport function useCrestronPublishDigitalCollection(\n signalNames: string[],\n): IDigitalEventAction[] {\n const signalType = CrestronCH5.SignalType.Boolean;\n const actions: IDigitalEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n const setValue = (value: boolean) => {\n publishEvent(signalType, signalName, value);\n };\n\n const push = () => {\n setValue(true);\n };\n\n const release = () => {\n setValue(false);\n };\n\n const click = () => {\n push();\n release();\n };\n\n // const hold = (duration: number, callback: () => void) => {\n // push();\n\n // setTimeout(() => {\n // release();\n // callback();\n // }, duration);\n // };\n\n actions.push({\n setValue,\n push,\n release,\n click,\n // hold,\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishDigitalCollection;\nexport const useCrestronPublishBooleanCollection =\n useCrestronPublishDigitalCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n DigitalStateCallback,\n IDigitalState,\n IStateSubscription,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeDigitalCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of IDigitalState objects.\n */\nexport function useCrestronSubscribeDigitalCollection(\n signalNames: string[],\n callback?: DigitalStateCallback,\n): IDigitalState[] {\n const [state, setState] = useState<IDigitalState[]>(\n Array.from<IDigitalState>({ length: signalNames.length }).fill({\n value: false,\n }),\n );\n\n const callbackRef = useRef<DigitalStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Boolean;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: boolean) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeDigitalCollection;\nexport const useCrestronSubscribeBooleanCollection =\n useCrestronSubscribeDigitalCollection;\n","import {\n DigitalStateCallback,\n IDigitalEventAction,\n IDigitalSignal,\n IDigitalState,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishDigitalCollection } from \"../useCrestronPublishDigitalCollection\";\nimport { useCrestronSubscribeDigitalCollection } from \"../useCrestronSubscribeDigitalCollection\";\n\n/**\n * `useCrestronDigitalCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {DigitalStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of IDigitalSignal objects.\n */\nexport function useCrestronDigitalCollection(\n signalNames: string[],\n callback?: DigitalStateCallback,\n): IDigitalSignal[] {\n const state = useCrestronSubscribeDigitalCollection(signalNames, callback);\n const action = useCrestronPublishDigitalCollection(signalNames);\n\n return getSignalCollection<IDigitalState, IDigitalEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronDigitalCollection;\nexport const useCrestronBooleanCollection = useCrestronDigitalCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishSerialCollection` is a hook that returns an array of objects each with a setValue function.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of ISerialEventAction objects.\n */\nexport function useCrestronPublishSerialCollection(\n signalNames: string[],\n): ISerialEventAction[] {\n const signalType = CrestronCH5.SignalType.String;\n const actions: ISerialEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n actions.push({\n setValue: (value: string) =>\n publishEvent(signalType, signalName, value),\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishSerialCollection;\nexport const useCrestronPublishStringCollection =\n useCrestronPublishSerialCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n SerialStateCallback,\n IStateSubscription,\n ISerialState,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeSerialCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of ISerialState objects.\n */\nexport function useCrestronSubscribeSerialCollection(\n signalNames: string[],\n callback?: SerialStateCallback,\n): ISerialState[] {\n const [state, setState] = useState<ISerialState[]>(\n Array.from<ISerialState>({ length: signalNames.length }).fill({\n value: \"\",\n }),\n );\n\n const callbackRef = useRef<SerialStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.String;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: string) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeSerialCollection;\nexport const useCrestronSubscribeStringCollection =\n useCrestronSubscribeSerialCollection;\n","import {\n ISerialEventAction,\n ISerialSignal,\n ISerialState,\n SerialStateCallback,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishSerialCollection } from \"../useCrestronPublishSerialCollection\";\nimport { useCrestronSubscribeSerialCollection } from \"../useCrestronSubscribeSerialCollection\";\n\n/**\n * `useCrestronSerialCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {SerialStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of ISerialSignal objects.\n */\nexport function useCrestronSerialCollection(\n signalNames: string[],\n callback?: SerialStateCallback,\n): ISerialSignal[] {\n const state = useCrestronSubscribeSerialCollection(signalNames, callback);\n const action = useCrestronPublishSerialCollection(signalNames);\n\n return getSignalCollection<ISerialState, ISerialEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronSerialCollection;\nexport const useCrestronStringCollection = useCrestronSerialCollection;\n"],"names":["useCrestronPublishAnalog","signalName","setValue","value","publishEvent","CrestronCH5","SignalType","Number","useCrestronPublishNumber","useCrestronSubscribeAnalog","callback","useState","state","setState","callbackRef","useRef","useEffect","current","signalType","id","subscribeState","unsubscribeState","useCrestronSubscribeNumber","useCrestronAnalog","action","useCrestronNumber","useCrestronPublishDigital","Boolean","push","release","click","useCrestronPublishBoolean","useCrestronSubscribeDigital","useCrestronSubscribeBoolean","useCrestronDigital","useCrestronBoolean","useCrestronPublishSerial","String","useCrestronPublishString","useCrestronSubscribeSerial","useCrestronSubscribeString","useCrestronSerial","useCrestronString","getSignalCollection","length","signals","index","useCrestronPublishAnalogCollection","signalNames","actions","forEach","useCrestronPublishNumberCollection","useCrestronSubscribeAnalogCollection","Array","from","fill","subscriptions","prevState","newState","unsubscribeAll","useCrestronSubscribeNumberCollection","useCrestronAnalogCollection","useCrestronNumberCollection","useCrestronPublishDigitalCollection","useCrestronPublishBooleanCollection","useCrestronSubscribeDigitalCollection","useCrestronSubscribeBooleanCollection","useCrestronDigitalCollection","useCrestronBooleanCollection","useCrestronPublishSerialCollection","useCrestronPublishStringCollection","useCrestronSubscribeSerialCollection","useCrestronSubscribeStringCollection","useCrestronSerialCollection","useCrestronStringCollection"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@crestron/ch5-crcomlib"),require("@norgate-av/crestron-ch5-helper"),require("react")):"function"==typeof define&&define.amd?define(["exports","@crestron/ch5-crcomlib","@norgate-av/crestron-ch5-helper","react"],n):n((e=e||self)["@norgate-av/react-crestron-ch5-hooks"]={},e.ch5Crcomlib,e.CrestronCH5,e.React)}(this,(function(e,n,r,t){"use strict";function u(e){return[{setValue:function(t){return n.publishEvent(r.SignalType.Number,e,t)}}]}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;var o=u;function i(e,u){var o=t.useState(0),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.Number,u=n.subscribeState(t,e,(function(n){s(n),c.current&&c.current(n,e)}));return function(){n.unsubscribeState(t,e,u)}}),[e]),[{value:i}]}var s=i;function c(e,n){return[{state:i(e,n)[0],action:u(e)[0]}]}var a=c;function l(e){var t=r.SignalType.Boolean,u=function(r){n.publishEvent(t,e,r)},o=function(){u(!0)},i=function(){u(!1)};return[{setValue:u,push:o,release:i,click:function(){o(),i()}}]}var f=l;function b(e,u){var o=t.useState(!1),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.Boolean,u=n.subscribeState(t,e,(function(n){s(n),c.current&&c.current(n,e)}));return function(){n.unsubscribeState(t,e,u)}}),[e]),[{value:i}]}var v=b;function h(e,n){return[{state:b(e,n)[0],action:l(e)[0]}]}var S=h;function C(e){return[{setValue:function(t){return n.publishEvent(r.SignalType.String,e,t)}}]}var g=C;function p(e,u){var o=t.useState(""),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.String,u=n.subscribeState(t,e,(function(n){s(n),c.current&&c.current(n,e)}));return function(){n.unsubscribeState(t,e,u)}}),[e]),[{value:i}]}var E=p;function m(e,n){return[{state:p(e,n)[0],action:C(e)[0]}]}var y=m;function d(e,n,r){for(var t=[],u=0;u<e;u++)t.push({state:n[u],action:r[u]});return t}function N(e){var t=r.SignalType.Number,u=[];return e.forEach((function(e){u.push({setValue:function(r){return n.publishEvent(t,e,r)}})})),u}var P=N;function T(){return(T=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}function B(e,u){var o=t.useState(Array.from({length:e.length}).fill({value:0})),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.Number,u=[];return e.forEach((function(e,r){var o=n.subscribeState(t,e,(function(n){s((function(e){var t=[].concat(e);return t[r]=T({},t[r],{value:n}),t})),c.current&&c.current(n,e)}));u.push({id:o,signalName:e})})),function(){u.forEach((function(e){n.unsubscribeState(t,e.signalName,e.id)}))}}),[]),i}var A=B;function R(e,n){var r=B(e,n),t=N(e);return d(e.length,r,t)}var D=R;function O(e){var t=r.SignalType.Boolean,u=[];return e.forEach((function(e){var r=function(r){n.publishEvent(t,e,r)},o=function(){r(!0)},i=function(){r(!1)};u.push({setValue:r,push:o,release:i,click:function(){o(),i()}})})),u}var V=O;function j(e,u){var o=t.useState(Array.from({length:e.length}).fill({value:!1})),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.Boolean,u=[];return e.forEach((function(e,r){var o=n.subscribeState(t,e,(function(n){s((function(e){var t=[].concat(e);return t[r]=T({},t[r],{value:n}),t})),c.current&&c.current(n,e)}));u.push({id:o,signalName:e})})),function(){u.forEach((function(e){n.unsubscribeState(t,e.signalName,e.id)}))}}),[]),i}var k=j;function q(e,n){var r=j(e,n),t=O(e);return d(e.length,r,t)}var x=q;function w(e){var t=r.SignalType.String,u=[];return e.forEach((function(e){u.push({setValue:function(r){return n.publishEvent(t,e,r)}})})),u}var _=w;function H(e,u){var o=t.useState(Array.from({length:e.length}).fill({value:""})),i=o[0],s=o[1],c=t.useRef();return t.useEffect((function(){c.current=u}),[u]),t.useEffect((function(){var t=r.SignalType.String,u=[];return e.forEach((function(e,r){var o=n.subscribeState(t,e,(function(n){s((function(e){var t=[].concat(e);return t[r]=T({},t[r],{value:n}),t})),c.current&&c.current(n,e)}));u.push({id:o,signalName:e})})),function(){u.forEach((function(e){n.unsubscribeState(t,e.signalName,e.id)}))}}),[]),i}var M=H;function z(e,n){var r=H(e,n),t=w(e);return d(e.length,r,t)}var F=z;e.useCrestronAnalog=c,e.useCrestronAnalogCollection=R,e.useCrestronBoolean=S,e.useCrestronBooleanCollection=x,e.useCrestronDigital=h,e.useCrestronDigitalCollection=q,e.useCrestronNumber=a,e.useCrestronNumberCollection=D,e.useCrestronPublishAnalog=u,e.useCrestronPublishAnalogCollection=N,e.useCrestronPublishBoolean=f,e.useCrestronPublishBooleanCollection=V,e.useCrestronPublishDigital=l,e.useCrestronPublishDigitalCollection=O,e.useCrestronPublishNumber=o,e.useCrestronPublishNumberCollection=P,e.useCrestronPublishSerial=C,e.useCrestronPublishSerialCollection=w,e.useCrestronPublishString=g,e.useCrestronPublishStringCollection=_,e.useCrestronSerial=m,e.useCrestronSerialCollection=z,e.useCrestronString=y,e.useCrestronStringCollection=F,e.useCrestronSubscribeAnalog=i,e.useCrestronSubscribeAnalogCollection=B,e.useCrestronSubscribeBoolean=v,e.useCrestronSubscribeBooleanCollection=k,e.useCrestronSubscribeDigital=b,e.useCrestronSubscribeDigitalCollection=j,e.useCrestronSubscribeNumber=s,e.useCrestronSubscribeNumberCollection=A,e.useCrestronSubscribeSerial=p,e.useCrestronSubscribeSerialCollection=H,e.useCrestronSubscribeString=E,e.useCrestronSubscribeStringCollection=M,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=react-crestron-ch5-hooks.umd.production.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-crestron-ch5-hooks.umd.production.min.js","sources":["../src/hooks/useCrestronPublishAnalog/index.ts","../src/hooks/useCrestronSubscribeAnalog/index.ts","../src/hooks/useCrestronAnalog/index.ts","../src/hooks/useCrestronPublishDigital/index.ts","../src/hooks/useCrestronSubscribeDigital/index.ts","../src/hooks/useCrestronDigital/index.ts","../src/hooks/useCrestronPublishSerial/index.ts","../src/hooks/useCrestronSubscribeSerial/index.ts","../src/hooks/useCrestronSerial/index.ts","../src/utils/getSignalCollection.ts","../src/hooks/useCrestronPublishAnalogCollection/index.ts","../src/hooks/useCrestronSubscribeAnalogCollection/index.ts","../src/hooks/useCrestronAnalogCollection/index.ts","../src/hooks/useCrestronPublishDigitalCollection/index.ts","../src/hooks/useCrestronSubscribeDigitalCollection/index.ts","../src/hooks/useCrestronDigitalCollection/index.ts","../src/hooks/useCrestronPublishSerialCollection/index.ts","../src/hooks/useCrestronSubscribeSerialCollection/index.ts","../src/hooks/useCrestronSerialCollection/index.ts"],"sourcesContent":["import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IAnalogEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishAnalog` is a hook that returns an object with a setValue function.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single IAnalogEventAction object.\n */\nexport function useCrestronPublishAnalog(\n signalName: string,\n): [IAnalogEventAction] {\n return [\n {\n setValue: (value: number) =>\n publishEvent(CrestronCH5.SignalType.Number, signalName, value),\n },\n ];\n}\n\nexport default useCrestronPublishAnalog;\nexport const useCrestronPublishNumber = useCrestronPublishAnalog;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { AnalogStateCallback, IAnalogState } from \"../../types\";\n\n/**\n * `useCrestronSubscribeAnalog` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single IAnalogState object.\n */\nexport function useCrestronSubscribeAnalog(\n signalName: string,\n callback?: AnalogStateCallback,\n): [IAnalogState] {\n const [state, setState] = useState<number>(0);\n const callbackRef = useRef<AnalogStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Number;\n const id = subscribeState(signalType, signalName, (value: number) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeAnalog;\nexport const useCrestronSubscribeNumber = useCrestronSubscribeAnalog;\n","import { AnalogStateCallback, IAnalogSignal } from \"../../types\";\nimport { useCrestronPublishAnalog } from \"../useCrestronPublishAnalog\";\nimport { useCrestronSubscribeAnalog } from \"../useCrestronSubscribeAnalog\";\n\n/**\n * `useCrestronAnalog` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single IAnalogSignal object.\n */\nexport function useCrestronAnalog(\n signalName: string,\n callback?: AnalogStateCallback,\n): [IAnalogSignal] {\n const [state] = useCrestronSubscribeAnalog(signalName, callback);\n const [action] = useCrestronPublishAnalog(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronAnalog;\nexport const useCrestronNumber = useCrestronAnalog;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IDigitalEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishDigital` is a hook that returns an object with setValue, push, release and click functions.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single IDigitalEventAction object.\n */\nexport function useCrestronPublishDigital(\n signalName: string,\n): [IDigitalEventAction] {\n const signalType = CrestronCH5.SignalType.Boolean;\n\n const setValue = (value: boolean) => {\n publishEvent(signalType, signalName, value);\n };\n\n const push = () => {\n setValue(true);\n };\n\n const release = () => {\n setValue(false);\n };\n\n const click = () => {\n push();\n release();\n };\n\n // const hold = (duration: number, callback: () => void) => {\n // push();\n\n // setTimeout(() => {\n // release();\n // callback();\n // }, duration);\n // };\n\n return [\n {\n setValue,\n push,\n release,\n click,\n // hold,\n },\n ];\n}\n\nexport default useCrestronPublishDigital;\nexport const useCrestronPublishBoolean = useCrestronPublishDigital;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { DigitalStateCallback, IDigitalState } from \"../../types\";\n\n/**\n * `useCrestronSubscribeDigital` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single IDigitalState object.\n */\nexport function useCrestronSubscribeDigital(\n signalName: string,\n callback?: DigitalStateCallback,\n): [IDigitalState] {\n const [state, setState] = useState<boolean>(false);\n const callbackRef = useRef<DigitalStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Boolean;\n const id = subscribeState(signalType, signalName, (value: boolean) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeDigital;\nexport const useCrestronSubscribeBoolean = useCrestronSubscribeDigital;\n","import { DigitalStateCallback, IDigitalSignal } from \"../../types\";\nimport { useCrestronPublishDigital } from \"../useCrestronPublishDigital\";\nimport { useCrestronSubscribeDigital } from \"../useCrestronSubscribeDigital\";\n\n/**\n * `useCrestronDigital` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single IDigitalSignal object\n */\nexport function useCrestronDigital(\n signalName: string,\n callback?: DigitalStateCallback,\n): [IDigitalSignal] {\n const [state] = useCrestronSubscribeDigital(signalName, callback);\n const [action] = useCrestronPublishDigital(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronDigital;\nexport const useCrestronBoolean = useCrestronDigital;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishSerial` is a hook that returns an object with a setValue function.\n * @param {string} signalName - The name of the signal you want to publish to.\n * @returns An array with a single ISerialEventAction object.\n */\nexport function useCrestronPublishSerial(\n signalName: string,\n): [ISerialEventAction] {\n return [\n {\n setValue: (value: string) =>\n publishEvent(CrestronCH5.SignalType.String, signalName, value),\n },\n ];\n}\n\nexport default useCrestronPublishSerial;\nexport const useCrestronPublishString = useCrestronPublishSerial;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialState, SerialStateCallback } from \"../../types\";\n\n/**\n * `useCrestronSubscribeSerial` is a hook that returns an object with a value property.\n * @param {string} signalName - The name of the signal you want to subscribe to.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state\n * changes.\n * @returns An array with a single ISerialState object.\n */\nexport function useCrestronSubscribeSerial(\n signalName: string,\n callback?: SerialStateCallback,\n): [ISerialState] {\n const [state, setState] = useState<string>(\"\");\n const callbackRef = useRef<SerialStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.String;\n const id = subscribeState(signalType, signalName, (value: string) => {\n setState(value);\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n });\n\n return () => {\n unsubscribeState(signalType, signalName, id);\n };\n }, [signalName]);\n\n return [{ value: state }];\n}\n\nexport default useCrestronSubscribeSerial;\nexport const useCrestronSubscribeString = useCrestronSubscribeSerial;\n","import { ISerialSignal, SerialStateCallback } from \"../../types\";\nimport { useCrestronPublishSerial } from \"../useCrestronPublishSerial\";\nimport { useCrestronSubscribeSerial } from \"../useCrestronSubscribeSerial\";\n\n/**\n * `useCrestronSerial` is a hook that returns an object with a state and action property.\n * @param {string} signalName - The name of the signal you want to use.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the state of the signal\n * changes.\n * @returns An array with a single ISerialSignal object.\n */\nexport function useCrestronSerial(\n signalName: string,\n callback?: SerialStateCallback,\n): [ISerialSignal] {\n const [state] = useCrestronSubscribeSerial(signalName, callback);\n const [action] = useCrestronPublishSerial(signalName);\n\n return [{ state, action }];\n}\n\nexport default useCrestronSerial;\nexport const useCrestronString = useCrestronSerial;\n","import { IBaseSignal } from \"../types\";\n\nexport function getSignalCollection<TState, TEventAction>(\n length: number,\n state: TState[],\n action: TEventAction[],\n): IBaseSignal<TState, TEventAction>[] {\n const signals: IBaseSignal<TState, TEventAction>[] = [];\n\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < length; index++) {\n signals.push({ state: state[index], action: action[index] });\n }\n\n return signals;\n}\n\nexport default getSignalCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IAnalogEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishAnalogCollection` is a hook that returns an array of objects each with a setValue function.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of IAnalogEventAction objects.\n */\nexport function useCrestronPublishAnalogCollection(\n signalNames: string[],\n): IAnalogEventAction[] {\n const signalType = CrestronCH5.SignalType.Number;\n const actions: IAnalogEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n actions.push({\n setValue: (value: number) =>\n publishEvent(signalType, signalName, value),\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishAnalogCollection;\nexport const useCrestronPublishNumberCollection =\n useCrestronPublishAnalogCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n AnalogStateCallback,\n IAnalogState,\n IStateSubscription,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeAnalogCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {AnalogStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of IAnalogState objects.\n */\nexport function useCrestronSubscribeAnalogCollection(\n signalNames: string[],\n callback?: AnalogStateCallback,\n): IAnalogState[] {\n const [state, setState] = useState<IAnalogState[]>(\n Array.from<IAnalogState>({ length: signalNames.length }).fill({\n value: 0,\n }),\n );\n\n const callbackRef = useRef<AnalogStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Number;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: number) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeAnalogCollection;\nexport const useCrestronSubscribeNumberCollection =\n useCrestronSubscribeAnalogCollection;\n","import {\n AnalogStateCallback,\n IAnalogEventAction,\n IAnalogSignal,\n IAnalogState,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishAnalogCollection } from \"../useCrestronPublishAnalogCollection\";\nimport { useCrestronSubscribeAnalogCollection } from \"../useCrestronSubscribeAnalogCollection\";\n\n/**\n * `useCrestronAnalogCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {AnalogStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of IAnalogSignal objects.\n */\nexport function useCrestronAnalogCollection(\n signalNames: string[],\n callback?: AnalogStateCallback,\n): IAnalogSignal[] {\n const state = useCrestronSubscribeAnalogCollection(signalNames, callback);\n const action = useCrestronPublishAnalogCollection(signalNames);\n\n return getSignalCollection<IAnalogState, IAnalogEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronAnalogCollection;\nexport const useCrestronNumberCollection = useCrestronAnalogCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { IDigitalEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishDigitalCollection` is a hook that returns an array of objects each with setValue, push, release and click functions.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of IDigitalEventAction objects.\n */\nexport function useCrestronPublishDigitalCollection(\n signalNames: string[],\n): IDigitalEventAction[] {\n const signalType = CrestronCH5.SignalType.Boolean;\n const actions: IDigitalEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n const setValue = (value: boolean) => {\n publishEvent(signalType, signalName, value);\n };\n\n const push = () => {\n setValue(true);\n };\n\n const release = () => {\n setValue(false);\n };\n\n const click = () => {\n push();\n release();\n };\n\n // const hold = (duration: number, callback: () => void) => {\n // push();\n\n // setTimeout(() => {\n // release();\n // callback();\n // }, duration);\n // };\n\n actions.push({\n setValue,\n push,\n release,\n click,\n // hold,\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishDigitalCollection;\nexport const useCrestronPublishBooleanCollection =\n useCrestronPublishDigitalCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n DigitalStateCallback,\n IDigitalState,\n IStateSubscription,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeDigitalCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {DigitalStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of IDigitalState objects.\n */\nexport function useCrestronSubscribeDigitalCollection(\n signalNames: string[],\n callback?: DigitalStateCallback,\n): IDigitalState[] {\n const [state, setState] = useState<IDigitalState[]>(\n Array.from<IDigitalState>({ length: signalNames.length }).fill({\n value: false,\n }),\n );\n\n const callbackRef = useRef<DigitalStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.Boolean;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: boolean) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeDigitalCollection;\nexport const useCrestronSubscribeBooleanCollection =\n useCrestronSubscribeDigitalCollection;\n","import {\n DigitalStateCallback,\n IDigitalEventAction,\n IDigitalSignal,\n IDigitalState,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishDigitalCollection } from \"../useCrestronPublishDigitalCollection\";\nimport { useCrestronSubscribeDigitalCollection } from \"../useCrestronSubscribeDigitalCollection\";\n\n/**\n * `useCrestronDigitalCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {DigitalStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of IDigitalSignal objects.\n */\nexport function useCrestronDigitalCollection(\n signalNames: string[],\n callback?: DigitalStateCallback,\n): IDigitalSignal[] {\n const state = useCrestronSubscribeDigitalCollection(signalNames, callback);\n const action = useCrestronPublishDigitalCollection(signalNames);\n\n return getSignalCollection<IDigitalState, IDigitalEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronDigitalCollection;\nexport const useCrestronBooleanCollection = useCrestronDigitalCollection;\n","import { publishEvent } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport { ISerialEventAction } from \"../../types\";\n\n/**\n * `useCrestronPublishSerialCollection` is a hook that returns an array of objects each with a setValue function.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to publish to.\n * @returns An array of ISerialEventAction objects.\n */\nexport function useCrestronPublishSerialCollection(\n signalNames: string[],\n): ISerialEventAction[] {\n const signalType = CrestronCH5.SignalType.String;\n const actions: ISerialEventAction[] = [];\n\n signalNames.forEach((signalName) => {\n actions.push({\n setValue: (value: string) =>\n publishEvent(signalType, signalName, value),\n });\n });\n\n return actions;\n}\n\nexport default useCrestronPublishSerialCollection;\nexport const useCrestronPublishStringCollection =\n useCrestronPublishSerialCollection;\n","import { useState, useRef, useEffect } from \"react\";\nimport { subscribeState, unsubscribeState } from \"@crestron/ch5-crcomlib\";\nimport CrestronCH5 from \"@norgate-av/crestron-ch5-helper\";\nimport {\n SerialStateCallback,\n IStateSubscription,\n ISerialState,\n} from \"../../types\";\n\n/**\n * `useCrestronSubscribeSerialCollection` is a hook that returns an array of objects each with a value property.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to subscribe to.\n * @param {SerialStateCallback} [callback] - An optional callback function that will be called whenever the\n * state changes.\n * @returns An array of ISerialState objects.\n */\nexport function useCrestronSubscribeSerialCollection(\n signalNames: string[],\n callback?: SerialStateCallback,\n): ISerialState[] {\n const [state, setState] = useState<ISerialState[]>(\n Array.from<ISerialState>({ length: signalNames.length }).fill({\n value: \"\",\n }),\n );\n\n const callbackRef = useRef<SerialStateCallback | undefined>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const signalType = CrestronCH5.SignalType.String;\n const subscriptions: IStateSubscription[] = [];\n\n signalNames.forEach((signalName, index) => {\n const id = subscribeState(\n signalType,\n signalName,\n (value: string) => {\n setState((prevState) => {\n const newState = [...prevState];\n\n newState[index] = { ...newState[index], value };\n\n return newState;\n });\n\n if (callbackRef.current) {\n callbackRef.current(value, signalName);\n }\n },\n );\n\n subscriptions.push({ id, signalName });\n });\n\n const unsubscribeAll = () => {\n subscriptions.forEach(({ id, signalName }) => {\n unsubscribeState(signalType, signalName, id);\n });\n };\n\n return () => {\n unsubscribeAll();\n };\n }, []);\n\n return state;\n}\n\nexport default useCrestronSubscribeSerialCollection;\nexport const useCrestronSubscribeStringCollection =\n useCrestronSubscribeSerialCollection;\n","import {\n ISerialEventAction,\n ISerialSignal,\n ISerialState,\n SerialStateCallback,\n} from \"../../types\";\nimport { getSignalCollection } from \"../../utils\";\nimport { useCrestronPublishSerialCollection } from \"../useCrestronPublishSerialCollection\";\nimport { useCrestronSubscribeSerialCollection } from \"../useCrestronSubscribeSerialCollection\";\n\n/**\n * `useCrestronSerialCollection` is a hook that returns an array of objects each with state and action properties.\n * @param {string[]} signalNames - An array of strings that represent the names of the signals you want\n * to use.\n * @param {SerialStateCallback} [callback] - A optional callback function that will be called whenever the state of\n * the signal changes.\n * @returns An array of ISerialSignal objects.\n */\nexport function useCrestronSerialCollection(\n signalNames: string[],\n callback?: SerialStateCallback,\n): ISerialSignal[] {\n const state = useCrestronSubscribeSerialCollection(signalNames, callback);\n const action = useCrestronPublishSerialCollection(signalNames);\n\n return getSignalCollection<ISerialState, ISerialEventAction>(\n signalNames.length,\n state,\n action,\n );\n}\n\nexport default useCrestronSerialCollection;\nexport const useCrestronStringCollection = useCrestronSerialCollection;\n"],"names":["useCrestronPublishAnalog","signalName","setValue","value","publishEvent","CrestronCH5","SignalType","Number","useCrestronPublishNumber","useCrestronSubscribeAnalog","callback","useState","state","setState","callbackRef","useRef","useEffect","current","signalType","id","subscribeState","unsubscribeState","useCrestronSubscribeNumber","useCrestronAnalog","action","useCrestronNumber","useCrestronPublishDigital","Boolean","push","release","click","useCrestronPublishBoolean","useCrestronSubscribeDigital","useCrestronSubscribeBoolean","useCrestronDigital","useCrestronBoolean","useCrestronPublishSerial","String","useCrestronPublishString","useCrestronSubscribeSerial","useCrestronSubscribeString","useCrestronSerial","useCrestronString","getSignalCollection","length","signals","index","useCrestronPublishAnalogCollection","signalNames","actions","forEach","useCrestronPublishNumberCollection","useCrestronSubscribeAnalogCollection","Array","from","fill","subscriptions","prevState","newState","useCrestronSubscribeNumberCollection","useCrestronAnalogCollection","useCrestronNumberCollection","useCrestronPublishDigitalCollection","useCrestronPublishBooleanCollection","useCrestronSubscribeDigitalCollection","useCrestronSubscribeBooleanCollection","useCrestronDigitalCollection","useCrestronBooleanCollection","useCrestronPublishSerialCollection","useCrestronPublishStringCollection","useCrestronSubscribeSerialCollection","useCrestronSubscribeStringCollection","useCrestronSerialCollection","useCrestronStringCollection"],"mappings":"ybASgBA,EACZC,SAEO,CACH,CACIC,SAAU,SAACC,UACPC,eAAaC,EAAYC,WAAWC,OAAQN,EAAYE,6EAM3DK,EAA2BR,WCTxBS,EACZR,EACAS,SAE0BC,WAAiB,GAApCC,OAAOC,OACRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAWC,OACpCY,EAAKC,iBAAeF,EAAYjB,GAAY,SAACE,GAC/CU,EAASV,GAELW,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,aAI5B,WACHoB,mBAAiBH,EAAYjB,EAAYkB,MAE9C,CAAClB,IAEG,CAAC,CAAEE,MAAOS,QAIRU,EAA6Bb,WC/B1Bc,EACZtB,EACAS,SAKO,CAAC,CAAEE,MAHMH,EAA2BR,EAAYS,MAGtCc,OAFAxB,EAAyBC,YAMjCwB,EAAoBF,WCbjBG,EACZzB,OAEMiB,EAAab,EAAYC,WAAWqB,QAEpCzB,EAAW,SAACC,GACdC,eAAac,EAAYjB,EAAYE,IAGnCyB,EAAO,WACT1B,GAAS,IAGP2B,EAAU,WACZ3B,GAAS,UAiBN,CACH,CACIA,SAAAA,EACA0B,KAAAA,EACAC,QAAAA,EACAC,MAnBM,WACVF,IACAC,WAwBKE,EAA4BL,WCxCzBM,EACZ/B,EACAS,SAE0BC,YAAkB,GAArCC,OAAOC,OACRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAWqB,QACpCR,EAAKC,iBAAeF,EAAYjB,GAAY,SAACE,GAC/CU,EAASV,GAELW,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,aAI5B,WACHoB,mBAAiBH,EAAYjB,EAAYkB,MAE9C,CAAClB,IAEG,CAAC,CAAEE,MAAOS,QAIRqB,EAA8BD,WC/B3BE,EACZjC,EACAS,SAKO,CAAC,CAAEE,MAHMoB,EAA4B/B,EAAYS,MAGvCc,OAFAE,EAA0BzB,YAMlCkC,EAAqBD,WCblBE,EACZnC,SAEO,CACH,CACIC,SAAU,SAACC,UACPC,eAAaC,EAAYC,WAAW+B,OAAQpC,EAAYE,UAM3DmC,EAA2BF,WCTxBG,EACZtC,EACAS,SAE0BC,WAAiB,IAApCC,OAAOC,OACRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAW+B,OACpClB,EAAKC,iBAAeF,EAAYjB,GAAY,SAACE,GAC/CU,EAASV,GAELW,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,aAI5B,WACHoB,mBAAiBH,EAAYjB,EAAYkB,MAE9C,CAAClB,IAEG,CAAC,CAAEE,MAAOS,QAIR4B,EAA6BD,WC/B1BE,EACZxC,EACAS,SAKO,CAAC,CAAEE,MAHM2B,EAA2BtC,EAAYS,MAGtCc,OAFAY,EAAyBnC,YAMjCyC,EAAoBD,WCpBjBE,EACZC,EACAhC,EACAY,WAEMqB,EAA+C,GAG5CC,EAAQ,EAAGA,EAAQF,EAAQE,IAChCD,EAAQjB,KAAK,CAAEhB,MAAOA,EAAMkC,GAAQtB,OAAQA,EAAOsB,YAGhDD,WCJKE,EACZC,OAEM9B,EAAab,EAAYC,WAAWC,OACpC0C,EAAgC,UAEtCD,EAAYE,SAAQ,SAACjD,GACjBgD,EAAQrB,KAAK,CACT1B,SAAU,SAACC,UACPC,eAAac,EAAYjB,EAAYE,SAI1C8C,MAIEE,EACTJ,0NCXYK,EACZJ,EACAtC,SAE0BC,WACtB0C,MAAMC,KAAmB,CAAEV,OAAQI,EAAYJ,SAAUW,KAAK,CAC1DpD,MAAO,KAFRS,OAAOC,OAMRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAWC,OACpCiD,EAAsC,UAE5CR,EAAYE,SAAQ,SAACjD,EAAY6C,OACvB3B,EAAKC,iBACPF,EACAjB,GACA,SAACE,GACGU,GAAS,SAAC4C,OACAC,YAAeD,UAErBC,EAASZ,QAAcY,EAASZ,IAAQ3C,MAAAA,IAEjCuD,KAGP5C,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,MAKvCuD,EAAc5B,KAAK,CAAET,GAAAA,EAAIlB,WAAAA,OAStB,WALHuD,EAAcN,SAAQ,YAClB7B,mBAAiBH,IADQjB,aAAJkB,UAQ9B,IAEIP,MAIE+C,EACTP,WCzDYQ,EACZZ,EACAtC,OAEME,EAAQwC,EAAqCJ,EAAatC,GAC1Dc,EAASuB,EAAmCC,UAE3CL,EACHK,EAAYJ,OACZhC,EACAY,OAKKqC,EAA8BD,WCvB3BE,EACZd,OAEM9B,EAAab,EAAYC,WAAWqB,QACpCsB,EAAiC,UAEvCD,EAAYE,SAAQ,SAACjD,OACXC,EAAW,SAACC,GACdC,eAAac,EAAYjB,EAAYE,IAGnCyB,EAAO,WACT1B,GAAS,IAGP2B,EAAU,WACZ3B,GAAS,IAiBb+C,EAAQrB,KAAK,CACT1B,SAAAA,EACA0B,KAAAA,EACAC,QAAAA,EACAC,MAlBU,WACVF,IACAC,UAqBDoB,MAIEc,EACTD,WCxCYE,EACZhB,EACAtC,SAE0BC,WACtB0C,MAAMC,KAAoB,CAAEV,OAAQI,EAAYJ,SAAUW,KAAK,CAC3DpD,OAAO,KAFRS,OAAOC,OAMRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAWqB,QACpC6B,EAAsC,UAE5CR,EAAYE,SAAQ,SAACjD,EAAY6C,OACvB3B,EAAKC,iBACPF,EACAjB,GACA,SAACE,GACGU,GAAS,SAAC4C,OACAC,YAAeD,UAErBC,EAASZ,QAAcY,EAASZ,IAAQ3C,MAAAA,IAEjCuD,KAGP5C,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,MAKvCuD,EAAc5B,KAAK,CAAET,GAAAA,EAAIlB,WAAAA,OAStB,WALHuD,EAAcN,SAAQ,YAClB7B,mBAAiBH,IADQjB,aAAJkB,UAQ9B,IAEIP,MAIEqD,EACTD,WCzDYE,EACZlB,EACAtC,OAEME,EAAQoD,EAAsChB,EAAatC,GAC3Dc,EAASsC,EAAoCd,UAE5CL,EACHK,EAAYJ,OACZhC,EACAY,OAKK2C,EAA+BD,WCvB5BE,EACZpB,OAEM9B,EAAab,EAAYC,WAAW+B,OACpCY,EAAgC,UAEtCD,EAAYE,SAAQ,SAACjD,GACjBgD,EAAQrB,KAAK,CACT1B,SAAU,SAACC,UACPC,eAAac,EAAYjB,EAAYE,SAI1C8C,MAIEoB,EACTD,WCXYE,EACZtB,EACAtC,SAE0BC,WACtB0C,MAAMC,KAAmB,CAAEV,OAAQI,EAAYJ,SAAUW,KAAK,CAC1DpD,MAAO,MAFRS,OAAOC,OAMRC,EAAcC,kBAEpBC,aAAU,WACNF,EAAYG,QAAUP,IACvB,CAACA,IAEJM,aAAU,eACAE,EAAab,EAAYC,WAAW+B,OACpCmB,EAAsC,UAE5CR,EAAYE,SAAQ,SAACjD,EAAY6C,OACvB3B,EAAKC,iBACPF,EACAjB,GACA,SAACE,GACGU,GAAS,SAAC4C,OACAC,YAAeD,UAErBC,EAASZ,QAAcY,EAASZ,IAAQ3C,MAAAA,IAEjCuD,KAGP5C,EAAYG,SACZH,EAAYG,QAAQd,EAAOF,MAKvCuD,EAAc5B,KAAK,CAAET,GAAAA,EAAIlB,WAAAA,OAStB,WALHuD,EAAcN,SAAQ,YAClB7B,mBAAiBH,IADQjB,aAAJkB,UAQ9B,IAEIP,MAIE2D,EACTD,WCzDYE,EACZxB,EACAtC,OAEME,EAAQ0D,EAAqCtB,EAAatC,GAC1Dc,EAAS4C,EAAmCpB,UAE3CL,EACHK,EAAYJ,OACZhC,EACAY,OAKKiD,EAA8BD"}
@@ -0,0 +1 @@
1
+ export declare type Analog = number;
@@ -0,0 +1,3 @@
1
+ import { StateCallback } from "../StateCallback";
2
+ import { Analog } from "../Analog";
3
+ export declare type AnalogStateCallback = StateCallback<Analog>;
@@ -0,0 +1 @@
1
+ export declare type Digital = boolean;
@@ -0,0 +1,3 @@
1
+ import { StateCallback } from "../StateCallback";
2
+ import { Digital } from "../Digital";
3
+ export declare type DigitalStateCallback = StateCallback<Digital>;
@@ -0,0 +1,4 @@
1
+ import { IBaseEventAction } from "../IBaseEventAction";
2
+ import { Analog } from "../Analog";
3
+ export declare interface IAnalogEventAction extends IBaseEventAction<Analog> {
4
+ }
@@ -0,0 +1,5 @@
1
+ import { IAnalogState } from "../IAnalogState";
2
+ import { IAnalogEventAction } from "../IAnalogEventAction";
3
+ import { IBaseSignal } from "../IBaseSignal";
4
+ export declare interface IAnalogSignal extends IBaseSignal<IAnalogState, IAnalogEventAction> {
5
+ }
@@ -0,0 +1,4 @@
1
+ import { IBaseState } from "../IBaseState";
2
+ import { Analog } from "../Analog";
3
+ export declare interface IAnalogState extends IBaseState<Analog> {
4
+ }
@@ -0,0 +1,3 @@
1
+ export declare interface IBaseEventAction<T> {
2
+ setValue: (value: T) => void;
3
+ }
@@ -0,0 +1,4 @@
1
+ export declare interface IBaseSignal<TState, TAction> {
2
+ state: TState;
3
+ action: TAction;
4
+ }
@@ -0,0 +1,3 @@
1
+ export declare interface IBaseState<T> {
2
+ value: T;
3
+ }
@@ -0,0 +1,7 @@
1
+ import { IBaseEventAction } from "../IBaseEventAction";
2
+ import { Digital } from "../Digital";
3
+ export declare interface IDigitalEventAction extends IBaseEventAction<Digital> {
4
+ push: () => void;
5
+ release: () => void;
6
+ click: () => void;
7
+ }
@@ -0,0 +1,5 @@
1
+ import { IDigitalState } from "../IDigitalState";
2
+ import { IDigitalEventAction } from "../IDigitalEventAction";
3
+ import { IBaseSignal } from "../IBaseSignal";
4
+ export declare interface IDigitalSignal extends IBaseSignal<IDigitalState, IDigitalEventAction> {
5
+ }
@@ -0,0 +1,4 @@
1
+ import { IBaseState } from "../IBaseState";
2
+ import { Digital } from "../Digital";
3
+ export declare interface IDigitalState extends IBaseState<Digital> {
4
+ }
@@ -0,0 +1,4 @@
1
+ import { IBaseEventAction } from "../IBaseEventAction";
2
+ import { Serial } from "../Serial";
3
+ export declare interface ISerialEventAction extends IBaseEventAction<Serial> {
4
+ }
@@ -0,0 +1,5 @@
1
+ import { ISerialEventAction } from "../ISerialEventAction";
2
+ import { ISerialState } from "../ISerialState";
3
+ import { IBaseSignal } from "../IBaseSignal";
4
+ export declare interface ISerialSignal extends IBaseSignal<ISerialState, ISerialEventAction> {
5
+ }
@@ -0,0 +1,4 @@
1
+ import { IBaseState } from "../IBaseState";
2
+ import { Serial } from "../Serial";
3
+ export declare interface ISerialState extends IBaseState<Serial> {
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare interface IStateSubscription {
2
+ id: string;
3
+ signalName: string;
4
+ }
@@ -0,0 +1 @@
1
+ export declare type Serial = string;
@@ -0,0 +1,3 @@
1
+ import { StateCallback } from "../StateCallback";
2
+ import { Serial } from "../Serial";
3
+ export declare type SerialStateCallback = StateCallback<Serial>;
@@ -0,0 +1 @@
1
+ export declare type StateCallback<T> = (value: T, signalName?: string) => void;
@@ -0,0 +1,20 @@
1
+ export * from "./Analog";
2
+ export * from "./IAnalogEventAction";
3
+ export * from "./IAnalogState";
4
+ export * from "./IAnalogSignal";
5
+ export * from "./AnalogStateCallback";
6
+ export * from "./Digital";
7
+ export * from "./IDigitalEventAction";
8
+ export * from "./IDigitalState";
9
+ export * from "./IDigitalSignal";
10
+ export * from "./DigitalStateCallback";
11
+ export * from "./Serial";
12
+ export * from "./ISerialEventAction";
13
+ export * from "./ISerialState";
14
+ export * from "./ISerialSignal";
15
+ export * from "./SerialStateCallback";
16
+ export * from "./StateCallback";
17
+ export * from "./IStateSubscription";
18
+ export * from "./IBaseEventAction";
19
+ export * from "./IBaseState";
20
+ export * from "./IBaseSignal";
@@ -0,0 +1,3 @@
1
+ import { IBaseSignal } from "../types";
2
+ export declare function getSignalCollection<TState, TEventAction>(length: number, state: TState[], action: TEventAction[]): IBaseSignal<TState, TEventAction>[];
3
+ export default getSignalCollection;
@@ -0,0 +1 @@
1
+ export * from "./getSignalCollection";
package/package.json ADDED
@@ -0,0 +1,135 @@
1
+ {
2
+ "name": "@norgate-av/react-crestron-ch5-hooks",
3
+ "description": "A collection of Crestron CH5 hooks ⚓ for React 😀",
4
+ "version": "1.0.0",
5
+ "keywords": [
6
+ "react",
7
+ "hooks",
8
+ "crestron",
9
+ "ch5"
10
+ ],
11
+ "license": "MIT",
12
+ "main": "dist/index.js",
13
+ "module": "dist/react-crestron-ch5-hooks.esm.js",
14
+ "typings": "dist/index.d.ts",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/Norgate-AV-Solutions-Ltd/react-crestron-ch5-hooks.git"
18
+ },
19
+ "bugs": {
20
+ "url": "https://github.com/Norgate-AV-Solutions-Ltd/react-crestron-ch5-hooks/issues"
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "engines": {
26
+ "node": ">=14"
27
+ },
28
+ "scripts": {
29
+ "start": "yarn resolve:crcomlib && tsdx watch",
30
+ "build": "yarn clean:dist && yarn resolve:crcomlib && tsdx build --format cjs,esm,umd",
31
+ "test": "yarn resolve:crcomlib && tsdx test --passWithNoTests",
32
+ "test:watch": "yarn resolve:crcomlib && tsdx test --passWithNoTests --watch",
33
+ "test:coverage": "yarn clean:coverage && yarn resolve:crcomlib && tsdx test --passWithNoTests --coverage",
34
+ "lint": "eslint .",
35
+ "lint:fix": "eslint --fix .",
36
+ "prepare": "husky install",
37
+ "size": "size-limit",
38
+ "analyze": "size-limit --why",
39
+ "clean:dist": "rimraf dist",
40
+ "clean:coverage": "rimraf coverage",
41
+ "clean:all": "yarn clean:dist && yarn clean:coverage",
42
+ "semantic-release": "semantic-release",
43
+ "commit": "git-cz",
44
+ "pretty:fix": "prettier --write .",
45
+ "resolve:crcomlib": "run-script-os",
46
+ "resolve:crcomlib:default": "./node_modules/node-jq/bin/jq '.main=\"build_bundles/cjs/cr-com-lib.js\"' $npm_package_crestron_crcomlib_packageJson | sponge $npm_package_crestron_crcomlib_packageJson",
47
+ "resolve:crcomlib:windows": "./node_modules/node-jq/bin/jq \".main=\"\"build_bundles/cjs/cr-com-lib.js\"\"\" %npm_package_crestron_crcomlib_packageJson% | sponge %npm_package_crestron_crcomlib_packageJson%",
48
+ "doctoc": "doctoc --title '## Contents 📖' README.md",
49
+ "contrib:add": "all-contributors add",
50
+ "contrib:generate": "all-contributors generate",
51
+ "contrib:check": "all-contributors check"
52
+ },
53
+ "peerDependencies": {
54
+ "@crestron/ch5-crcomlib": "^1.2.0",
55
+ "@norgate-av/crestron-ch5-helper": "^1.1.0",
56
+ "react": ">=16"
57
+ },
58
+ "size-limit": [
59
+ {
60
+ "path": "dist/react-crestron-ch5-hooks.cjs.production.min.js",
61
+ "limit": "10 KB"
62
+ },
63
+ {
64
+ "path": "dist/react-crestron-ch5-hooks.esm.js",
65
+ "limit": "10 KB"
66
+ }
67
+ ],
68
+ "devDependencies": {
69
+ "@commitlint/cli": "^16.2.3",
70
+ "@commitlint/config-conventional": "^16.2.1",
71
+ "@crestron/ch5-crcomlib": "^1.2.0",
72
+ "@norgate-av/crestron-ch5-helper": "^1.1.0",
73
+ "@size-limit/preset-small-lib": "^7.0.8",
74
+ "@testing-library/react": "^13.1.1",
75
+ "@types/react": "^18.0.6",
76
+ "@types/react-dom": "^18.0.2",
77
+ "@types/rimraf": "^3.0.2",
78
+ "@typescript-eslint/eslint-plugin": "^5.20.0",
79
+ "@typescript-eslint/parser": "^5.20.0",
80
+ "all-contributors-cli": "^6.20.0",
81
+ "cz-conventional-changelog": "3.3.0",
82
+ "doctoc": "^2.1.0",
83
+ "eslint": "^8.14.0",
84
+ "eslint-config-airbnb": "^19.0.4",
85
+ "eslint-config-airbnb-typescript": "^16.1.4",
86
+ "eslint-config-prettier": "^8.5.0",
87
+ "eslint-plugin-import": "^2.25.4",
88
+ "eslint-plugin-jsx-a11y": "^6.5.1",
89
+ "eslint-plugin-prettier": "^4.0.0",
90
+ "eslint-plugin-react": "^7.29.4",
91
+ "eslint-plugin-react-hooks": "^4.3.0",
92
+ "husky": "^7.0.4",
93
+ "lint-staged": "^12.4.0",
94
+ "node-jq": "^2.3.3",
95
+ "prettier": "^2.6.0",
96
+ "react": "^18.0.0",
97
+ "react-dom": "^18.0.0",
98
+ "rimraf": "^3.0.2",
99
+ "run-script-os": "^1.1.6",
100
+ "semantic-release": "^19.0.2",
101
+ "size-limit": "^7.0.8",
102
+ "sponge": "^0.1.0",
103
+ "tsdx": "^0.14.1",
104
+ "tslib": "^2.4.0",
105
+ "typescript": "^4.6.3"
106
+ },
107
+ "crestron": {
108
+ "crcomlib": {
109
+ "root": "./node_modules/@crestron/ch5-crcomlib",
110
+ "packageJson": "./node_modules/@crestron/ch5-crcomlib/package.json",
111
+ "bundle": {
112
+ "name": "cr-com-lib.js",
113
+ "path": {
114
+ "umd": "./node_modules/@crestron/ch5-crcomlib/build_bundles/umd/cr-com-lib.js",
115
+ "cjs": "build_bundles/cjs/cr-com-lib.js"
116
+ }
117
+ }
118
+ }
119
+ },
120
+ "lint-staged": {
121
+ "*?(test|spec).{js,jsx,ts,tsx}": [
122
+ "yarn lint:fix",
123
+ "yarn pretty:fix",
124
+ "yarn test"
125
+ ],
126
+ "*.{css,scss,md,html,json,yml,yaml}": [
127
+ "yarn pretty:fix"
128
+ ]
129
+ },
130
+ "config": {
131
+ "commitizen": {
132
+ "path": "./node_modules/cz-conventional-changelog"
133
+ }
134
+ }
135
+ }