jsx.ts
1.55 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import * as React from 'react'
import Emotion, { createEmotionProps } from './emotion-element'
import { EmotionJSX } from './jsx-namespace'
import { hasOwn } from './utils'
export const jsx: typeof React.createElement = function (
type: any,
props: any
): any {
// eslint-disable-next-line prefer-rest-params
let args: any = arguments
if (props == null || !hasOwn.call(props, 'css')) {
return React.createElement.apply(undefined, args)
}
let argsLength = args.length
let createElementArgArray: any = new Array(argsLength)
createElementArgArray[0] = Emotion
createElementArgArray[1] = createEmotionProps(type, props)
for (let i = 2; i < argsLength; i++) {
createElementArgArray[i] = args[i]
}
return React.createElement.apply(null, createElementArgArray)
}
export namespace jsx {
export namespace JSX {
export type ElementType = EmotionJSX.ElementType
export interface Element extends EmotionJSX.Element {}
export interface ElementClass extends EmotionJSX.ElementClass {}
export interface ElementAttributesProperty
extends EmotionJSX.ElementAttributesProperty {}
export interface ElementChildrenAttribute
extends EmotionJSX.ElementChildrenAttribute {}
export type LibraryManagedAttributes<C, P> =
EmotionJSX.LibraryManagedAttributes<C, P>
export interface IntrinsicAttributes
extends EmotionJSX.IntrinsicAttributes {}
export interface IntrinsicClassAttributes<T>
extends EmotionJSX.IntrinsicClassAttributes<T> {}
export type IntrinsicElements = EmotionJSX.IntrinsicElements
}
}