UNPKG

react-magic-state

Version:
39 lines (38 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const base_1 = require("./base"); const changeTracker_1 = require("../changeTracker"); class SetHandler extends base_1.BaseHandler { constructor(target) { super(target); this._methodWrappers = new WeakMap(); } get(target, propKey, receiver) { const value = super.get(target, propKey, receiver); if (value instanceof Function) { return this._wrap(value); } return value; } _wrap(target) { if (this._methodWrappers.has(target)) { return this._methodWrappers.get(target); } const set = this._target; const wrapper = function () { const beforeSize = set.size; try { return Reflect.apply(target, set, arguments); } finally { if (beforeSize !== set.size) { changeTracker_1.changeTracker.registerChange(set, "size"); changeTracker_1.changeTracker.registerChange(set, Symbol.iterator); } } }; this._methodWrappers.set(target, wrapper); return wrapper; } } exports.SetHandler = SetHandler;