suomifi-ui-components
Version:
Suomi.fi UI component library
38 lines (34 loc) • 957 B
JavaScript
;
var React = require('react');
var common = require('../../../utils/common/common.js');
var autoId = 0;
var clientRender = false;
var generateNextId = function generateNextId() {
autoId += 1;
return autoId;
};
var useGeneratedId = function useGeneratedId(propId) {
var startId = propId || (clientRender ? generateNextId() : null);
var _a = React.useState(startId),
generatedId = _a[0],
setId = _a[1];
common.useEnhancedEffect(function () {
if (generatedId === null) {
setId(generateNextId());
}
}, []);
React.useEffect(function () {
if (!clientRender) {
clientRender = true;
}
}, []);
return generatedId != null ? String(generatedId) : undefined;
};
var AutoId = function AutoId(_a) {
var id = _a.id,
children = _a.children;
var generatedId = useGeneratedId(id);
return children(!!generatedId ? generatedId : '');
};
exports.AutoId = AutoId;
//# sourceMappingURL=AutoId.js.map