@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
JavaScript
/**
* @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,});
}
}