streamdeck-typescript
Version:
This library will help you build elgato stream deck plugins in typescript
158 lines • 6.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.StreamDeckPluginHandler = void 0;
const stream_deck_action_class_1 = require("../classes/stream-deck-action.class");
const enums_1 = require("../interfaces/enums");
const action_manager_1 = require("../manager/action.manager");
const stream_deck_handler_base_1 = require("./stream-deck-handler-base");
class StreamDeckPluginHandler extends stream_deck_handler_base_1.StreamDeckHandlerBase {
constructor() {
super();
this._actionManager = new action_manager_1.ActionManager(this);
}
get actionManager() {
return this._actionManager;
}
setTitle(title, context, target = enums_1.TargetType.BOTH, state) {
if (state) {
this.send('setTitle', {
context,
payload: { title, target, state },
});
}
else {
this.send('setTitle', {
context,
payload: { title, target },
});
}
}
setImage(image, context, target = enums_1.TargetType.BOTH, state) {
if (state) {
this.send('setImage', {
context,
payload: { image, target, state },
});
}
else {
this.send('setImage', {
context,
payload: { image, target },
});
}
}
setImageFromUrl(url, context, target = enums_1.TargetType.BOTH, state) {
return new Promise((resolve, reject) => {
let image = new Image();
image.onload = () => {
let canvas = document.createElement('canvas');
canvas.width = image.naturalWidth;
canvas.height = image.naturalHeight;
let ctx = canvas.getContext('2d');
if (!ctx) {
reject(new Error('image failed to load'));
return;
}
ctx.drawImage(image, 0, 0);
image.onload = null;
image.onerror = null;
image = null;
const dataUrl = canvas.toDataURL('image/png');
this.setImage(dataUrl, context, target, state);
resolve(dataUrl);
};
image.onerror = () => {
image.onload = null;
image.onerror = null;
image = null;
reject(new Error('image failed to load'));
};
image.src = url;
});
}
showAlert(context) {
this.send('showAlert', { context });
}
showOk(context) {
this.send('showOk', { context });
}
setState(state, context) {
this.send('setState', {
context: context,
payload: { state },
});
}
switchToProfile(profile, device) {
this.send('switchToProfile', {
context: this.uuid,
device: device ? device : this.info.devices[0].id,
payload: { profile },
});
}
sendToPropertyInspector(payload, action, context) {
this.send('sendToPropertyInspector', {
context,
action: action,
payload,
});
}
_eventHandler(ev) {
var _a, _b, _c;
const eventData = JSON.parse(ev.data);
const event = eventData.event;
if (event !== 'didReceiveGlobalSettings' &&
eventData.context &&
((_a = eventData.payload) === null || _a === void 0 ? void 0 : _a.settings))
this.settingsManager.cacheContextSettings(eventData.context, eventData.payload.settings);
let settings, column, isInMultiAction, row, state, userDesiredState, action, context, device, controller;
action = eventData === null || eventData === void 0 ? void 0 : eventData.action;
context = eventData === null || eventData === void 0 ? void 0 : eventData.context;
device = eventData === null || eventData === void 0 ? void 0 : eventData.device;
const payload = eventData === null || eventData === void 0 ? void 0 : eventData.payload;
settings = payload === null || payload === void 0 ? void 0 : payload.settings;
state = payload === null || payload === void 0 ? void 0 : payload.state;
userDesiredState = payload === null || payload === void 0 ? void 0 : payload.userDesiredState;
isInMultiAction = payload === null || payload === void 0 ? void 0 : payload.isInMultiAction;
column = (_b = payload === null || payload === void 0 ? void 0 : payload.coordinates) === null || _b === void 0 ? void 0 : _b.column;
row = (_c = payload === null || payload === void 0 ? void 0 : payload.coordinates) === null || _c === void 0 ? void 0 : _c.row;
controller = payload === null || payload === void 0 ? void 0 : payload.controller;
const actionClass = this._actionManager.addOrGetAction(context, new stream_deck_action_class_1.StreamDeckActionClass(this));
if (actionClass) {
if (action !== undefined)
actionClass.action = action;
if (context !== undefined)
actionClass.context = context;
if (device !== undefined)
actionClass.device = device;
if (settings !== undefined)
actionClass.settings = settings;
if (column !== undefined)
actionClass.column = column;
if (row !== undefined)
actionClass.row = row;
if (state !== undefined)
actionClass.state = state;
if (userDesiredState !== undefined)
actionClass.userDesiredState = userDesiredState;
if (isInMultiAction !== undefined)
actionClass.isInMultiAction = isInMultiAction;
if (controller !== undefined)
actionClass.controller = controller;
}
super._eventHandler(ev);
}
setFeedback(context, payload) {
this.send('setFeedback', {
context,
payload: payload,
});
}
setFeedbackLayout(context, layout) {
this.send('setFeedbackLayout', {
context,
payload: { layout },
});
}
}
exports.StreamDeckPluginHandler = StreamDeckPluginHandler;
//# sourceMappingURL=stream-deck-plugin-handler.js.map
;