UNPKG

react-type-snob

Version:

Encourages good typographic details in your React app

33 lines (28 loc) 3.41 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getDisplayName; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function getDisplayName(type, props) { var displayName = 'Unknown Element'; if (type.displayName) { // if the component has a React `displayName`, let's use it displayName = type.displayName; } else if (typeof type === 'string') { // if it's a string, we'll use it straight up, then append some identifying stuff displayName = type; if (props) { if (typeof props.id === 'string') { displayName = displayName + '#' + props.id; } else if (typeof props.className === 'string') { displayName = [displayName].concat(_toConsumableArray(props.className.split(' '))).join('.'); } } } else if (typeof type === 'function' && type.name) { // if it's a function, let's use the name if it's not blank! displayName = type.name; } return displayName; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9nZXQtZGlzcGxheS1uYW1lLmpzIl0sIm5hbWVzIjpbImdldERpc3BsYXlOYW1lIiwidHlwZSIsInByb3BzIiwiZGlzcGxheU5hbWUiLCJpZCIsImNsYXNzTmFtZSIsInNwbGl0Iiwiam9pbiIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUF3QkEsYzs7OztBQUFULFNBQVNBLGNBQVQsQ0FBd0JDLElBQXhCLEVBQThCQyxLQUE5QixFQUFxQztBQUNsRCxNQUFJQyxjQUFjLGlCQUFsQjs7QUFFQSxNQUFJRixLQUFLRSxXQUFULEVBQXNCO0FBQ3BCO0FBQ0FBLGtCQUFjRixLQUFLRSxXQUFuQjtBQUNELEdBSEQsTUFHTyxJQUFJLE9BQU9GLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDbkM7QUFDQUUsa0JBQWNGLElBQWQ7QUFDQSxRQUFJQyxLQUFKLEVBQVc7QUFDVCxVQUFJLE9BQU9BLE1BQU1FLEVBQWIsS0FBb0IsUUFBeEIsRUFBa0M7QUFDaENELHNCQUFpQkEsV0FBakIsU0FBZ0NELE1BQU1FLEVBQXRDO0FBQ0QsT0FGRCxNQUVPLElBQUksT0FBT0YsTUFBTUcsU0FBYixLQUEyQixRQUEvQixFQUF5QztBQUM5Q0Ysc0JBQWMsQ0FBQ0EsV0FBRCw0QkFBaUJELE1BQU1HLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCLEdBQXRCLENBQWpCLEdBQTZDQyxJQUE3QyxDQUFrRCxHQUFsRCxDQUFkO0FBQ0Q7QUFDRjtBQUNGLEdBVk0sTUFVQSxJQUFJLE9BQU9OLElBQVAsS0FBZ0IsVUFBaEIsSUFBOEJBLEtBQUtPLElBQXZDLEVBQTZDO0FBQ2xEO0FBQ0FMLGtCQUFjRixLQUFLTyxJQUFuQjtBQUNEOztBQUVELFNBQU9MLFdBQVA7QUFDRCIsImZpbGUiOiJnZXQtZGlzcGxheS1uYW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUodHlwZSwgcHJvcHMpIHtcbiAgbGV0IGRpc3BsYXlOYW1lID0gJ1Vua25vd24gRWxlbWVudCc7XG5cbiAgaWYgKHR5cGUuZGlzcGxheU5hbWUpIHtcbiAgICAvLyBpZiB0aGUgY29tcG9uZW50IGhhcyBhIFJlYWN0IGBkaXNwbGF5TmFtZWAsIGxldCdzIHVzZSBpdFxuICAgIGRpc3BsYXlOYW1lID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBpZiBpdCdzIGEgc3RyaW5nLCB3ZSdsbCB1c2UgaXQgc3RyYWlnaHQgdXAsIHRoZW4gYXBwZW5kIHNvbWUgaWRlbnRpZnlpbmcgc3R1ZmZcbiAgICBkaXNwbGF5TmFtZSA9IHR5cGU7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLmlkID09PSAnc3RyaW5nJykge1xuICAgICAgICBkaXNwbGF5TmFtZSA9IGAke2Rpc3BsYXlOYW1lfSMke3Byb3BzLmlkfWA7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpc3BsYXlOYW1lID0gW2Rpc3BsYXlOYW1lLCAuLi5wcm9wcy5jbGFzc05hbWUuc3BsaXQoJyAnKV0uam9pbignLicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlLm5hbWUpIHtcbiAgICAvLyBpZiBpdCdzIGEgZnVuY3Rpb24sIGxldCdzIHVzZSB0aGUgbmFtZSBpZiBpdCdzIG5vdCBibGFuayFcbiAgICBkaXNwbGF5TmFtZSA9IHR5cGUubmFtZTtcbiAgfVxuXG4gIHJldHVybiBkaXNwbGF5TmFtZTtcbn1cbiJdfQ==