vue-styleguidist
Version:
Vue components style guide generator
37 lines (36 loc) • 1.63 kB
JavaScript
import "core-js/modules/es.function.name.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.string.replace.js";
import React from 'react';
import Text from 'rsg-components/Text';
import Code from 'rsg-components/Code';
import { unquote, showSpaces } from './util';
// to keep showing those vluei insead of empty, we treat them separaty
var defaultValueBlacklist = ['null', 'undefined', "''", '""'];
export default function renderDefaultHoc(classes) {
return function renderDefault(prop) {
return /*#__PURE__*/React.createElement("p", {
className: classes["default"]
}, function () {
// Workaround for issue https://github.com/reactjs/react-docgen/issues/221
// If prop has defaultValue it can not be required
if (prop.defaultValue) {
if (prop.type) {
var propName = prop.type.name;
if (defaultValueBlacklist.indexOf(prop.defaultValue.value) > -1) {
return /*#__PURE__*/React.createElement(Code, null, prop.defaultValue.value);
} else if (propName === 'func' || propName === 'function' || /^\(\s*\)\s*=>\s*\(?\s*\{(?!^(?:\s*\}\s*\)?))/.test(prop.defaultValue.value)) {
return /*#__PURE__*/React.createElement(Text, {
size: "small",
color: "light",
underlined: true,
title: showSpaces(unquote(prop.defaultValue.value))
}, "Function");
}
}
return /*#__PURE__*/React.createElement(Code, null, showSpaces(unquote(prop.defaultValue.value.replace(/^\(\s*\)\s*=>\s*/, ''))));
}
return '-';
}());
};
}