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(">");
							 | 
						||
| 
								 | 
							
								}
							 |