You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.9 KiB
80 lines
1.9 KiB
"use strict"; |
|
|
|
exports.__esModule = true; |
|
exports.isReactComponent = undefined; |
|
exports.isCompatTag = isCompatTag; |
|
exports.buildChildren = buildChildren; |
|
|
|
var _index = require("./index"); |
|
|
|
var t = _interopRequireWildcard(_index); |
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } |
|
|
|
var isReactComponent = exports.isReactComponent = t.buildMatchMemberExpression("React.Component"); |
|
|
|
function isCompatTag(tagName) { |
|
return !!tagName && /^[a-z]|\-/.test(tagName); |
|
} |
|
|
|
function cleanJSXElementLiteralChild(child, args) { |
|
var lines = child.value.split(/\r\n|\n|\r/); |
|
|
|
var lastNonEmptyLine = 0; |
|
|
|
for (var i = 0; i < lines.length; i++) { |
|
if (lines[i].match(/[^ \t]/)) { |
|
lastNonEmptyLine = i; |
|
} |
|
} |
|
|
|
var str = ""; |
|
|
|
for (var _i = 0; _i < lines.length; _i++) { |
|
var line = lines[_i]; |
|
|
|
var isFirstLine = _i === 0; |
|
var isLastLine = _i === lines.length - 1; |
|
var isLastNonEmptyLine = _i === lastNonEmptyLine; |
|
|
|
var trimmedLine = line.replace(/\t/g, " "); |
|
|
|
if (!isFirstLine) { |
|
trimmedLine = trimmedLine.replace(/^[ ]+/, ""); |
|
} |
|
|
|
if (!isLastLine) { |
|
trimmedLine = trimmedLine.replace(/[ ]+$/, ""); |
|
} |
|
|
|
if (trimmedLine) { |
|
if (!isLastNonEmptyLine) { |
|
trimmedLine += " "; |
|
} |
|
|
|
str += trimmedLine; |
|
} |
|
} |
|
|
|
if (str) args.push(t.stringLiteral(str)); |
|
} |
|
|
|
function buildChildren(node) { |
|
var elems = []; |
|
|
|
for (var i = 0; i < node.children.length; i++) { |
|
var child = node.children[i]; |
|
|
|
if (t.isJSXText(child)) { |
|
cleanJSXElementLiteralChild(child, elems); |
|
continue; |
|
} |
|
|
|
if (t.isJSXExpressionContainer(child)) child = child.expression; |
|
if (t.isJSXEmptyExpression(child)) continue; |
|
|
|
elems.push(child); |
|
} |
|
|
|
return elems; |
|
} |