react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
35 lines (34 loc) • 868 B
JavaScript
;
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;
}