@botonic/react
Version:
Build Chatbots using React
51 lines • 2.97 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.WhatsappButtonList = exports.WHATSAPP_MAX_BUTTON_LIST_ID_CHARS = exports.WHATSAPP_MAX_BUTTON_LIST_DESCRIPTION_CHARS = exports.WHATSAPP_MAX_BUTTON_LIST_CHARS = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const core_1 = require("@botonic/core");
const util_1 = require("../util");
const react_1 = require("../util/react");
const message_1 = require("./message");
const constants_1 = require("./multichannel/whatsapp/constants");
const markdown_meta_1 = require("./multichannel/whatsapp/markdown-meta");
// TODO: Add validation in component
exports.WHATSAPP_MAX_BUTTON_LIST_CHARS = 24;
exports.WHATSAPP_MAX_BUTTON_LIST_DESCRIPTION_CHARS = 72;
exports.WHATSAPP_MAX_BUTTON_LIST_ID_CHARS = 200;
const serialize = _whatsappButtonListProps => {
// TODO: Implement to have data persistence in localStorage, not needed for this WhatsApp development
return {};
};
const WhatsappButtonList = (props) => {
const truncateSectionsContents = (sections) => {
const truncateRowContents = (row) => {
const title = (0, util_1.truncateText)(row.title, exports.WHATSAPP_MAX_BUTTON_LIST_CHARS);
const description = row.description
? (0, util_1.truncateText)(row.description, exports.WHATSAPP_MAX_BUTTON_LIST_DESCRIPTION_CHARS)
: undefined;
if (row.id.length > exports.WHATSAPP_MAX_BUTTON_LIST_ID_CHARS) {
console.error(`Button id "${row.id}" exceeds the maximum length of ${exports.WHATSAPP_MAX_BUTTON_LIST_ID_CHARS} characters`);
}
return Object.assign(Object.assign({}, row), { title, description });
};
return sections.map(section => ({
title: section.title
? (0, util_1.truncateText)(section.title, exports.WHATSAPP_MAX_BUTTON_LIST_CHARS)
: undefined,
rows: section.rows.map(truncateRowContents),
}));
};
const renderBrowser = () => {
// Return a dummy message for browser
const message = `${JSON.stringify(props)}`;
return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.WHATSAPP_BUTTON_LIST }, { children: message })));
};
const renderNode = () => {
return (
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
(0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: (0, markdown_meta_1.convertToMarkdownMeta)(props.body), button: (0, util_1.truncateText)(props.button, constants_1.WHATSAPP_MAX_BUTTON_CHARS), sections: JSON.stringify(truncateSectionsContents(props.sections)), type: core_1.INPUT.WHATSAPP_BUTTON_LIST })));
};
return (0, react_1.renderComponent)({ renderBrowser, renderNode });
};
exports.WhatsappButtonList = WhatsappButtonList;
//# sourceMappingURL=whatsapp-button-list.js.map
;