curls
Version:
💪 Responsive, expressive UI primitives for React written with Style Hooks and Emotion
42 lines (40 loc) • 1.19 kB
JavaScript
function _extends() {
_extends =
Object.assign ||
function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i]
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key]
}
}
}
return target
}
return _extends.apply(this, arguments)
}
import React from 'react'
import Portalize from 'react-portalize'
import emptyObj from 'empty/object'
import {ThemeConsumer} from '@style-hooks/core'
import {ThemeProvider} from '../ThemeProvider'
export default (Component, portal) => {
if (portal === false || portal === void 0 || portal === null) return Component
const props = {
children: Component,
}
if (typeof portal === 'string') props.container = portal
else _extends(props, portal)
return React.createElement(ThemeConsumer, emptyObj, theme => {
const themeProvider = {
provider: ThemeProvider,
value: theme,
}
props.providers =
props.providers === void 0
? [themeProvider]
: [themeProvider, ...props.providers]
return React.createElement(Portalize, props)
})
}