-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathJSXExpressionContainer.ts
29 lines (26 loc) · 1.11 KB
/
JSXExpressionContainer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import type MagicString from 'magic-string';
import type { NormalizedJsxOptions } from '../../rollup/types';
import type { RenderOptions } from '../../utils/renderHelpers';
import type { InclusionContext } from '../ExecutionContext';
import { UNKNOWN_PATH } from '../utils/PathTracker';
import type JSXEmptyExpression from './JSXEmptyExpression';
import type * as NodeType from './NodeType';
import type { ExpressionNode } from './shared/Node';
import { NodeBase } from './shared/Node';
export default class JSXExpressionContainer extends NodeBase {
type!: NodeType.tJSXExpressionContainer;
expression!: ExpressionNode | JSXEmptyExpression;
includeNode(context: InclusionContext) {
this.included = true;
if (!this.deoptimized) this.applyDeoptimizations();
this.expression.includePath(UNKNOWN_PATH, context);
}
render(code: MagicString, options: RenderOptions): void {
const { mode } = this.scope.context.options.jsx as NormalizedJsxOptions;
if (mode !== 'preserve') {
code.remove(this.start, this.expression.start);
code.remove(this.expression.end, this.end);
}
this.expression.render(code, options);
}
}