UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

50 lines (48 loc) 1.85 kB
"use strict"; var REACT_LIFECYCLE_EXCLUSIONS = [ 'setState', 'render', 'componentWillMount', 'componentDidMount', 'componentWillReceiveProps', 'shouldComponentUpdate', 'componentWillUpdate', 'componentDidUpdate', 'componentWillUnmount' ]; /** * Allows you to hoist methods, except those in an exclusion set from a source object into a destination object. * @param destination The instance of the object to hoist the methods onto. * @param source The instance of the object where the methods are hoisted from. * @param exclusions (Optional) What methods to exclude from being hoisted. * @returns {string[]} An array of names of methods that were hoisted. */ function hoistMethods(destination, source, exclusions) { if (exclusions === void 0) { exclusions = REACT_LIFECYCLE_EXCLUSIONS; } var hoisted = []; var _loop_1 = function(methodName) { if (typeof source[methodName] === 'function' && destination[methodName] === undefined && (!exclusions || exclusions.indexOf(methodName) === -1)) { hoisted.push(methodName); /* tslint:disable:no-function-expression */ destination[methodName] = function () { source[methodName].apply(source, arguments); }; } }; for (var methodName in source) { _loop_1(methodName); } return hoisted; } exports.hoistMethods = hoistMethods; /** * Provides a method for convenience to unhoist hoisted methods. * @param {any} source The source object upon which methods were hoisted. * @param {string[]} methodNames An array of method names to unhoist. */ function unhoistMethods(source, methodNames) { methodNames .forEach(function (methodName) { return delete source[methodName]; }); } exports.unhoistMethods = unhoistMethods; //# sourceMappingURL=hoist.js.map