UNPKG

@web-native-js/observer

Version:

A simple set of functions for intercepting and observing JavaScript objects and arrays.

37 lines (34 loc) 1.14 kB
/** * @imports */ import _isFunction from '@webqit/util/js/isFunction.js'; import _isTypeObject from '@webqit/util/js/isTypeObject.js'; import _getType from '@webqit/util/js/getType.js'; import getObservers from './getObservers.js'; /** * Removes observers from an subject's firebase. * * @param array|object subject * @param string|array|function filter * @param function originalHandler * @param object params * * @return void */ export default function(subject, filter, originalHandler = null, params = {}) { if (!subject || !_isTypeObject(subject)) { throw new Error('Observable subjects must be of type object; "' + _getType(subject) + '" given!'); } if (_isFunction(filter)) { params = arguments.length > 2 ? originalHandler : {}; originalHandler = filter; filter = null; } if (originalHandler && !_isFunction(originalHandler)) { throw new Error('Handler must be a function; "' + _getType(originalHandler) + '" given!'); } var observers; if (observers = getObservers(subject, false)) { return observers.forget({filter, originalHandler, params,}); } }