UNPKG

@botonic/react

Version:

Build Chatbots using React

85 lines 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isFacebook = exports.isWhatsapp = 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_BUTTON_CHARS = exports.WHATSAPP_LIST_MAX_BUTTONS = exports.WHATSAPP_MAX_BUTTONS = exports.MULTICHANNEL_WHATSAPP_PROPS = void 0; const core_1 = require("@botonic/core"); /** * * 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.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; const isWhatsapp = context => context.session && context.session.user && context.session.user.provider == core_1.Providers.Messaging.WHATSAPP; exports.isWhatsapp = isWhatsapp; const isFacebook = context => context.session && context.session.user && context.session.user.provider == core_1.Providers.Messaging.FACEBOOK; exports.isFacebook = isFacebook; //# sourceMappingURL=multichannel-utils.js.map