useQRCode.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.useQRCode = void 0;
  7. var _qrcodegen = require("../libs/qrcodegen");
  8. var _utils = require("../utils");
  9. var _react = _interopRequireDefault(require("react"));
  10. var useQRCode = exports.useQRCode = function useQRCode(opt) {
  11. var value = opt.value,
  12. level = opt.level,
  13. minVersion = opt.minVersion,
  14. includeMargin = opt.includeMargin,
  15. marginSize = opt.marginSize,
  16. imageSettings = opt.imageSettings,
  17. size = opt.size;
  18. var memoizedQrcode = _react.default.useMemo(function () {
  19. var segments = _qrcodegen.QrSegment.makeSegments(value);
  20. return _qrcodegen.QrCode.encodeSegments(segments, _utils.ERROR_LEVEL_MAP[level], minVersion);
  21. }, [value, level, minVersion]);
  22. return _react.default.useMemo(function () {
  23. var cs = memoizedQrcode.getModules();
  24. var mg = (0, _utils.getMarginSize)(includeMargin, marginSize);
  25. var ncs = cs.length + mg * 2;
  26. var cis = (0, _utils.getImageSettings)(cs, size, mg, imageSettings);
  27. return {
  28. cells: cs,
  29. margin: mg,
  30. numCells: ncs,
  31. calculatedImageSettings: cis,
  32. qrcode: memoizedQrcode
  33. };
  34. }, [memoizedQrcode, size, imageSettings, includeMargin, marginSize]);
  35. };