index.js 812 B

123456789101112131415161718192021222324252627282930
  1. "use strict";
  2. var hasProps = function (jsx) {
  3. return Object.prototype.hasOwnProperty.call(jsx, 'props');
  4. };
  5. var reduceJsxToString = function (previous, current) {
  6. return previous + innerText(current);
  7. };
  8. var innerText = function (jsx) {
  9. if (jsx === null ||
  10. typeof jsx === 'boolean' ||
  11. typeof jsx === 'undefined') {
  12. return '';
  13. }
  14. if (typeof jsx === 'number') {
  15. return jsx.toString();
  16. }
  17. if (typeof jsx === 'string') {
  18. return jsx;
  19. }
  20. if (Array.isArray(jsx)) {
  21. return jsx.reduce(reduceJsxToString, '');
  22. }
  23. if (hasProps(jsx) &&
  24. Object.prototype.hasOwnProperty.call(jsx.props, 'children')) {
  25. return innerText(jsx.props.children);
  26. }
  27. return '';
  28. };
  29. innerText.default = innerText;
  30. module.exports = innerText;