@urban-bot/core
Version:
The universal chatbot library based on React
46 lines • 2.64 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ButtonGroup = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const array_flatten_1 = require("array-flatten");
const hooks_1 = require("../../hooks");
const useBotContext_1 = require("../../hooks/useBotContext");
const formatMarkupLanguageElement_1 = require("../../utils/formatMarkupLanguageElement");
const formatButtonElement_1 = require("../../utils/formatButtonElement");
const getParseMode_1 = require("../../utils/getParseMode");
const groupFlatArray_1 = require("../../utils/groupFlatArray");
const isArrayMatrix_1 = require("../../utils/isArrayMatrix");
function ButtonGroup({ children, title, isNewMessageEveryRender: isNewMessageEveryRenderProp, parseMode, disableNotification, replyToMessageId, forceReply, maxColumns, isReplyButtons = false, ...otherProps }) {
const { $$managerBot, isNewMessageEveryRender: isNewMessageEveryRenderContext, chat, parseMode: parseModeContext, bot, } = (0, useBotContext_1.useBotContext)();
let buttons = (0, formatButtonElement_1.formatButtonElement)(children);
if (typeof maxColumns === 'number') {
if (!(0, isArrayMatrix_1.isArrayMatrix)(buttons)) {
buttons = (0, groupFlatArray_1.groupFlatArray)(buttons, maxColumns);
}
else {
console.error('When you use "maxColumns" the buttons children must be flatten array');
}
}
const finalParseMode = (0, getParseMode_1.getParseMode)(title, parseMode, parseModeContext, bot.defaultParseMode);
const formattedTitle = (0, formatMarkupLanguageElement_1.formatMarkupLanguageElement)(title, finalParseMode);
(0, hooks_1.useAction)((ctx) => {
var _a;
const { actionId } = ctx;
const button = (0, array_flatten_1.flatten)(buttons).find(({ id }) => {
return actionId === id;
});
(_a = button === null || button === void 0 ? void 0 : button.onClick) === null || _a === void 0 ? void 0 : _a.call(button, ctx);
});
return ((0, jsx_runtime_1.jsx)("urban-buttons", { chat: chat, "$$managerBot": $$managerBot, isNewMessageEveryRender: isNewMessageEveryRenderProp !== null && isNewMessageEveryRenderProp !== void 0 ? isNewMessageEveryRenderProp : isNewMessageEveryRenderContext, data: {
disableNotification,
replyToMessageId,
forceReply,
parseMode: finalParseMode,
buttons,
title: formattedTitle,
isReplyButtons,
...otherProps,
} }, void 0));
}
exports.ButtonGroup = ButtonGroup;
//# sourceMappingURL=ButtonGroup.js.map
;