UNPKG

relu-core

Version:
38 lines (33 loc) 1.02 kB
var base = require("./base"); module.exports = function rpHandled(origin, changedHandler, addedHandler, removedHandler) { var p = base(); p.constructor = rpHandled; if(!addedHandler && !removedHandler) { var orgChangedHandler = changedHandler; changedHandler = function() { orgChangedHandler(p()); }; origin.onChanged(changedHandler); } else { addedHandler = addedHandler || function(){}; removedHandler = removedHandler || function(){}; origin.onUpdated(changedHandler); origin.onAdded(addedHandler); origin.onRemoved(removedHandler); } origin.ref(p); p.onceDisposed(function() { if(!addedHandler && !removedHandler) { origin.removeChangedListener(changedHandler); } else { origin.removeUpdatedListener(changedHandler); origin.removeAddedListener(addedHandler); origin.removeRemovedListener(removedHandler); } origin.unref(p); }); p._getUndependend = p._get = function() { return origin._getUndependend(); }; return p; };