UNPKG

streamdeck-typescript

Version:

This library will help you build elgato stream deck plugins in typescript

158 lines 6.42 kB
"use strict"; 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