UNPKG

mj-context-menu

Version:
63 lines 1.66 kB
import * as MenuUtil from './menu_util.js'; export class Variable { static fromJson(_factory, { name, getter, setter }, pool) { const variable = new this(name, getter, setter); pool.insert(variable); } constructor(_name, getter, setter) { this._name = _name; this.getter = getter; this.setter = setter; this.items = []; } get name() { return this._name; } getValue(node) { try { return this.getter(node); } catch (e) { MenuUtil.error(e, 'Command of variable ' + this.name + ' failed.'); return null; } } setValue(value, node) { try { this.setter(value, node); } catch (e) { MenuUtil.error(e, 'Command of variable ' + this.name + ' failed.'); } this.update(); } register(item) { if (this.items.indexOf(item) === -1) { this.items.push(item); } } unregister(item) { const index = this.items.indexOf(item); if (index !== -1) { this.items.splice(index, 1); } } update() { this.items.forEach((x) => x.update()); } registerCallback(func) { this.items.forEach((x) => x.registerCallback(func)); } unregisterCallback(func) { this.items.forEach((x) => x.unregisterCallback(func)); } toJson() { return { type: 'variable', name: this.name, getter: this.getter.toString(), setter: this.setter.toString() }; } } //# sourceMappingURL=variable.js.map