@botonic/react
Version:
Build Chatbots using React
79 lines • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMultichannelReplies = exports.getMultichannelButtons = exports.getFilteredElements = exports.getButtonType = exports.buttonTypes = exports.elementHasWebview = exports.elementHasPostback = exports.elementHasUrl = exports.isNodeKind = exports.isButton = exports.isMultichannelReply = exports.isMultichannelButton = exports.MENU_BUTTON_WHATSAPP_BUTTON_LIST = exports.DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = exports.WHATSAPP_MAX_FOOTER_CHARS = exports.WHATSAPP_MAX_BODY_CHARS = exports.WHATSAPP_MAX_HEADER_CHARS = exports.WHATSAPP_MAX_BUTTON_CHARS = exports.WHATSAPP_LIST_MAX_BUTTONS = exports.WHATSAPP_MAX_BUTTONS = exports.MULTICHANNEL_WHATSAPP_PROPS = void 0;
/**
*
* Whatsapp does not support Markdown
* (its markup syntax is different)
*/
exports.MULTICHANNEL_WHATSAPP_PROPS = { markdown: false };
exports.WHATSAPP_MAX_BUTTONS = 3;
exports.WHATSAPP_LIST_MAX_BUTTONS = 10;
exports.WHATSAPP_MAX_BUTTON_CHARS = 20;
exports.WHATSAPP_MAX_HEADER_CHARS = 60;
exports.WHATSAPP_MAX_BODY_CHARS = 1024;
exports.WHATSAPP_MAX_FOOTER_CHARS = 60;
exports.DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:';
exports.MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options';
function isMultichannelButton(node) {
return isNodeKind(node, 'MultichannelButton');
}
exports.isMultichannelButton = isMultichannelButton;
function isMultichannelReply(node) {
return isNodeKind(node, 'MultichannelReply');
}
exports.isMultichannelReply = isMultichannelReply;
function isButton(node) {
return isNodeKind(node, 'Button');
}
exports.isButton = isButton;
function isNodeKind(node, kind) {
return node.type && node.type.name == kind;
}
exports.isNodeKind = isNodeKind;
function elementHasUrl(element) {
return element.props && element.props.url;
}
exports.elementHasUrl = elementHasUrl;
function elementHasPostback(element) {
return ((element.props && element.props.payload) ||
(element.props && element.props.path));
}
exports.elementHasPostback = elementHasPostback;
function elementHasWebview(element) {
return element.props && element.props.webview;
}
exports.elementHasWebview = elementHasWebview;
exports.buttonTypes = {
POSTBACK: 'postback',
URL: 'url',
WEBVIEW: 'webview',
};
function getButtonType(multichannelButton) {
if (elementHasUrl(multichannelButton))
return exports.buttonTypes.URL;
if (elementHasPostback(multichannelButton))
return exports.buttonTypes.POSTBACK;
if (elementHasWebview(multichannelButton))
return exports.buttonTypes.WEBVIEW;
return undefined;
}
exports.getButtonType = getButtonType;
function getFilteredElements(node, filter) {
const elements = [];
for (const n of node) {
if (filter(n))
elements.push(n);
}
return elements;
}
exports.getFilteredElements = getFilteredElements;
function getMultichannelButtons(node) {
return getFilteredElements(node, isMultichannelButton);
}
exports.getMultichannelButtons = getMultichannelButtons;
function getMultichannelReplies(node) {
return getFilteredElements(node, isMultichannelReply);
}
exports.getMultichannelReplies = getMultichannelReplies;
//# sourceMappingURL=multichannel-utils.js.map