UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

35 lines (34 loc) 868 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initialContextValue = exports.UIDContext = void 0; exports.useUniqueId = useUniqueId; var _react = require("react"); var initialContextValue = exports.initialContextValue = { id: 'default', counter: 0 }; /** * Property `counter` will be mutable */ var UIDContext = exports.UIDContext = /*#__PURE__*/(0, _react.createContext)(initialContextValue); /** * Generate unique id * * You can use context `UIDContext` to set generator state * * @example * const id = useUniqId() */ function useUniqueId(prefix) { if (prefix === void 0) { prefix = 'uid'; } var context = (0, _react.useContext)(UIDContext); var id = (0, _react.useRef)(null); if (id.current === null) { id.current = [prefix, context.id, ++context.counter].join('-'); } return id.current; }