UNPKG

@turbox3d/reactivity

Version:

Large-scale reactive state management library

60 lines (59 loc) 2.08 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.emitter = exports.EEventName = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _shared = require("@turbox3d/shared"); var _config = require("../const/config"); var EEventName; (function (EEventName) { EEventName["storeOnActive"] = "storeOnActive"; EEventName["beforeStoreChange"] = "beforeStoreChange"; EEventName["afterStoreChange"] = "afterStoreChange"; EEventName["asyncAfterStoreChange"] = "asyncAfterStoreChange"; EEventName["setProperty"] = "setProperty"; EEventName["materialCallStackChange"] = "materialCallStackChange"; })(EEventName || (exports.EEventName = EEventName = {})); var Emitter = /*#__PURE__*/function () { function Emitter() { (0, _classCallCheck2["default"])(this, Emitter); this.listeners = {}; } return (0, _createClass2["default"])(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 (_config.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) { (0, _shared.fail)(e); } }); } }, { key: "off", value: function off(eventName) { if (!this.listeners[eventName]) { return; } this.listeners[eventName] = []; } }]); }(); var emitter = exports.emitter = new Emitter();