UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

76 lines (75 loc) 2.72 kB
import { _defineProperty } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.mjs"; //#region src/Observable.ts /** * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-2#events} * @see {@link http://fabric5.fabricjs.com/events|Events demo} */ var Observable = class { constructor() { _defineProperty(this, "__eventListeners", {}); } on(arg0, handler) { if (!this.__eventListeners) this.__eventListeners = {}; if (typeof arg0 === "object") { Object.entries(arg0).forEach(([eventName, handler]) => { this.on(eventName, handler); }); return () => this.off(arg0); } else if (handler) { const eventName = arg0; if (!this.__eventListeners[eventName]) this.__eventListeners[eventName] = []; this.__eventListeners[eventName].push(handler); return () => this.off(eventName, handler); } else return () => false; } once(arg0, handler) { if (typeof arg0 === "object") { const disposers = []; Object.entries(arg0).forEach(([eventName, handler]) => { disposers.push(this.once(eventName, handler)); }); return () => disposers.forEach((d) => d()); } else if (handler) { const disposer = this.on(arg0, function onceHandler(...args) { handler.call(this, ...args); disposer(); }); return disposer; } else return () => false; } /** * @private * @param {string} eventName * @param {Function} [handler] */ _removeEventListener(eventName, handler) { if (!this.__eventListeners[eventName]) return; if (handler) { const eventListener = this.__eventListeners[eventName]; const index = eventListener.indexOf(handler); index > -1 && eventListener.splice(index, 1); } else this.__eventListeners[eventName] = []; } off(arg0, handler) { if (!this.__eventListeners) return; if (typeof arg0 === "undefined") for (const eventName in this.__eventListeners) this._removeEventListener(eventName); else if (typeof arg0 === "object") Object.entries(arg0).forEach(([eventName, handler]) => { this._removeEventListener(eventName, handler); }); else this._removeEventListener(arg0, handler); } /** * Fires event with an optional options object * @param {String} eventName Event name to fire * @param {Object} [options] Options object */ fire(eventName, options) { var _this$__eventListener; if (!this.__eventListeners) return; const listenersForEvent = (_this$__eventListener = this.__eventListeners[eventName]) === null || _this$__eventListener === void 0 ? void 0 : _this$__eventListener.concat(); if (listenersForEvent) for (let i = 0; i < listenersForEvent.length; i++) listenersForEvent[i].call(this, options || {}); } }; //#endregion export { Observable }; //# sourceMappingURL=Observable.mjs.map