UNPKG

react-native-ui-lib

Version:

UI Components Library for React Native ###### Lateset version support RN44

59 lines (44 loc) 1.98 kB
Object.defineProperty(exports,"__esModule",{value:true});exports. extractComponentInfo=extractComponentInfo;exports. generateSnippet=generateSnippet;var _react=require('react');var _react2=_interopRequireDefault(_react);var _lodash=require('lodash');var _lodash2=_interopRequireDefault(_lodash);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var TAB=' ';var LINE_BREAK='\n';function extractComponentInfo(instance){var componentName=instance.constructor.displayName;var defaultProps=instance.constructor.defaultProps||{};var props=instance.props||{};return{componentName:componentName,defaultProps:defaultProps,props:props};}function generateSnippet(_ref){var componentName=_ref.componentName,defaultProps=_ref.defaultProps,props=_ref.props; var snippet='<'+componentName; _lodash2.default.forEach(props,function(value,key){ if(key==='children'){ return; } var formattedValue='{'+value+'}'; if(_lodash2.default.isObject(value)){ formattedValue='{'+JSON.stringify(value)+'}'; }else if(_lodash2.default.isString(value)){ formattedValue='"'+value+'"'; }else if(_lodash2.default.isBoolean(value)&&value===true){ formattedValue=''; } var hasEmptyValue=_lodash2.default.isUndefined(value)||_lodash2.default.isObject(value)&&_lodash2.default.isEmpty(value); var hasDefaultValue=value==defaultProps[key]; if(!hasEmptyValue&&!hasDefaultValue){ snippet+=''+LINE_BREAK+TAB+key; if(formattedValue){ snippet+='='+formattedValue; } } }); if(props.children){ var childrenSnippets=_react2.default.Children.map(props.children,function(child){ if(_lodash2.default.get(child,'type.displayName')){ var childSnippet=TAB+generateSnippet({ componentName:child.type.displayName, props:child.props||{}, defaultProps:child.type.defaultProps||{}}); return childSnippet; } if(typeof child==='string'){ return child; } }); snippet+='>'+LINE_BREAK+childrenSnippets.join(LINE_BREAK)+LINE_BREAK+'</'+componentName+'>'; }else{ snippet+='/>'; } return snippet; }