UNPKG

@turbox3d/reactivity

Version:

Large-scale reactive state management library

53 lines 1.73 kB
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import { fail } from '@turbox3d/shared'; import { ctx } from '../const/config'; export var EEventName; (function (EEventName) { EEventName["storeOnActive"] = "storeOnActive"; EEventName["beforeStoreChange"] = "beforeStoreChange"; EEventName["afterStoreChange"] = "afterStoreChange"; EEventName["asyncAfterStoreChange"] = "asyncAfterStoreChange"; EEventName["setProperty"] = "setProperty"; EEventName["materialCallStackChange"] = "materialCallStackChange"; })(EEventName || (EEventName = {})); var Emitter = /*#__PURE__*/function () { function Emitter() { _classCallCheck(this, Emitter); this.listeners = {}; } return _createClass(Emitter, [{ key: "on", value: function on(eventName, callback) { var listeners = this.listeners[eventName] || []; listeners.push(callback); this.listeners[eventName] = listeners; } }, { key: "emit", value: function emit(eventName, args) { var _this = this; if (ctx.devTool && window && window.__TURBOX_DEVTOOL_GLOBAL_HOOKS__) { window.__TURBOX_DEVTOOL_GLOBAL_HOOKS__.emit(eventName, args); } var listeners = this.listeners[eventName]; if (!Array.isArray(listeners)) return; listeners.forEach(function (callback) { try { callback.apply(_this, [args]); } catch (e) { fail(e); } }); } }, { key: "off", value: function off(eventName) { if (!this.listeners[eventName]) { return; } this.listeners[eventName] = []; } }]); }(); export var emitter = new Emitter();