UNPKG

reakit

Version:

Toolkit for building accessible rich web apps with React

71 lines (60 loc) 2.11 kB
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js'; import { createComponent } from 'reakit-system/createComponent'; import { createHook } from 'reakit-system/createHook'; import 'reakit-utils/shallowEqual'; import { useRef, useState, useEffect } from 'react'; import { useForkRef } from 'reakit-utils/useForkRef'; import { isButton } from 'reakit-utils/isButton'; import { warning } from 'reakit-warning'; import 'reakit-utils/useLiveRef'; import 'reakit-utils/isSelfTarget'; import 'reakit-utils/useIsomorphicEffect'; import 'reakit-utils/hasFocusWithin'; import 'reakit-utils/isPortalEvent'; import 'reakit-utils/dom'; import 'reakit-utils/tabbable'; import '../Role/Role.js'; import '../Tabbable/Tabbable.js'; import { useClickable } from '../Clickable/Clickable.js'; // Automatically generated var BUTTON_KEYS = []; var useButton = createHook({ name: "Button", compose: useClickable, keys: BUTTON_KEYS, useProps: function useProps(_, _ref) { var htmlRef = _ref.ref, htmlProps = _objectWithoutPropertiesLoose(_ref, ["ref"]); var ref = useRef(null); var _React$useState = useState(undefined), role = _React$useState[0], setRole = _React$useState[1]; var _React$useState2 = useState("button"), type = _React$useState2[0], setType = _React$useState2[1]; useEffect(function () { var element = ref.current; if (!element) { process.env.NODE_ENV !== "production" ? warning(true, "Can't determine whether the element is a native button because `ref` wasn't passed to the component", "See https://reakit.io/docs/button") : void 0; return; } if (!isButton(element)) { if (element.tagName !== "A") { setRole("button"); } setType(undefined); } }, []); return _objectSpread2({ ref: useForkRef(ref, htmlRef), role: role, type: type }, htmlProps); } }); var Button = createComponent({ as: "button", memo: true, useHook: useButton }); export { Button, useButton };