UNPKG

streamdeck-typescript

Version:

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

93 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SettingsManager = void 0; class SettingsManager { constructor(_handler) { this._handler = _handler; this._settings = new Map(); this._globalSettings = {}; this._autoSave = true; this._autoDebounce = true; this.contextSettingsTimeoutIds = {}; } disableAutoSave() { this._autoSave = false; } disableAutoDebounce() { this._autoDebounce = false; } getGlobalSettings() { return this._globalSettings; } setGlobalSettings(settings, ms = 0) { this._globalSettings = settings; if (this._autoSave) this.saveGlobalSettings(ms); } setGlobalSettingsAttributes(attributes, ms = 0) { this.setGlobalSettings(Object.assign(Object.assign({}, this.getGlobalSettings()), attributes)); } getContextSettings(context) { return this._settings.get(context); } getAllContextSettings() { return this._settings; } setContextSettings(context, settings, ms = 0) { this._settings.set(context, settings); if (this._autoSave) this.saveContextSettings(context, ms); } setContextSettingsAttributes(context, attributes, ms = 0) { const oldSettings = this.getContextSettings(context); if (oldSettings) this.setContextSettings(context, Object.assign(Object.assign({}, oldSettings), attributes), ms); else this.setContextSettings(context, Object.assign({}, attributes), ms); } saveGlobalSettings(ms) { const fn = () => { this._handler.setGlobalSettings(this._globalSettings); }; if (this._autoDebounce) { this.debounceGlobalSettingsCall(fn, ms); } else { fn(); } } saveContextSettings(context, ms) { const fn = () => { if (context === 'ALL') { for (let [context, setting] of this._settings) { this._handler.setSettings(setting, context); } } else if (this._settings.get(context)) { this._handler.setSettings(this._settings.get(context), context); } }; if (this._autoDebounce) { this.debounceContextSettingsCall(context, fn, ms); } else { fn(); } } cacheGlobalSettings(settings) { this._globalSettings = settings; } cacheContextSettings(context, settings) { this._settings.set(context, settings); } debounceGlobalSettingsCall(fn, ms) { clearTimeout(this.globalSettingsTimeoutId); this.globalSettingsTimeoutId = setTimeout(fn, ms); } debounceContextSettingsCall(context, fn, ms) { clearTimeout(this.contextSettingsTimeoutIds[context]); this.contextSettingsTimeoutIds[context] = setTimeout(fn, ms); } } exports.SettingsManager = SettingsManager; //# sourceMappingURL=settings.manager.js.map