///
///
class ELGSDPropertyInspector extends ELGSDApi {
constructor() {
super();
if (ELGSDPropertyInspector.__instance) {
return ELGSDPropertyInspector.__instance;
}
ELGSDPropertyInspector.__instance = this;
}
/**
* Registers a callback function for when Stream Deck sends data to the property inspector
* @param {string} actionUUID
* @param {function} fn
* @returns ELGSDStreamDeck
*/
onSendToPropertyInspector(actionUUID, fn) {
if (typeof actionUUID != 'string') {
console.error('An action UUID string is required for onSendToPropertyInspector.');
}
if (!fn) {
console.error(
'A callback function for the sendToPropertyInspector event is required for onSendToPropertyInspector.'
);
}
this.on(`${actionUUID}.${Events.sendToPropertyInspector}`, (jsn) => fn(jsn));
return this;
}
/**
* Send payload from the property inspector to the plugin
* @param {object} payload
*/
sendToPlugin(payload) {
this.send(this.uuid, Events.sendToPlugin, {
action: this?.actionInfo?.action,
payload: payload || null,
});
}
/**
* Save the actions's persistent data.
* @param {object} payload
*/
setSettings(payload) {
this.send(this.uuid, Events.setSettings, {
action: this?.actionInfo?.action,
payload: payload || null,
});
}
/**
* Request the actions's persistent data. StreamDeck does not return the data, but trigger the actions's didReceiveSettings event
*/
getSettings() {
this.send(this.uuid, Events.getSettings);
}
}
const $PI = new ELGSDPropertyInspector();
/**
* connectElgatoStreamDeckSocket
* This is the first function StreamDeck Software calls, when
* establishing the connection to the plugin or the Property Inspector
* @param {string} port - The socket's port to communicate with StreamDeck software.
* @param {string} uuid - A unique identifier, which StreamDeck uses to communicate with the plugin
* @param {string} messageType - Identifies, if the event is meant for the property inspector or the plugin.
* @param {string} appInfoString - Information about the host (StreamDeck) application
* @param {string} actionInfo - Context is an internal identifier used to communicate to the host application.
*/
function connectElgatoStreamDeckSocket(port, uuid, messageType, appInfoString, actionInfo) {
const delay = window?.initialConnectionDelay || 0;
setTimeout(() => {
$PI.connect(port, uuid, messageType, appInfoString, actionInfo);
}, delay);
}