UNPKG

@botonic/react

Version:

Build Chatbots using React

51 lines 2.97 kB
"use strict"; 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