UNPKG

@botonic/react

Version:

Build Chatbots using React

100 lines 4.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMultichannelReplies = exports.getMultichannelButtons = exports.getFilteredElements = exports.getButtonType = exports.buttonTypes = exports.elementHasWebview = exports.elementHasPostback = exports.elementHasUrl = exports.isNodeSubtitle = exports.isNodeTitle = exports.isNodePic = exports.isNodeReply = exports.isNodeCarousel = exports.isNodeButton = exports.isNodeText = exports.isMultichannelReply = exports.isMultichannelButton = void 0; const index_1 = require("../button/index"); const carousel_1 = require("../carousel"); const pic_1 = require("../pic"); const reply_1 = require("../reply"); const subtitle_1 = require("../subtitle"); const text_1 = require("../text"); const title_1 = require("../title"); const multichannel_button_1 = require("./multichannel-button"); const multichannel_reply_1 = require("./multichannel-reply"); function isNodeKind(node, kind) { var _a; return ((_a = node === null || node === void 0 ? void 0 : node.type) === null || _a === void 0 ? void 0 : _a.name) === kind; } function isMultichannelButton(node) { return isNodeKind(node, multichannel_button_1.MultichannelButton.name); } exports.isMultichannelButton = isMultichannelButton; function isMultichannelReply(node) { return isNodeKind(node, multichannel_reply_1.MultichannelReply.name); } exports.isMultichannelReply = isMultichannelReply; function isNodeText(node) { return isNodeKind(node, text_1.Text.name); } exports.isNodeText = isNodeText; function isNodeButton(node) { return isNodeKind(node, index_1.Button.name); } exports.isNodeButton = isNodeButton; function isNodeCarousel(node) { return isNodeKind(node, carousel_1.Carousel.name); } exports.isNodeCarousel = isNodeCarousel; function isNodeReply(node) { return isNodeKind(node, reply_1.Reply.name); } exports.isNodeReply = isNodeReply; function isNodePic(node) { return isNodeKind(node, pic_1.Pic.name); } exports.isNodePic = isNodePic; function isNodeTitle(node) { return isNodeKind(node, title_1.Title.name); } exports.isNodeTitle = isNodeTitle; function isNodeSubtitle(node) { return isNodeKind(node, subtitle_1.Subtitle.name); } exports.isNodeSubtitle = isNodeSubtitle; function elementHasUrl(element) { var _a; return (_a = element === null || element === void 0 ? void 0 : element.props) === null || _a === void 0 ? void 0 : _a.url; } exports.elementHasUrl = elementHasUrl; function elementHasPostback(element) { var _a, _b; return ((_a = element === null || element === void 0 ? void 0 : element.props) === null || _a === void 0 ? void 0 : _a.payload) || ((_b = element === null || element === void 0 ? void 0 : element.props) === null || _b === void 0 ? void 0 : _b.path); } exports.elementHasPostback = elementHasPostback; function elementHasWebview(element) { var _a; return (_a = element === null || element === void 0 ? void 0 : element.props) === null || _a === void 0 ? void 0 : _a.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