@turnkey/react-wallet-kit
Version:
The easiest and most powerful way to integrate Turnkey's Embedded Wallets into your React applications.
98 lines (95 loc) • 3.24 kB
JavaScript
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
import { jsx, jsxs } from 'react/jsx-runtime';
import { useRef, useState, useEffect } from 'react';
import { useModal } from '../../providers/modal/Hook.mjs';
import { Spinner } from '../design/Spinners.mjs';
import clsx from 'clsx';
function ActionPage(props) {
var title = props.title,
icon = props.icon,
_props$closeOnComplet = props.closeOnComplete,
closeOnComplete = _props$closeOnComplet === void 0 ? true : _props$closeOnComplet,
action = props.action;
var _useModal = useModal(),
popPage = _useModal.popPage,
closeModal = _useModal.closeModal,
isMobile = _useModal.isMobile;
var hasRun = useRef(false);
var iconRef = useRef(null);
var _useState = useState(40),
_useState2 = _slicedToArray(_useState, 2),
spinnerSize = _useState2[0],
setSpinnerSize = _useState2[1];
useEffect(function () {
if (iconRef.current) {
var rect = iconRef.current.getBoundingClientRect();
var size = Math.max(rect.width, rect.height);
setSpinnerSize(size + 50);
}
}, []);
useEffect(function () {
if (hasRun.current) return;
hasRun.current = true;
var runAction = /*#__PURE__*/function () {
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!action) {
_context.next = 11;
break;
}
_context.prev = 1;
_context.next = 4;
return action();
case 4:
_context.next = 10;
break;
case 6:
_context.prev = 6;
_context.t0 = _context["catch"](1);
popPage();
throw new Error("".concat(_context.t0));
case 10:
if (closeOnComplete) {
closeModal();
}
case 11:
case "end":
return _context.stop();
}
}, _callee, null, [[1, 6]]);
}));
return function runAction() {
return _ref.apply(this, arguments);
};
}();
runAction();
}, []);
return jsx("div", {
className: clsx("flex items-center justify-center py-10", isMobile ? "w-full" : "w-96"),
children: jsxs("div", {
className: "flex flex-col items-center justify-center gap-8",
children: [jsxs("div", {
className: "relative flex items-center justify-center",
children: [jsx("div", {
ref: iconRef,
className: "flex items-center justify-center",
children: icon
}), jsx(Spinner, {
className: "absolute",
style: {
width: spinnerSize,
height: spinnerSize
},
strokeWidth: 1
})]
}), jsx("span", {
className: "text-lg font-semibold",
children: title
})]
})
});
}
export { ActionPage };
//# sourceMappingURL=Action.mjs.map