145 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.JSXAttribute = JSXAttribute;
 | 
						|
exports.JSXIdentifier = JSXIdentifier;
 | 
						|
exports.JSXNamespacedName = JSXNamespacedName;
 | 
						|
exports.JSXMemberExpression = JSXMemberExpression;
 | 
						|
exports.JSXSpreadAttribute = JSXSpreadAttribute;
 | 
						|
exports.JSXExpressionContainer = JSXExpressionContainer;
 | 
						|
exports.JSXSpreadChild = JSXSpreadChild;
 | 
						|
exports.JSXText = JSXText;
 | 
						|
exports.JSXElement = JSXElement;
 | 
						|
exports.JSXOpeningElement = JSXOpeningElement;
 | 
						|
exports.JSXClosingElement = JSXClosingElement;
 | 
						|
exports.JSXEmptyExpression = JSXEmptyExpression;
 | 
						|
exports.JSXFragment = JSXFragment;
 | 
						|
exports.JSXOpeningFragment = JSXOpeningFragment;
 | 
						|
exports.JSXClosingFragment = JSXClosingFragment;
 | 
						|
 | 
						|
function JSXAttribute(node) {
 | 
						|
  this.print(node.name, node);
 | 
						|
 | 
						|
  if (node.value) {
 | 
						|
    this.token("=");
 | 
						|
    this.print(node.value, node);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function JSXIdentifier(node) {
 | 
						|
  this.word(node.name);
 | 
						|
}
 | 
						|
 | 
						|
function JSXNamespacedName(node) {
 | 
						|
  this.print(node.namespace, node);
 | 
						|
  this.token(":");
 | 
						|
  this.print(node.name, node);
 | 
						|
}
 | 
						|
 | 
						|
function JSXMemberExpression(node) {
 | 
						|
  this.print(node.object, node);
 | 
						|
  this.token(".");
 | 
						|
  this.print(node.property, node);
 | 
						|
}
 | 
						|
 | 
						|
function JSXSpreadAttribute(node) {
 | 
						|
  this.token("{");
 | 
						|
  this.token("...");
 | 
						|
  this.print(node.argument, node);
 | 
						|
  this.token("}");
 | 
						|
}
 | 
						|
 | 
						|
function JSXExpressionContainer(node) {
 | 
						|
  this.token("{");
 | 
						|
  this.print(node.expression, node);
 | 
						|
  this.token("}");
 | 
						|
}
 | 
						|
 | 
						|
function JSXSpreadChild(node) {
 | 
						|
  this.token("{");
 | 
						|
  this.token("...");
 | 
						|
  this.print(node.expression, node);
 | 
						|
  this.token("}");
 | 
						|
}
 | 
						|
 | 
						|
function JSXText(node) {
 | 
						|
  const raw = this.getPossibleRaw(node);
 | 
						|
 | 
						|
  if (raw != null) {
 | 
						|
    this.token(raw);
 | 
						|
  } else {
 | 
						|
    this.token(node.value);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function JSXElement(node) {
 | 
						|
  const open = node.openingElement;
 | 
						|
  this.print(open, node);
 | 
						|
  if (open.selfClosing) return;
 | 
						|
  this.indent();
 | 
						|
 | 
						|
  for (const child of node.children) {
 | 
						|
    this.print(child, node);
 | 
						|
  }
 | 
						|
 | 
						|
  this.dedent();
 | 
						|
  this.print(node.closingElement, node);
 | 
						|
}
 | 
						|
 | 
						|
function spaceSeparator() {
 | 
						|
  this.space();
 | 
						|
}
 | 
						|
 | 
						|
function JSXOpeningElement(node) {
 | 
						|
  this.token("<");
 | 
						|
  this.print(node.name, node);
 | 
						|
  this.print(node.typeParameters, node);
 | 
						|
 | 
						|
  if (node.attributes.length > 0) {
 | 
						|
    this.space();
 | 
						|
    this.printJoin(node.attributes, node, {
 | 
						|
      separator: spaceSeparator
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  if (node.selfClosing) {
 | 
						|
    this.space();
 | 
						|
    this.token("/>");
 | 
						|
  } else {
 | 
						|
    this.token(">");
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function JSXClosingElement(node) {
 | 
						|
  this.token("</");
 | 
						|
  this.print(node.name, node);
 | 
						|
  this.token(">");
 | 
						|
}
 | 
						|
 | 
						|
function JSXEmptyExpression(node) {
 | 
						|
  this.printInnerComments(node);
 | 
						|
}
 | 
						|
 | 
						|
function JSXFragment(node) {
 | 
						|
  this.print(node.openingFragment, node);
 | 
						|
  this.indent();
 | 
						|
 | 
						|
  for (const child of node.children) {
 | 
						|
    this.print(child, node);
 | 
						|
  }
 | 
						|
 | 
						|
  this.dedent();
 | 
						|
  this.print(node.closingFragment, node);
 | 
						|
}
 | 
						|
 | 
						|
function JSXOpeningFragment() {
 | 
						|
  this.token("<");
 | 
						|
  this.token(">");
 | 
						|
}
 | 
						|
 | 
						|
function JSXClosingFragment() {
 | 
						|
  this.token("</");
 | 
						|
  this.token(">");
 | 
						|
} |