@botonic/react
Version:
Build Chatbots using React
100 lines • 4.13 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.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
;