suomifi-ui-components
Version:
Suomi.fi UI component library
36 lines (33 loc) • 944 B
JavaScript
import { useState, useEffect } from 'react';
import { useEnhancedEffect } from '../../../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 = useState(startId),
generatedId = _a[0],
setId = _a[1];
useEnhancedEffect(function () {
if (generatedId === null) {
setId(generateNextId());
}
}, []);
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 : '');
};
export { AutoId };
//# sourceMappingURL=AutoId.js.map