rn-inkpad
Version:
<img src="https://res.cloudinary.com/fercloudinary/image/upload/v1715452841/packages/inkpad-banner_acl0xl.png" />
50 lines (49 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAlertContainer = void 0;
const react_1 = require("react");
const subscribers_1 = require("../helpers/subscribers");
const useAlertContainer = () => {
const [prompt, setPrompt] = (0, react_1.useState)();
const [isAlert, setIsAlert] = (0, react_1.useState)(false);
const [textInput, setTextInput] = (0, react_1.useState)('');
const inputRef = (0, react_1.useRef)(null);
(0, react_1.useEffect)(() => {
(0, subscribers_1.subscribeToModalChange)((data, alert) => {
setPrompt(data);
setIsAlert(!!alert);
setTextInput('');
});
}, [prompt]);
(0, react_1.useEffect)(() => {
if (!isAlert) {
inputRef.current?.focus();
}
}, [prompt]);
const handlePress = (cancel = false, callback) => {
if (!isAlert) {
(0, subscribers_1.notifySubscribers)(cancel
? undefined
: {
title: textInput,
});
}
else {
if (!!callback) {
callback();
(0, subscribers_1.notifySubscribers)(undefined);
}
else {
(0, subscribers_1.notifySubscribers)(cancel ? undefined : prompt);
}
}
};
return {
prompt,
isAlert,
setTextInput,
handlePress,
inputRef,
};
};
exports.useAlertContainer = useAlertContainer;