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.
30 lines
776 B
30 lines
776 B
// @flow
|
|
import * as React from 'react'
|
|
import Emotion, { createEmotionProps } from './emotion-element'
|
|
import { hasOwnProperty } from './utils'
|
|
|
|
// $FlowFixMe
|
|
export const jsx: typeof React.createElement = function (
|
|
type: React.ElementType,
|
|
props: Object
|
|
) {
|
|
let args = arguments
|
|
|
|
if (props == null || !hasOwnProperty.call(props, 'css')) {
|
|
// $FlowFixMe
|
|
return React.createElement.apply(undefined, args)
|
|
}
|
|
|
|
let argsLength = args.length
|
|
let createElementArgArray = new Array(argsLength)
|
|
createElementArgArray[0] = Emotion
|
|
createElementArgArray[1] = createEmotionProps(type, props)
|
|
|
|
for (let i = 2; i < argsLength; i++) {
|
|
createElementArgArray[i] = args[i]
|
|
}
|
|
|
|
// $FlowFixMe
|
|
return React.createElement.apply(null, createElementArgArray)
|
|
}
|