storybook-addon-react-renders
Version:
Storybook addon for renders analysis of React components.
87 lines (70 loc) • 3.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.filterEventsWithOptions = exports.formatTitle = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _constants = require("../constants");
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var formatTitle = exports.formatTitle = function formatTitle(_ref) {
var name = _ref.name,
type = _ref.type;
switch (type) {
case _constants.DIFF_TYPES.SAME:
return name + ": Value is the same (equal by reference).";
case _constants.DIFF_TYPES.EQUAL:
return name + ": Value did not change.";
case _constants.DIFF_TYPES.FUNCTIONS:
return name + ": Changes are in functions only.";
default:
return name;
}
};
var filterEventsWithOptions = exports.filterEventsWithOptions = function filterEventsWithOptions(_ref2) {
var events = _ref2.events,
options = _ref2.options;
var falsyFilteredEvents = events.filter(function (event) {
return event.prev;
});
var componentAndTypeFilteredEvents = options.excludeComponents.length || options.excludeEventTypes.length ? falsyFilteredEvents.filter(function (event) {
var _event$name$split = event.name.split("."),
_event$name$split2 = _slicedToArray(_event$name$split, 2),
component = _event$name$split2[0],
type = _event$name$split2[1];
return !options.excludeEventTypes.includes(type) && !options.excludeComponents.includes(component);
}) : falsyFilteredEvents;
var propFilteredEvents = options.filterEventKeys.length ? componentAndTypeFilteredEvents.map(function (event) {
return _extends({}, event, filterAllowedKeysFromPrevAndNext({
allowedKeys: options.filterEventKeys,
prev: event.prev,
next: event.next
}));
}) : componentAndTypeFilteredEvents;
var emptyFilteredEvents = options.showEmptyEvents ? propFilteredEvents : propFilteredEvents.filter(function (event) {
return !isEmptyObject(event.prev);
});
return emptyFilteredEvents;
};
var isEmptyObject = function isEmptyObject(object) {
return !Object.keys(object).length;
};
// TODO: Merge these together for performance reasons.
var filterAllowedKeysFromPrevAndNext = function filterAllowedKeysFromPrevAndNext(_ref3) {
var allowedKeys = _ref3.allowedKeys,
prev = _ref3.prev,
next = _ref3.next;
return {
prev: filterAllowedKeysFromObject({ allowedKeys: allowedKeys, object: prev }),
next: filterAllowedKeysFromObject({ allowedKeys: allowedKeys, object: next })
};
};
var filterAllowedKeysFromObject = function filterAllowedKeysFromObject(_ref4) {
var allowedKeys = _ref4.allowedKeys,
object = _ref4.object;
return Object.keys(object).filter(function (key) {
return allowedKeys.includes(key);
}).reduce(function (obj, key) {
return _extends({}, obj, _defineProperty({}, key, object[key]));
}, {});
};