curls
Version:
💪 Responsive, expressive UI primitives for React written with Style Hooks and Emotion
59 lines (55 loc) • 1.72 kB
JavaScript
function _objectWithoutProperties(source, excluded) {
if (source == null) return {}
var target = _objectWithoutPropertiesLoose(source, excluded)
var key, i
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source)
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i]
if (excluded.indexOf(key) >= 0) continue
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue
target[key] = source[key]
}
}
return target
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {}
var target = {}
var sourceKeys = Object.keys(source)
var key, i
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i]
if (excluded.indexOf(key) >= 0) continue
target[key] = source[key]
}
return target
}
import useSwitch from '@react-hook/switch'
import {useTransitionable} from './Transitionable'
export const getDelay = (value, props) =>
value === true
? props.enterDelay !== void 0
? props.enterDelay
: props.delay
: props.leaveDelay !== void 0
? props.leaveDelay
: props.delay
export default (
useTransition, // eslint-disable-next-line no-unused-vars
_ref
) => {
let {initialVisible = false, visible} = _ref,
props = _objectWithoutProperties(_ref, ['initialVisible', 'visible'])
let [isVisible, toggle] = useSwitch(initialVisible)
isVisible = visible === void 0 || visible === null ? isVisible : visible
props.isVisible = isVisible
props.delay = getDelay(isVisible, props)
return {
show: toggle.on,
hide: toggle.off,
toggle,
isVisible,
css: useTransitionable(useTransition(props)).css,
}
}