Files
game-cards-poker-design/frontend/node_modules/fabric/dist/src/Observable.min.mjs.map

1 line
7.4 KiB
Plaintext
Raw Normal View History

{"version":3,"file":"Observable.min.mjs","names":[],"sources":["../../src/Observable.ts"],"sourcesContent":["export type TEventCallback<T = any> = (options: T) => any;\n\ntype EventRegistryObject<E> = {\n [K in keyof E]?: TEventCallback<E[K]>;\n};\n\n/**\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabric5.fabricjs.com/events|Events demo}\n */\nexport class Observable<EventSpec> {\n private __eventListeners: Record<keyof EventSpec, TEventCallback[]> =\n {} as Record<keyof EventSpec, TEventCallback[]>;\n\n /**\n * Observes specified event\n * @alias on\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n on(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (!this.__eventListeners) {\n this.__eventListeners = {} as Record<keyof EventSpec, TEventCallback[]>;\n }\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this.on(eventName as K, handler as TEventCallback);\n });\n return () => this.off(arg0);\n } else if (handler) {\n const eventName = arg0;\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n return () => this.off(eventName, handler);\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * Observes specified event **once**\n * @alias once\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n once(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n const disposers: VoidFunction[] = [];\n Object.entries(arg0).forEach(([eventName, handler]) => {\n disposers.push(this.once(eventName as K, handler as TEventCallback));\n });\n return () => disposers.forEach((d) => d());\n } else if (handler) {\n const disposer = this.on<K, E>(\n arg0,\n function onceHandler(this: Observable<EventSpec>, ...args) {\n handler.call(this, ...args);\n disposer();\n },\n );\n return disposer;\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * @private\n * @param {string} eventName\n * @param {Function} [handler]\n */\n private _removeEventListener<K extends keyof EventSpec>(\n eventName: K,\n handler?: TEventCallback,\n ) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n\n if (handler) {\n const eventListener = this.__eventListeners[eventName];\n const index = eventListener.indexOf(handler);\n index > -1 && eventListener.splice(index, 1);\n } else {\n this.__eventListeners[eventName] = [];\n }\n }\n\n /**\n * Unsubscribe all event listeners for eventname.\n * Do not use this p