UNPKG

fannypack-v5

Version:

An accessible, composable, and friendly React UI Kit

46 lines (38 loc) 1.22 kB
import { createContext, useRef, useMemo, createElement, useContext, useState } from 'react'; var defaultPrefix = 'id-'; var generateId = function generateId(prefix) { if (prefix === void 0) { prefix = defaultPrefix; } return process.env.NODE_ENV === 'test' ? '' : "" + prefix + Math.random().toString(32).substr(2, 6); }; var Context = createContext(generateId); function IdProvider(_ref) { var children = _ref.children, _ref$prefix = _ref.prefix, prefix = _ref$prefix === void 0 ? '' : _ref$prefix; var count = useRef(0); var genId = useMemo(function () { return function (localPrefix) { if (localPrefix === void 0) { localPrefix = defaultPrefix; } return "" + prefix + localPrefix + (process.env.NODE_ENV === 'test' ? '' : ++count.current); }; }, [prefix]); return /*#__PURE__*/createElement(Context.Provider, { value: genId }, children); } function useUniqueId(prefix) { if (prefix === void 0) { prefix = defaultPrefix; } var genId = useContext(Context); var _React$useState = useState(function () { return genId(prefix); }), id = _React$useState[0]; return id; } export { IdProvider, generateId, useUniqueId };