useId.js 918 B

123456789101112131415161718192021222324252627282930313233
  1. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  2. import * as React from 'react';
  3. import canUseDom from "rc-util/es/Dom/canUseDom";
  4. var uuid = 0;
  5. /** Is client side and not jsdom */
  6. export var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();
  7. /** Get unique id for accessibility usage */
  8. function getUUID() {
  9. var retId;
  10. // Test never reach
  11. /* istanbul ignore if */
  12. if (isBrowserClient) {
  13. retId = uuid;
  14. uuid += 1;
  15. } else {
  16. retId = 'TEST_OR_SSR';
  17. }
  18. return retId;
  19. }
  20. export default (function (id) {
  21. // Inner id for accessibility usage. Only work in client side
  22. var _React$useState = React.useState(),
  23. _React$useState2 = _slicedToArray(_React$useState, 2),
  24. innerId = _React$useState2[0],
  25. setInnerId = _React$useState2[1];
  26. React.useEffect(function () {
  27. setInnerId("rc_progress_".concat(getUUID()));
  28. }, []);
  29. return id || innerId;
  30. });