@enact/ui
Version:
A collection of simplified unstyled cross-platform UI components for Enact
48 lines (45 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useIdProvider = exports["default"] = void 0;
var _useClass = _interopRequireDefault(require("@enact/core/useClass"));
var _react = require("react");
var _Provider = _interopRequireDefault(require("./Provider"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
/**
* Configuration for `useIdProvider`
*
* @typedef {Object} useIdProviderConfig
* @memberof ui/IdProvider
* @property {String} [prefix] Optional prefix for the identifier.
* @private
*/
/**
* Object returned by `useIdProvider`
*
* @typedef {Object} useIdProviderInterface
* @memberof ui/IdProvider
* @property {Function} [generateId] The function to generate id.
* @private
*/
/**
* Generate globally-unique identifiers
*
* @param {useIdProviderConfig} config Configuration options
* @returns {useIdProviderInterface}
* @private
*/
var useIdProvider = exports.useIdProvider = function useIdProvider(_ref) {
var prefix = _ref.prefix;
var provider = (0, _useClass["default"])(_Provider["default"], prefix);
(0, _react.useLayoutEffect)(function () {
return function () {
return provider.unload();
};
}, [provider]);
return {
generateId: provider.generate
};
};
var _default = exports["default"] = useIdProvider;