UNPKG

storybook-addon-react-renders

Version:

Storybook addon for renders analysis of React components.

87 lines (70 loc) 3.92 kB
"use strict"; 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])); }, {}); };