+++ /dev/null
-import {kebabToCamel} from "../services/text";
-
-
-export class Settings {
-
- constructor(initialSettings) {
- this.settingMap = {};
- this.changeListeners = {};
- this.merge(initialSettings);
- }
-
- set(key, value) {
- key = this.normaliseKey(key);
- this.settingMap[key] = value;
- for (const listener of (this.changeListeners[key] || [])) {
- listener(value);
- }
- }
-
- get(key) {
- return this.settingMap[this.normaliseKey(key)] || null;
- }
-
- merge(settings) {
- for (const [key, value] of Object.entries(settings)) {
- this.set(key, value);
- }
- }
-
- onChange(key, callback) {
- key = this.normaliseKey(key);
- const listeners = this.changeListeners[this.normaliseKey(key)] || [];
- listeners.push(callback);
- this.changeListeners[this.normaliseKey(key)] = listeners;
- }
-
- normaliseKey(key) {
- return kebabToCamel(key.replace('md-', ''));
- }
-}
\ No newline at end of file