@botonic/react 0.42.1 → 0.43.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/index.d.ts +3 -2
- package/lib/cjs/components/index.js +5 -3
- package/lib/cjs/components/index.js.map +1 -1
- package/lib/cjs/components/whatsapp-interactive-media-carousel.d.ts +23 -7
- package/lib/cjs/components/whatsapp-interactive-media-carousel.js +9 -3
- package/lib/cjs/components/whatsapp-interactive-media-carousel.js.map +1 -1
- package/lib/cjs/components/whatsapp-template/index.d.ts +10 -0
- package/lib/cjs/components/whatsapp-template/index.js +25 -0
- package/lib/cjs/components/whatsapp-template/index.js.map +1 -0
- package/lib/cjs/components/whatsapp-template/types.d.ts +79 -0
- package/lib/cjs/components/whatsapp-template/types.js +27 -0
- package/lib/cjs/components/whatsapp-template/types.js.map +1 -0
- package/lib/esm/components/index.d.ts +3 -2
- package/lib/esm/components/index.js +3 -2
- package/lib/esm/components/index.js.map +1 -1
- package/lib/esm/components/whatsapp-interactive-media-carousel.d.ts +23 -7
- package/lib/esm/components/whatsapp-interactive-media-carousel.js +8 -2
- package/lib/esm/components/whatsapp-interactive-media-carousel.js.map +1 -1
- package/lib/esm/components/whatsapp-template/index.d.ts +10 -0
- package/lib/esm/components/whatsapp-template/index.js +21 -0
- package/lib/esm/components/whatsapp-template/index.js.map +1 -0
- package/lib/esm/components/whatsapp-template/types.d.ts +79 -0
- package/lib/esm/components/whatsapp-template/types.js +24 -0
- package/lib/esm/components/whatsapp-template/types.js.map +1 -0
- package/package.json +3 -3
- package/src/components/index.ts +4 -1
- package/src/components/whatsapp-interactive-media-carousel.tsx +38 -12
- package/src/components/whatsapp-template/index.tsx +50 -0
- package/src/components/whatsapp-template/types.ts +104 -0
- package/lib/cjs/components/whatsapp-template.d.ts +0 -1
- package/lib/cjs/components/whatsapp-template.js +0 -25
- package/lib/cjs/components/whatsapp-template.js.map +0 -1
- package/lib/esm/components/whatsapp-template.d.ts +0 -1
- package/lib/esm/components/whatsapp-template.js +0 -20
- package/lib/esm/components/whatsapp-template.js.map +0 -1
- package/src/components/whatsapp-template.jsx +0 -35
|
@@ -23,9 +23,10 @@ export { normalizeWebchatSettings, WebchatSettings, WebchatSettingsProps, } from
|
|
|
23
23
|
export { WhatsappButtonList, WhatsappButtonListProps, WhatsappButtonListRowProps, WhatsappButtonListSectionProps, } from './whatsapp-button-list';
|
|
24
24
|
export { WhatsappCatalog, WhatsappCatalogProps } from './whatsapp-catalog';
|
|
25
25
|
export { WhatsappCTAUrlButton, WhatsappCTAUrlButtonProps, WhatsappCTAUrlHeaderType, } from './whatsapp-cta-url-button';
|
|
26
|
-
export { WhatsappInteractiveMediaCarousel, WhatsappInteractiveMediaCarouselProps, } from './whatsapp-interactive-media-carousel';
|
|
26
|
+
export { CardType, WhatsappInteractiveMediaCard, WhatsappInteractiveMediaCarousel, WhatsappInteractiveMediaCarouselProps, } from './whatsapp-interactive-media-carousel';
|
|
27
27
|
export { WhatsappMediaCarousel, WhatsappMediaCarouselProps, } from './whatsapp-media-carousel';
|
|
28
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
29
29
|
export { WhatsappProductCarousel, WhatsappProductCarouselProps, } from './whatsapp-product-carousel';
|
|
30
30
|
export { ProductItem, WhatsappProductList, WhatsappProductListProps, WhatsappProductListSection, } from './whatsapp-product-list';
|
|
31
|
-
export { WhatsappTemplate } from './whatsapp-template';
|
|
31
|
+
export { WhatsappTemplate } from './whatsapp-template/index';
|
|
32
|
+
export * from './whatsapp-template/types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WhatsappTemplate = exports.WhatsappProductList = exports.WhatsappProductCarousel = exports.WhatsappProduct = exports.WhatsappMediaCarousel = exports.WhatsappInteractiveMediaCarousel = exports.WhatsappCTAUrlHeaderType = exports.WhatsappCTAUrlButton = exports.WhatsappCatalog = exports.WhatsappButtonList = exports.WebchatSettings = exports.normalizeWebchatSettings = exports.Video = exports.Title = exports.Text = exports.Subtitle = exports.ShareButton = exports.Reply = exports.Raw = exports.Pic = exports.MessageTemplate = exports.Message = exports.Location = exports.Image = exports.Handoff = exports.Element = exports.Document = exports.customMessage = exports.Carousel = exports.Button = exports.Audio = void 0;
|
|
3
|
+
exports.WhatsappTemplate = exports.WhatsappProductList = exports.WhatsappProductCarousel = exports.WhatsappProduct = exports.WhatsappMediaCarousel = exports.WhatsappInteractiveMediaCarousel = exports.CardType = exports.WhatsappCTAUrlHeaderType = exports.WhatsappCTAUrlButton = exports.WhatsappCatalog = exports.WhatsappButtonList = exports.WebchatSettings = exports.normalizeWebchatSettings = exports.Video = exports.Title = exports.Text = exports.Subtitle = exports.ShareButton = exports.Reply = exports.Raw = exports.Pic = exports.MessageTemplate = exports.Message = exports.Location = exports.Image = exports.Handoff = exports.Element = exports.Document = exports.customMessage = exports.Carousel = exports.Button = exports.Audio = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var audio_1 = require("./audio");
|
|
6
6
|
Object.defineProperty(exports, "Audio", { enumerable: true, get: function () { return audio_1.Audio; } });
|
|
@@ -53,6 +53,7 @@ var whatsapp_cta_url_button_1 = require("./whatsapp-cta-url-button");
|
|
|
53
53
|
Object.defineProperty(exports, "WhatsappCTAUrlButton", { enumerable: true, get: function () { return whatsapp_cta_url_button_1.WhatsappCTAUrlButton; } });
|
|
54
54
|
Object.defineProperty(exports, "WhatsappCTAUrlHeaderType", { enumerable: true, get: function () { return whatsapp_cta_url_button_1.WhatsappCTAUrlHeaderType; } });
|
|
55
55
|
var whatsapp_interactive_media_carousel_1 = require("./whatsapp-interactive-media-carousel");
|
|
56
|
+
Object.defineProperty(exports, "CardType", { enumerable: true, get: function () { return whatsapp_interactive_media_carousel_1.CardType; } });
|
|
56
57
|
Object.defineProperty(exports, "WhatsappInteractiveMediaCarousel", { enumerable: true, get: function () { return whatsapp_interactive_media_carousel_1.WhatsappInteractiveMediaCarousel; } });
|
|
57
58
|
var whatsapp_media_carousel_1 = require("./whatsapp-media-carousel");
|
|
58
59
|
Object.defineProperty(exports, "WhatsappMediaCarousel", { enumerable: true, get: function () { return whatsapp_media_carousel_1.WhatsappMediaCarousel; } });
|
|
@@ -62,6 +63,7 @@ var whatsapp_product_carousel_1 = require("./whatsapp-product-carousel");
|
|
|
62
63
|
Object.defineProperty(exports, "WhatsappProductCarousel", { enumerable: true, get: function () { return whatsapp_product_carousel_1.WhatsappProductCarousel; } });
|
|
63
64
|
var whatsapp_product_list_1 = require("./whatsapp-product-list");
|
|
64
65
|
Object.defineProperty(exports, "WhatsappProductList", { enumerable: true, get: function () { return whatsapp_product_list_1.WhatsappProductList; } });
|
|
65
|
-
var
|
|
66
|
-
Object.defineProperty(exports, "WhatsappTemplate", { enumerable: true, get: function () { return
|
|
66
|
+
var index_2 = require("./whatsapp-template/index");
|
|
67
|
+
Object.defineProperty(exports, "WhatsappTemplate", { enumerable: true, get: function () { return index_2.WhatsappTemplate; } });
|
|
68
|
+
tslib_1.__exportStar(require("./whatsapp-template/types"), exports);
|
|
67
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wCAAuC;AAA9B,+FAAA,MAAM,OAAA;AACf,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wDAA6B;AAC7B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAA8B;AAC9B,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,uDAI2B;AAHzB,4HAAA,wBAAwB,OAAA;AACxB,mHAAA,eAAe,OAAA;AAGjB,+DAK+B;AAJ7B,0HAAA,kBAAkB,OAAA;AAKpB,uDAA0E;AAAjE,mHAAA,eAAe,OAAA;AACxB,qEAIkC;AAHhC,+HAAA,oBAAoB,OAAA;AAEpB,mIAAA,wBAAwB,OAAA;AAE1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wCAAuC;AAA9B,+FAAA,MAAM,OAAA;AACf,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,wDAA6B;AAC7B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAA8B;AAC9B,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,uDAI2B;AAHzB,4HAAA,wBAAwB,OAAA;AACxB,mHAAA,eAAe,OAAA;AAGjB,+DAK+B;AAJ7B,0HAAA,kBAAkB,OAAA;AAKpB,uDAA0E;AAAjE,mHAAA,eAAe,OAAA;AACxB,qEAIkC;AAHhC,+HAAA,oBAAoB,OAAA;AAEpB,mIAAA,wBAAwB,OAAA;AAE1B,6FAK8C;AAJ5C,+HAAA,QAAQ,OAAA;AAER,uJAAA,gCAAgC,OAAA;AAGlC,qEAGkC;AAFhC,gIAAA,qBAAqB,OAAA;AAGvB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yEAGoC;AAFlC,oIAAA,uBAAuB,OAAA;AAGzB,iEAKgC;AAH9B,4HAAA,mBAAmB,OAAA;AAIrB,mDAA4D;AAAnD,yGAAA,gBAAgB,OAAA;AACzB,oEAAyC"}
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
imageLink: string;
|
|
1
|
+
export declare enum CardType {
|
|
2
|
+
CTA_URL = "cta_url",
|
|
3
|
+
QUICK_REPLY = "quick_reply"
|
|
5
4
|
}
|
|
6
|
-
interface
|
|
5
|
+
interface BaseCard {
|
|
6
|
+
imageLink: string;
|
|
7
7
|
text: string;
|
|
8
|
-
action: ActionCard;
|
|
9
8
|
}
|
|
9
|
+
interface UrlCard extends BaseCard {
|
|
10
|
+
type: CardType.CTA_URL;
|
|
11
|
+
action: {
|
|
12
|
+
buttonText: string;
|
|
13
|
+
buttonUrl: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
interface QuickReplyCard extends BaseCard {
|
|
17
|
+
type: CardType.QUICK_REPLY;
|
|
18
|
+
action: {
|
|
19
|
+
buttons: {
|
|
20
|
+
text: string;
|
|
21
|
+
payload: string;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export type WhatsappInteractiveMediaCard = UrlCard | QuickReplyCard;
|
|
10
26
|
export interface WhatsappInteractiveMediaCarouselProps {
|
|
11
|
-
cards:
|
|
27
|
+
cards: WhatsappInteractiveMediaCard[];
|
|
12
28
|
textMessage: string;
|
|
13
29
|
}
|
|
14
30
|
export declare const WhatsappInteractiveMediaCarousel: (props: WhatsappInteractiveMediaCarouselProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WhatsappInteractiveMediaCarousel = void 0;
|
|
3
|
+
exports.WhatsappInteractiveMediaCarousel = exports.CardType = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const util_1 = require("../util");
|
|
6
6
|
const button_1 = require("./button");
|
|
@@ -9,11 +9,17 @@ const element_1 = require("./element");
|
|
|
9
9
|
const constants_1 = require("./multichannel/whatsapp/constants");
|
|
10
10
|
const pic_1 = require("./pic");
|
|
11
11
|
const title_1 = require("./title");
|
|
12
|
+
var CardType;
|
|
13
|
+
(function (CardType) {
|
|
14
|
+
CardType["CTA_URL"] = "cta_url";
|
|
15
|
+
CardType["QUICK_REPLY"] = "quick_reply";
|
|
16
|
+
})(CardType = exports.CardType || (exports.CardType = {}));
|
|
12
17
|
/*
|
|
13
|
-
Reference: https://developers.facebook.com/
|
|
18
|
+
Reference: https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-media-carousel-messages?locale=en_US
|
|
14
19
|
*/
|
|
15
20
|
const WhatsappInteractiveMediaCarousel = (props) => {
|
|
16
|
-
return ((0, jsx_runtime_1.jsx)(carousel_1.Carousel, Object.assign({ text: (0, util_1.truncateText)(props.textMessage, constants_1.WHATSAPP_MAX_BODY_CHARS) }, { children: props.cards.map((card, index) => ((0, jsx_runtime_1.jsxs)(element_1.Element, { children: [(0, jsx_runtime_1.jsx)(pic_1.Pic, { src: card.
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)(carousel_1.Carousel, Object.assign({ text: (0, util_1.truncateText)(props.textMessage, constants_1.WHATSAPP_MAX_BODY_CHARS) }, { children: props.cards.map((card, index) => ((0, jsx_runtime_1.jsxs)(element_1.Element, { children: [(0, jsx_runtime_1.jsx)(pic_1.Pic, { src: card.imageLink }), (0, jsx_runtime_1.jsx)(title_1.Title, { children: (0, util_1.truncateText)(card.text, constants_1.WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS) }), card.type === CardType.CTA_URL && ((0, jsx_runtime_1.jsx)(button_1.Button, Object.assign({ url: card.action.buttonUrl }, { children: (0, util_1.truncateText)(card.action.buttonText, constants_1.WHATSAPP_MAX_BUTTON_CHARS) }))), card.type === CardType.QUICK_REPLY &&
|
|
22
|
+
card.action.buttons.map((button, index) => ((0, jsx_runtime_1.jsx)(button_1.Button, Object.assign({ payload: button.payload }, { children: (0, util_1.truncateText)(button.text, constants_1.WHATSAPP_MAX_BUTTON_CHARS) }), index)))] }, index))) })));
|
|
17
23
|
};
|
|
18
24
|
exports.WhatsappInteractiveMediaCarousel = WhatsappInteractiveMediaCarousel;
|
|
19
25
|
//# sourceMappingURL=whatsapp-interactive-media-carousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-interactive-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-interactive-media-carousel.tsx"],"names":[],"mappings":";;;;AAEA,kCAAsC;AACtC,qCAAiC;AACjC,yCAAqC;AACrC,uCAAmC;AACnC,iEAI0C;AAC1C,+BAA2B;AAC3B,mCAA+B;
|
|
1
|
+
{"version":3,"file":"whatsapp-interactive-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-interactive-media-carousel.tsx"],"names":[],"mappings":";;;;AAEA,kCAAsC;AACtC,qCAAiC;AACjC,yCAAqC;AACrC,uCAAmC;AACnC,iEAI0C;AAC1C,+BAA2B;AAC3B,mCAA+B;AAE/B,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,uCAA2B,CAAA;AAC7B,CAAC,EAHW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAGnB;AA+BD;;EAEE;AACK,MAAM,gCAAgC,GAAG,CAC9C,KAA4C,EAC5C,EAAE;IACF,OAAO,CACL,uBAAC,mBAAQ,kBAAC,IAAI,EAAE,IAAA,mBAAY,EAAC,KAAK,CAAC,WAAW,EAAE,mCAAuB,CAAC,gBACrE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,wBAAC,iBAAO,eACN,uBAAC,SAAG,IAAC,GAAG,EAAE,IAAI,CAAC,SAAS,GAAI,EAC5B,uBAAC,aAAK,cACH,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,iDAAqC,CAAC,GACzD,EACP,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,CACjC,uBAAC,eAAM,kBAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,gBAC/B,IAAA,mBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,qCAAyB,CAAC,IACzD,CACV,EACA,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,uBAAC,eAAM,kBAAa,OAAO,EAAE,MAAM,CAAC,OAAO,gBACxC,IAAA,mBAAY,EAAC,MAAM,CAAC,IAAI,EAAE,qCAAyB,CAAC,KAD1C,KAAK,CAET,CACV,CAAC,KAfQ,KAAK,CAgBT,CACX,CAAC,IACO,CACZ,CAAA;AACH,CAAC,CAAA;AA1BY,QAAA,gCAAgC,oCA0B5C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface WhatsappTemplateProps {
|
|
2
|
+
name: string;
|
|
3
|
+
language: string;
|
|
4
|
+
namespace?: string;
|
|
5
|
+
header?: Record<string, any>;
|
|
6
|
+
body?: Record<string, any>;
|
|
7
|
+
footer?: Record<string, any>;
|
|
8
|
+
buttons?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export declare const WhatsappTemplate: (props: WhatsappTemplateProps) => any;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhatsappTemplate = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const core_1 = require("@botonic/core");
|
|
6
|
+
const react_1 = require("../../util/react");
|
|
7
|
+
const message_1 = require("../message");
|
|
8
|
+
const serialize = (message) => {
|
|
9
|
+
return { text: message };
|
|
10
|
+
};
|
|
11
|
+
const WhatsappTemplate = (props) => {
|
|
12
|
+
const renderBrowser = () => {
|
|
13
|
+
// Return a dummy message for browser
|
|
14
|
+
const message = `Template ${props.name} with language ${props.language} and namespace ${props.namespace} would be sent to the user.`;
|
|
15
|
+
return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
|
|
16
|
+
};
|
|
17
|
+
const renderNode = () => {
|
|
18
|
+
return (
|
|
19
|
+
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
20
|
+
(0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { name: props.name, language: props.language, namespace: props.namespace, header: props.header && JSON.stringify(props.header), body: props.body && JSON.stringify(props.body), footer: props.footer && JSON.stringify(props.footer), buttons: props.buttons && JSON.stringify(props.buttons), type: core_1.INPUT.WHATSAPP_TEMPLATE })));
|
|
21
|
+
};
|
|
22
|
+
return (0, react_1.renderComponent)({ renderBrowser, renderNode });
|
|
23
|
+
};
|
|
24
|
+
exports.WhatsappTemplate = WhatsappTemplate;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/whatsapp-template/index.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,4CAAkD;AAClD,wCAAoC;AAEpC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAYM,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAE,EAAE;IAC/D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,QAAQ,kBAAkB,KAAK,CAAC,SAAS,6BAA6B,CAAA;QACpI,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EACvD,IAAI,EAAE,YAAK,CAAC,iBAAiB,IAC7B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AA7BY,QAAA,gBAAgB,oBA6B5B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export declare enum WhatsAppTemplateButtonSubType {
|
|
2
|
+
URL = "URL",
|
|
3
|
+
QUICK_REPLY = "QUICK_REPLY",
|
|
4
|
+
PHONE_NUMBER = "PHONE_NUMBER",
|
|
5
|
+
VOICE_CALL = "VOICE_CALL"
|
|
6
|
+
}
|
|
7
|
+
export declare enum WhatsAppTemplateParameterType {
|
|
8
|
+
PAYLOAD = "PAYLOAD",
|
|
9
|
+
TEXT = "TEXT",
|
|
10
|
+
IMAGE = "IMAGE",
|
|
11
|
+
VIDEO = "VIDEO",
|
|
12
|
+
DOCUMENT = "DOCUMENT"
|
|
13
|
+
}
|
|
14
|
+
export declare enum WhatsAppTemplateComponentType {
|
|
15
|
+
HEADER = "HEADER",
|
|
16
|
+
BODY = "BODY",
|
|
17
|
+
FOOTER = "FOOTER",
|
|
18
|
+
BUTTONS = "BUTTONS",
|
|
19
|
+
BUTTON = "BUTTON"
|
|
20
|
+
}
|
|
21
|
+
export interface WhatsappTemplateHeaderTextParameter {
|
|
22
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
23
|
+
text: string;
|
|
24
|
+
}
|
|
25
|
+
export interface WhatsappTemplateHeaderImageParameter {
|
|
26
|
+
type: WhatsAppTemplateParameterType.IMAGE;
|
|
27
|
+
image: {
|
|
28
|
+
link: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface WhatsappTemplateComponentHeader {
|
|
32
|
+
type: WhatsAppTemplateComponentType.HEADER;
|
|
33
|
+
parameters: WhatsappTemplateHeaderTextParameter[] | WhatsappTemplateHeaderImageParameter[];
|
|
34
|
+
}
|
|
35
|
+
export interface WhatsappTemplateComponentBody {
|
|
36
|
+
type: WhatsAppTemplateComponentType.BODY;
|
|
37
|
+
parameters: {
|
|
38
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
39
|
+
parameter_name: string;
|
|
40
|
+
text: string;
|
|
41
|
+
}[];
|
|
42
|
+
}
|
|
43
|
+
export interface WhatsappTemplateComponentFooter {
|
|
44
|
+
type: WhatsAppTemplateComponentType.FOOTER;
|
|
45
|
+
parameters: {
|
|
46
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
47
|
+
parameter_name: string;
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
export interface WhatsappTemplateComponentButtons {
|
|
52
|
+
type: WhatsAppTemplateComponentType.BUTTONS;
|
|
53
|
+
buttons: WhatsappTemplateButton[];
|
|
54
|
+
}
|
|
55
|
+
export interface WhatsappTemplateQuickReplyButton {
|
|
56
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
57
|
+
sub_type: WhatsAppTemplateButtonSubType.QUICK_REPLY;
|
|
58
|
+
index: number;
|
|
59
|
+
parameters: {
|
|
60
|
+
type: WhatsAppTemplateParameterType.PAYLOAD;
|
|
61
|
+
payload: string;
|
|
62
|
+
}[];
|
|
63
|
+
}
|
|
64
|
+
export interface WhatsappTemplateUrlButton {
|
|
65
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
66
|
+
sub_type: WhatsAppTemplateButtonSubType.URL;
|
|
67
|
+
index: number;
|
|
68
|
+
parameters: {
|
|
69
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
70
|
+
text: string;
|
|
71
|
+
}[];
|
|
72
|
+
}
|
|
73
|
+
export interface WhatsappTemplateVoiceCallButton {
|
|
74
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
75
|
+
sub_type: WhatsAppTemplateButtonSubType.VOICE_CALL;
|
|
76
|
+
index: number;
|
|
77
|
+
parameters: [];
|
|
78
|
+
}
|
|
79
|
+
export type WhatsappTemplateButton = WhatsappTemplateQuickReplyButton | WhatsappTemplateUrlButton | WhatsappTemplateVoiceCallButton;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhatsAppTemplateComponentType = exports.WhatsAppTemplateParameterType = exports.WhatsAppTemplateButtonSubType = void 0;
|
|
4
|
+
var WhatsAppTemplateButtonSubType;
|
|
5
|
+
(function (WhatsAppTemplateButtonSubType) {
|
|
6
|
+
WhatsAppTemplateButtonSubType["URL"] = "URL";
|
|
7
|
+
WhatsAppTemplateButtonSubType["QUICK_REPLY"] = "QUICK_REPLY";
|
|
8
|
+
WhatsAppTemplateButtonSubType["PHONE_NUMBER"] = "PHONE_NUMBER";
|
|
9
|
+
WhatsAppTemplateButtonSubType["VOICE_CALL"] = "VOICE_CALL";
|
|
10
|
+
})(WhatsAppTemplateButtonSubType = exports.WhatsAppTemplateButtonSubType || (exports.WhatsAppTemplateButtonSubType = {}));
|
|
11
|
+
var WhatsAppTemplateParameterType;
|
|
12
|
+
(function (WhatsAppTemplateParameterType) {
|
|
13
|
+
WhatsAppTemplateParameterType["PAYLOAD"] = "PAYLOAD";
|
|
14
|
+
WhatsAppTemplateParameterType["TEXT"] = "TEXT";
|
|
15
|
+
WhatsAppTemplateParameterType["IMAGE"] = "IMAGE";
|
|
16
|
+
WhatsAppTemplateParameterType["VIDEO"] = "VIDEO";
|
|
17
|
+
WhatsAppTemplateParameterType["DOCUMENT"] = "DOCUMENT";
|
|
18
|
+
})(WhatsAppTemplateParameterType = exports.WhatsAppTemplateParameterType || (exports.WhatsAppTemplateParameterType = {}));
|
|
19
|
+
var WhatsAppTemplateComponentType;
|
|
20
|
+
(function (WhatsAppTemplateComponentType) {
|
|
21
|
+
WhatsAppTemplateComponentType["HEADER"] = "HEADER";
|
|
22
|
+
WhatsAppTemplateComponentType["BODY"] = "BODY";
|
|
23
|
+
WhatsAppTemplateComponentType["FOOTER"] = "FOOTER";
|
|
24
|
+
WhatsAppTemplateComponentType["BUTTONS"] = "BUTTONS";
|
|
25
|
+
WhatsAppTemplateComponentType["BUTTON"] = "BUTTON";
|
|
26
|
+
})(WhatsAppTemplateComponentType = exports.WhatsAppTemplateComponentType || (exports.WhatsAppTemplateComponentType = {}));
|
|
27
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/whatsapp-template/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,6BAKX;AALD,WAAY,6BAA6B;IACvC,4CAAW,CAAA;IACX,4DAA2B,CAAA;IAC3B,8DAA6B,CAAA;IAC7B,0DAAyB,CAAA;AAC3B,CAAC,EALW,6BAA6B,GAA7B,qCAA6B,KAA7B,qCAA6B,QAKxC;AAED,IAAY,6BAMX;AAND,WAAY,6BAA6B;IACvC,oDAAmB,CAAA;IACnB,8CAAa,CAAA;IACb,gDAAe,CAAA;IACf,gDAAe,CAAA;IACf,sDAAqB,CAAA;AACvB,CAAC,EANW,6BAA6B,GAA7B,qCAA6B,KAA7B,qCAA6B,QAMxC;AAED,IAAY,6BAMX;AAND,WAAY,6BAA6B;IACvC,kDAAiB,CAAA;IACjB,8CAAa,CAAA;IACb,kDAAiB,CAAA;IACjB,oDAAmB,CAAA;IACnB,kDAAiB,CAAA;AACnB,CAAC,EANW,6BAA6B,GAA7B,qCAA6B,KAA7B,qCAA6B,QAMxC"}
|
|
@@ -23,9 +23,10 @@ export { normalizeWebchatSettings, WebchatSettings, WebchatSettingsProps, } from
|
|
|
23
23
|
export { WhatsappButtonList, WhatsappButtonListProps, WhatsappButtonListRowProps, WhatsappButtonListSectionProps, } from './whatsapp-button-list';
|
|
24
24
|
export { WhatsappCatalog, WhatsappCatalogProps } from './whatsapp-catalog';
|
|
25
25
|
export { WhatsappCTAUrlButton, WhatsappCTAUrlButtonProps, WhatsappCTAUrlHeaderType, } from './whatsapp-cta-url-button';
|
|
26
|
-
export { WhatsappInteractiveMediaCarousel, WhatsappInteractiveMediaCarouselProps, } from './whatsapp-interactive-media-carousel';
|
|
26
|
+
export { CardType, WhatsappInteractiveMediaCard, WhatsappInteractiveMediaCarousel, WhatsappInteractiveMediaCarouselProps, } from './whatsapp-interactive-media-carousel';
|
|
27
27
|
export { WhatsappMediaCarousel, WhatsappMediaCarouselProps, } from './whatsapp-media-carousel';
|
|
28
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
29
29
|
export { WhatsappProductCarousel, WhatsappProductCarouselProps, } from './whatsapp-product-carousel';
|
|
30
30
|
export { ProductItem, WhatsappProductList, WhatsappProductListProps, WhatsappProductListSection, } from './whatsapp-product-list';
|
|
31
|
-
export { WhatsappTemplate } from './whatsapp-template';
|
|
31
|
+
export { WhatsappTemplate } from './whatsapp-template/index';
|
|
32
|
+
export * from './whatsapp-template/types';
|
|
@@ -23,10 +23,11 @@ export { normalizeWebchatSettings, WebchatSettings, } from './webchat-settings';
|
|
|
23
23
|
export { WhatsappButtonList, } from './whatsapp-button-list';
|
|
24
24
|
export { WhatsappCatalog } from './whatsapp-catalog';
|
|
25
25
|
export { WhatsappCTAUrlButton, WhatsappCTAUrlHeaderType, } from './whatsapp-cta-url-button';
|
|
26
|
-
export { WhatsappInteractiveMediaCarousel, } from './whatsapp-interactive-media-carousel';
|
|
26
|
+
export { CardType, WhatsappInteractiveMediaCarousel, } from './whatsapp-interactive-media-carousel';
|
|
27
27
|
export { WhatsappMediaCarousel, } from './whatsapp-media-carousel';
|
|
28
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
29
29
|
export { WhatsappProductCarousel, } from './whatsapp-product-carousel';
|
|
30
30
|
export { WhatsappProductList, } from './whatsapp-product-list';
|
|
31
|
-
export { WhatsappTemplate } from './whatsapp-template';
|
|
31
|
+
export { WhatsappTemplate } from './whatsapp-template/index';
|
|
32
|
+
export * from './whatsapp-template/types';
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EACL,wBAAwB,EACxB,eAAe,GAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,GAInB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,oBAAoB,EAEpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gCAAgC,GAEjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,qBAAqB,GAEtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,uBAAuB,GAExB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAEL,mBAAmB,GAGpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EACL,wBAAwB,EACxB,eAAe,GAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,GAInB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,oBAAoB,EAEpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,QAAQ,EAER,gCAAgC,GAEjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,qBAAqB,GAEtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,uBAAuB,GAExB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAEL,mBAAmB,GAGpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,cAAc,2BAA2B,CAAA"}
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
imageLink: string;
|
|
1
|
+
export declare enum CardType {
|
|
2
|
+
CTA_URL = "cta_url",
|
|
3
|
+
QUICK_REPLY = "quick_reply"
|
|
5
4
|
}
|
|
6
|
-
interface
|
|
5
|
+
interface BaseCard {
|
|
6
|
+
imageLink: string;
|
|
7
7
|
text: string;
|
|
8
|
-
action: ActionCard;
|
|
9
8
|
}
|
|
9
|
+
interface UrlCard extends BaseCard {
|
|
10
|
+
type: CardType.CTA_URL;
|
|
11
|
+
action: {
|
|
12
|
+
buttonText: string;
|
|
13
|
+
buttonUrl: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
interface QuickReplyCard extends BaseCard {
|
|
17
|
+
type: CardType.QUICK_REPLY;
|
|
18
|
+
action: {
|
|
19
|
+
buttons: {
|
|
20
|
+
text: string;
|
|
21
|
+
payload: string;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export type WhatsappInteractiveMediaCard = UrlCard | QuickReplyCard;
|
|
10
26
|
export interface WhatsappInteractiveMediaCarouselProps {
|
|
11
|
-
cards:
|
|
27
|
+
cards: WhatsappInteractiveMediaCard[];
|
|
12
28
|
textMessage: string;
|
|
13
29
|
}
|
|
14
30
|
export declare const WhatsappInteractiveMediaCarousel: (props: WhatsappInteractiveMediaCarouselProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,10 +6,16 @@ import { Element } from './element';
|
|
|
6
6
|
import { WHATSAPP_MAX_BODY_CHARS, WHATSAPP_MAX_BUTTON_CHARS, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS, } from './multichannel/whatsapp/constants';
|
|
7
7
|
import { Pic } from './pic';
|
|
8
8
|
import { Title } from './title';
|
|
9
|
+
export var CardType;
|
|
10
|
+
(function (CardType) {
|
|
11
|
+
CardType["CTA_URL"] = "cta_url";
|
|
12
|
+
CardType["QUICK_REPLY"] = "quick_reply";
|
|
13
|
+
})(CardType || (CardType = {}));
|
|
9
14
|
/*
|
|
10
|
-
Reference: https://developers.facebook.com/
|
|
15
|
+
Reference: https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-media-carousel-messages?locale=en_US
|
|
11
16
|
*/
|
|
12
17
|
export const WhatsappInteractiveMediaCarousel = (props) => {
|
|
13
|
-
return (_jsx(Carousel, Object.assign({ text: truncateText(props.textMessage, WHATSAPP_MAX_BODY_CHARS) }, { children: props.cards.map((card, index) => (_jsxs(Element, { children: [_jsx(Pic, { src: card.
|
|
18
|
+
return (_jsx(Carousel, Object.assign({ text: truncateText(props.textMessage, WHATSAPP_MAX_BODY_CHARS) }, { children: props.cards.map((card, index) => (_jsxs(Element, { children: [_jsx(Pic, { src: card.imageLink }), _jsx(Title, { children: truncateText(card.text, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS) }), card.type === CardType.CTA_URL && (_jsx(Button, Object.assign({ url: card.action.buttonUrl }, { children: truncateText(card.action.buttonText, WHATSAPP_MAX_BUTTON_CHARS) }))), card.type === CardType.QUICK_REPLY &&
|
|
19
|
+
card.action.buttons.map((button, index) => (_jsx(Button, Object.assign({ payload: button.payload }, { children: truncateText(button.text, WHATSAPP_MAX_BUTTON_CHARS) }), index)))] }, index))) })));
|
|
14
20
|
};
|
|
15
21
|
//# sourceMappingURL=whatsapp-interactive-media-carousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-interactive-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-interactive-media-carousel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,qCAAqC,GACtC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"whatsapp-interactive-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-interactive-media-carousel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,qCAAqC,GACtC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,uCAA2B,CAAA;AAC7B,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AA+BD;;EAEE;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,KAA4C,EAC5C,EAAE;IACF,OAAO,CACL,KAAC,QAAQ,kBAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,uBAAuB,CAAC,gBACrE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,MAAC,OAAO,eACN,KAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,SAAS,GAAI,EAC5B,KAAC,KAAK,cACH,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,qCAAqC,CAAC,GACzD,EACP,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,CACjC,KAAC,MAAM,kBAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,gBAC/B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC,IACzD,CACV,EACA,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,KAAC,MAAM,kBAAa,OAAO,EAAE,MAAM,CAAC,OAAO,gBACxC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,KAD1C,KAAK,CAET,CACV,CAAC,KAfQ,KAAK,CAgBT,CACX,CAAC,IACO,CACZ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface WhatsappTemplateProps {
|
|
2
|
+
name: string;
|
|
3
|
+
language: string;
|
|
4
|
+
namespace?: string;
|
|
5
|
+
header?: Record<string, any>;
|
|
6
|
+
body?: Record<string, any>;
|
|
7
|
+
footer?: Record<string, any>;
|
|
8
|
+
buttons?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export declare const WhatsappTemplate: (props: WhatsappTemplateProps) => any;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { INPUT } from '@botonic/core';
|
|
3
|
+
import { renderComponent } from '../../util/react';
|
|
4
|
+
import { Message } from '../message';
|
|
5
|
+
const serialize = (message) => {
|
|
6
|
+
return { text: message };
|
|
7
|
+
};
|
|
8
|
+
export const WhatsappTemplate = (props) => {
|
|
9
|
+
const renderBrowser = () => {
|
|
10
|
+
// Return a dummy message for browser
|
|
11
|
+
const message = `Template ${props.name} with language ${props.language} and namespace ${props.namespace} would be sent to the user.`;
|
|
12
|
+
return (_jsx(Message, Object.assign({ json: serialize(message) }, props, { type: INPUT.TEXT }, { children: message })));
|
|
13
|
+
};
|
|
14
|
+
const renderNode = () => {
|
|
15
|
+
return (
|
|
16
|
+
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
17
|
+
_jsx("message", Object.assign({}, props, { name: props.name, language: props.language, namespace: props.namespace, header: props.header && JSON.stringify(props.header), body: props.body && JSON.stringify(props.body), footer: props.footer && JSON.stringify(props.footer), buttons: props.buttons && JSON.stringify(props.buttons), type: INPUT.WHATSAPP_TEMPLATE })));
|
|
18
|
+
};
|
|
19
|
+
return renderComponent({ renderBrowser, renderNode });
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/whatsapp-template/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAYD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAE,EAAE;IAC/D,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,QAAQ,kBAAkB,KAAK,CAAC,SAAS,6BAA6B,CAAA;QACpI,OAAO,CACL,KAAC,OAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,KAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,kCACM,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EACvD,IAAI,EAAE,KAAK,CAAC,iBAAiB,IAC7B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export declare enum WhatsAppTemplateButtonSubType {
|
|
2
|
+
URL = "URL",
|
|
3
|
+
QUICK_REPLY = "QUICK_REPLY",
|
|
4
|
+
PHONE_NUMBER = "PHONE_NUMBER",
|
|
5
|
+
VOICE_CALL = "VOICE_CALL"
|
|
6
|
+
}
|
|
7
|
+
export declare enum WhatsAppTemplateParameterType {
|
|
8
|
+
PAYLOAD = "PAYLOAD",
|
|
9
|
+
TEXT = "TEXT",
|
|
10
|
+
IMAGE = "IMAGE",
|
|
11
|
+
VIDEO = "VIDEO",
|
|
12
|
+
DOCUMENT = "DOCUMENT"
|
|
13
|
+
}
|
|
14
|
+
export declare enum WhatsAppTemplateComponentType {
|
|
15
|
+
HEADER = "HEADER",
|
|
16
|
+
BODY = "BODY",
|
|
17
|
+
FOOTER = "FOOTER",
|
|
18
|
+
BUTTONS = "BUTTONS",
|
|
19
|
+
BUTTON = "BUTTON"
|
|
20
|
+
}
|
|
21
|
+
export interface WhatsappTemplateHeaderTextParameter {
|
|
22
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
23
|
+
text: string;
|
|
24
|
+
}
|
|
25
|
+
export interface WhatsappTemplateHeaderImageParameter {
|
|
26
|
+
type: WhatsAppTemplateParameterType.IMAGE;
|
|
27
|
+
image: {
|
|
28
|
+
link: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface WhatsappTemplateComponentHeader {
|
|
32
|
+
type: WhatsAppTemplateComponentType.HEADER;
|
|
33
|
+
parameters: WhatsappTemplateHeaderTextParameter[] | WhatsappTemplateHeaderImageParameter[];
|
|
34
|
+
}
|
|
35
|
+
export interface WhatsappTemplateComponentBody {
|
|
36
|
+
type: WhatsAppTemplateComponentType.BODY;
|
|
37
|
+
parameters: {
|
|
38
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
39
|
+
parameter_name: string;
|
|
40
|
+
text: string;
|
|
41
|
+
}[];
|
|
42
|
+
}
|
|
43
|
+
export interface WhatsappTemplateComponentFooter {
|
|
44
|
+
type: WhatsAppTemplateComponentType.FOOTER;
|
|
45
|
+
parameters: {
|
|
46
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
47
|
+
parameter_name: string;
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
export interface WhatsappTemplateComponentButtons {
|
|
52
|
+
type: WhatsAppTemplateComponentType.BUTTONS;
|
|
53
|
+
buttons: WhatsappTemplateButton[];
|
|
54
|
+
}
|
|
55
|
+
export interface WhatsappTemplateQuickReplyButton {
|
|
56
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
57
|
+
sub_type: WhatsAppTemplateButtonSubType.QUICK_REPLY;
|
|
58
|
+
index: number;
|
|
59
|
+
parameters: {
|
|
60
|
+
type: WhatsAppTemplateParameterType.PAYLOAD;
|
|
61
|
+
payload: string;
|
|
62
|
+
}[];
|
|
63
|
+
}
|
|
64
|
+
export interface WhatsappTemplateUrlButton {
|
|
65
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
66
|
+
sub_type: WhatsAppTemplateButtonSubType.URL;
|
|
67
|
+
index: number;
|
|
68
|
+
parameters: {
|
|
69
|
+
type: WhatsAppTemplateParameterType.TEXT;
|
|
70
|
+
text: string;
|
|
71
|
+
}[];
|
|
72
|
+
}
|
|
73
|
+
export interface WhatsappTemplateVoiceCallButton {
|
|
74
|
+
type: WhatsAppTemplateComponentType.BUTTON;
|
|
75
|
+
sub_type: WhatsAppTemplateButtonSubType.VOICE_CALL;
|
|
76
|
+
index: number;
|
|
77
|
+
parameters: [];
|
|
78
|
+
}
|
|
79
|
+
export type WhatsappTemplateButton = WhatsappTemplateQuickReplyButton | WhatsappTemplateUrlButton | WhatsappTemplateVoiceCallButton;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export var WhatsAppTemplateButtonSubType;
|
|
2
|
+
(function (WhatsAppTemplateButtonSubType) {
|
|
3
|
+
WhatsAppTemplateButtonSubType["URL"] = "URL";
|
|
4
|
+
WhatsAppTemplateButtonSubType["QUICK_REPLY"] = "QUICK_REPLY";
|
|
5
|
+
WhatsAppTemplateButtonSubType["PHONE_NUMBER"] = "PHONE_NUMBER";
|
|
6
|
+
WhatsAppTemplateButtonSubType["VOICE_CALL"] = "VOICE_CALL";
|
|
7
|
+
})(WhatsAppTemplateButtonSubType || (WhatsAppTemplateButtonSubType = {}));
|
|
8
|
+
export var WhatsAppTemplateParameterType;
|
|
9
|
+
(function (WhatsAppTemplateParameterType) {
|
|
10
|
+
WhatsAppTemplateParameterType["PAYLOAD"] = "PAYLOAD";
|
|
11
|
+
WhatsAppTemplateParameterType["TEXT"] = "TEXT";
|
|
12
|
+
WhatsAppTemplateParameterType["IMAGE"] = "IMAGE";
|
|
13
|
+
WhatsAppTemplateParameterType["VIDEO"] = "VIDEO";
|
|
14
|
+
WhatsAppTemplateParameterType["DOCUMENT"] = "DOCUMENT";
|
|
15
|
+
})(WhatsAppTemplateParameterType || (WhatsAppTemplateParameterType = {}));
|
|
16
|
+
export var WhatsAppTemplateComponentType;
|
|
17
|
+
(function (WhatsAppTemplateComponentType) {
|
|
18
|
+
WhatsAppTemplateComponentType["HEADER"] = "HEADER";
|
|
19
|
+
WhatsAppTemplateComponentType["BODY"] = "BODY";
|
|
20
|
+
WhatsAppTemplateComponentType["FOOTER"] = "FOOTER";
|
|
21
|
+
WhatsAppTemplateComponentType["BUTTONS"] = "BUTTONS";
|
|
22
|
+
WhatsAppTemplateComponentType["BUTTON"] = "BUTTON";
|
|
23
|
+
})(WhatsAppTemplateComponentType || (WhatsAppTemplateComponentType = {}));
|
|
24
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/whatsapp-template/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,6BAKX;AALD,WAAY,6BAA6B;IACvC,4CAAW,CAAA;IACX,4DAA2B,CAAA;IAC3B,8DAA6B,CAAA;IAC7B,0DAAyB,CAAA;AAC3B,CAAC,EALW,6BAA6B,KAA7B,6BAA6B,QAKxC;AAED,MAAM,CAAN,IAAY,6BAMX;AAND,WAAY,6BAA6B;IACvC,oDAAmB,CAAA;IACnB,8CAAa,CAAA;IACb,gDAAe,CAAA;IACf,gDAAe,CAAA;IACf,sDAAqB,CAAA;AACvB,CAAC,EANW,6BAA6B,KAA7B,6BAA6B,QAMxC;AAED,MAAM,CAAN,IAAY,6BAMX;AAND,WAAY,6BAA6B;IACvC,kDAAiB,CAAA;IACjB,8CAAa,CAAA;IACb,kDAAiB,CAAA;IACjB,oDAAmB,CAAA;IACnB,kDAAiB,CAAA;AACnB,CAAC,EANW,6BAA6B,KAA7B,6BAA6B,QAMxC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.0-alpha.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "./lib/cjs",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"lint_core": "../../node_modules/.bin/eslint_d --cache --quiet '.*.js' '*.js' 'src/**/*.js*' --fix"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@botonic/core": "
|
|
23
|
+
"@botonic/core": "0.43.0-alpha.1",
|
|
24
24
|
"axios": "^1.12.2",
|
|
25
25
|
"emoji-picker-react": "^4.12.0",
|
|
26
26
|
"lodash.merge": "^4.6.2",
|
|
@@ -80,4 +80,4 @@
|
|
|
80
80
|
"javascript",
|
|
81
81
|
"react"
|
|
82
82
|
]
|
|
83
|
-
}
|
|
83
|
+
}
|
package/src/components/index.ts
CHANGED
|
@@ -37,6 +37,8 @@ export {
|
|
|
37
37
|
WhatsappCTAUrlHeaderType,
|
|
38
38
|
} from './whatsapp-cta-url-button'
|
|
39
39
|
export {
|
|
40
|
+
CardType,
|
|
41
|
+
WhatsappInteractiveMediaCard,
|
|
40
42
|
WhatsappInteractiveMediaCarousel,
|
|
41
43
|
WhatsappInteractiveMediaCarouselProps,
|
|
42
44
|
} from './whatsapp-interactive-media-carousel'
|
|
@@ -55,4 +57,5 @@ export {
|
|
|
55
57
|
WhatsappProductListProps,
|
|
56
58
|
WhatsappProductListSection,
|
|
57
59
|
} from './whatsapp-product-list'
|
|
58
|
-
export { WhatsappTemplate } from './whatsapp-template'
|
|
60
|
+
export { WhatsappTemplate } from './whatsapp-template/index'
|
|
61
|
+
export * from './whatsapp-template/types'
|
|
@@ -12,24 +12,42 @@ import {
|
|
|
12
12
|
import { Pic } from './pic'
|
|
13
13
|
import { Title } from './title'
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
imageLink: string
|
|
15
|
+
export enum CardType {
|
|
16
|
+
CTA_URL = 'cta_url',
|
|
17
|
+
QUICK_REPLY = 'quick_reply',
|
|
19
18
|
}
|
|
20
19
|
|
|
21
|
-
interface
|
|
20
|
+
interface BaseCard {
|
|
21
|
+
imageLink: string
|
|
22
22
|
text: string
|
|
23
|
-
action: ActionCard
|
|
24
23
|
}
|
|
25
24
|
|
|
25
|
+
interface UrlCard extends BaseCard {
|
|
26
|
+
type: CardType.CTA_URL
|
|
27
|
+
action: {
|
|
28
|
+
buttonText: string
|
|
29
|
+
buttonUrl: string
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface QuickReplyCard extends BaseCard {
|
|
34
|
+
type: CardType.QUICK_REPLY
|
|
35
|
+
action: {
|
|
36
|
+
buttons: {
|
|
37
|
+
text: string
|
|
38
|
+
payload: string
|
|
39
|
+
}[]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type WhatsappInteractiveMediaCard = UrlCard | QuickReplyCard
|
|
26
44
|
export interface WhatsappInteractiveMediaCarouselProps {
|
|
27
|
-
cards:
|
|
45
|
+
cards: WhatsappInteractiveMediaCard[]
|
|
28
46
|
textMessage: string
|
|
29
47
|
}
|
|
30
48
|
|
|
31
49
|
/*
|
|
32
|
-
Reference: https://developers.facebook.com/
|
|
50
|
+
Reference: https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-media-carousel-messages?locale=en_US
|
|
33
51
|
*/
|
|
34
52
|
export const WhatsappInteractiveMediaCarousel = (
|
|
35
53
|
props: WhatsappInteractiveMediaCarouselProps
|
|
@@ -38,13 +56,21 @@ export const WhatsappInteractiveMediaCarousel = (
|
|
|
38
56
|
<Carousel text={truncateText(props.textMessage, WHATSAPP_MAX_BODY_CHARS)}>
|
|
39
57
|
{props.cards.map((card, index) => (
|
|
40
58
|
<Element key={index}>
|
|
41
|
-
<Pic src={card.
|
|
59
|
+
<Pic src={card.imageLink} />
|
|
42
60
|
<Title>
|
|
43
61
|
{truncateText(card.text, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS)}
|
|
44
62
|
</Title>
|
|
45
|
-
|
|
46
|
-
{
|
|
47
|
-
|
|
63
|
+
{card.type === CardType.CTA_URL && (
|
|
64
|
+
<Button url={card.action.buttonUrl}>
|
|
65
|
+
{truncateText(card.action.buttonText, WHATSAPP_MAX_BUTTON_CHARS)}
|
|
66
|
+
</Button>
|
|
67
|
+
)}
|
|
68
|
+
{card.type === CardType.QUICK_REPLY &&
|
|
69
|
+
card.action.buttons.map((button, index) => (
|
|
70
|
+
<Button key={index} payload={button.payload}>
|
|
71
|
+
{truncateText(button.text, WHATSAPP_MAX_BUTTON_CHARS)}
|
|
72
|
+
</Button>
|
|
73
|
+
))}
|
|
48
74
|
</Element>
|
|
49
75
|
))}
|
|
50
76
|
</Carousel>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { INPUT } from '@botonic/core'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
import { renderComponent } from '../../util/react'
|
|
5
|
+
import { Message } from '../message'
|
|
6
|
+
|
|
7
|
+
const serialize = (message: string) => {
|
|
8
|
+
return { text: message }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface WhatsappTemplateProps {
|
|
12
|
+
name: string
|
|
13
|
+
language: string
|
|
14
|
+
namespace?: string
|
|
15
|
+
header?: Record<string, any>
|
|
16
|
+
body?: Record<string, any>
|
|
17
|
+
footer?: Record<string, any>
|
|
18
|
+
buttons?: Record<string, any>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const WhatsappTemplate = (props: WhatsappTemplateProps) => {
|
|
22
|
+
const renderBrowser = () => {
|
|
23
|
+
// Return a dummy message for browser
|
|
24
|
+
const message = `Template ${props.name} with language ${props.language} and namespace ${props.namespace} would be sent to the user.`
|
|
25
|
+
return (
|
|
26
|
+
<Message json={serialize(message)} {...props} type={INPUT.TEXT}>
|
|
27
|
+
{message}
|
|
28
|
+
</Message>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const renderNode = () => {
|
|
33
|
+
return (
|
|
34
|
+
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
35
|
+
<message
|
|
36
|
+
{...props}
|
|
37
|
+
name={props.name}
|
|
38
|
+
language={props.language}
|
|
39
|
+
namespace={props.namespace}
|
|
40
|
+
header={props.header && JSON.stringify(props.header)}
|
|
41
|
+
body={props.body && JSON.stringify(props.body)}
|
|
42
|
+
footer={props.footer && JSON.stringify(props.footer)}
|
|
43
|
+
buttons={props.buttons && JSON.stringify(props.buttons)}
|
|
44
|
+
type={INPUT.WHATSAPP_TEMPLATE}
|
|
45
|
+
/>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return renderComponent({ renderBrowser, renderNode })
|
|
50
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export enum WhatsAppTemplateButtonSubType {
|
|
2
|
+
URL = 'URL',
|
|
3
|
+
QUICK_REPLY = 'QUICK_REPLY',
|
|
4
|
+
PHONE_NUMBER = 'PHONE_NUMBER',
|
|
5
|
+
VOICE_CALL = 'VOICE_CALL',
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum WhatsAppTemplateParameterType {
|
|
9
|
+
PAYLOAD = 'PAYLOAD',
|
|
10
|
+
TEXT = 'TEXT',
|
|
11
|
+
IMAGE = 'IMAGE',
|
|
12
|
+
VIDEO = 'VIDEO',
|
|
13
|
+
DOCUMENT = 'DOCUMENT',
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export enum WhatsAppTemplateComponentType {
|
|
17
|
+
HEADER = 'HEADER',
|
|
18
|
+
BODY = 'BODY',
|
|
19
|
+
FOOTER = 'FOOTER',
|
|
20
|
+
BUTTONS = 'BUTTONS',
|
|
21
|
+
BUTTON = 'BUTTON',
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface WhatsappTemplateHeaderTextParameter {
|
|
25
|
+
type: WhatsAppTemplateParameterType.TEXT
|
|
26
|
+
text: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface WhatsappTemplateHeaderImageParameter {
|
|
30
|
+
type: WhatsAppTemplateParameterType.IMAGE
|
|
31
|
+
image: {
|
|
32
|
+
link: string
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface WhatsappTemplateComponentHeader {
|
|
37
|
+
type: WhatsAppTemplateComponentType.HEADER
|
|
38
|
+
parameters:
|
|
39
|
+
| WhatsappTemplateHeaderTextParameter[]
|
|
40
|
+
| WhatsappTemplateHeaderImageParameter[]
|
|
41
|
+
// | {
|
|
42
|
+
// type: WhatsAppTemplateParameterType.VIDEO
|
|
43
|
+
// video: string
|
|
44
|
+
// }[]
|
|
45
|
+
// | {
|
|
46
|
+
// type: WhatsAppTemplateParameterType.DOCUMENT
|
|
47
|
+
// document: string
|
|
48
|
+
// }[]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface WhatsappTemplateComponentBody {
|
|
52
|
+
type: WhatsAppTemplateComponentType.BODY
|
|
53
|
+
parameters: {
|
|
54
|
+
type: WhatsAppTemplateParameterType.TEXT
|
|
55
|
+
parameter_name: string
|
|
56
|
+
text: string
|
|
57
|
+
}[]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface WhatsappTemplateComponentFooter {
|
|
61
|
+
type: WhatsAppTemplateComponentType.FOOTER
|
|
62
|
+
parameters: {
|
|
63
|
+
type: WhatsAppTemplateParameterType.TEXT
|
|
64
|
+
parameter_name: string
|
|
65
|
+
text: string
|
|
66
|
+
}[]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface WhatsappTemplateComponentButtons {
|
|
70
|
+
type: WhatsAppTemplateComponentType.BUTTONS
|
|
71
|
+
buttons: WhatsappTemplateButton[]
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface WhatsappTemplateQuickReplyButton {
|
|
75
|
+
type: WhatsAppTemplateComponentType.BUTTON
|
|
76
|
+
sub_type: WhatsAppTemplateButtonSubType.QUICK_REPLY
|
|
77
|
+
index: number
|
|
78
|
+
parameters: {
|
|
79
|
+
type: WhatsAppTemplateParameterType.PAYLOAD
|
|
80
|
+
payload: string
|
|
81
|
+
}[]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface WhatsappTemplateUrlButton {
|
|
85
|
+
type: WhatsAppTemplateComponentType.BUTTON
|
|
86
|
+
sub_type: WhatsAppTemplateButtonSubType.URL
|
|
87
|
+
index: number
|
|
88
|
+
parameters: {
|
|
89
|
+
type: WhatsAppTemplateParameterType.TEXT
|
|
90
|
+
text: string // URL dynamic param
|
|
91
|
+
}[]
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface WhatsappTemplateVoiceCallButton {
|
|
95
|
+
type: WhatsAppTemplateComponentType.BUTTON
|
|
96
|
+
sub_type: WhatsAppTemplateButtonSubType.VOICE_CALL
|
|
97
|
+
index: number
|
|
98
|
+
parameters: []
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export type WhatsappTemplateButton =
|
|
102
|
+
| WhatsappTemplateQuickReplyButton
|
|
103
|
+
| WhatsappTemplateUrlButton
|
|
104
|
+
| WhatsappTemplateVoiceCallButton
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function WhatsappTemplate(props: any): any;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WhatsappTemplate = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
const core_1 = require("@botonic/core");
|
|
7
|
-
const react_1 = tslib_1.__importDefault(require("react"));
|
|
8
|
-
const react_2 = require("../util/react");
|
|
9
|
-
const message_1 = require("./message");
|
|
10
|
-
const serialize = whatsappTemplateProps => {
|
|
11
|
-
return { text: whatsappTemplateProps };
|
|
12
|
-
};
|
|
13
|
-
const WhatsappTemplate = props => {
|
|
14
|
-
const renderBrowser = () => {
|
|
15
|
-
// Return a dummy message for browser
|
|
16
|
-
const message = `Template ${props.name} with namespace ${props.namespace} would be sent to the user.`;
|
|
17
|
-
return ((0, jsx_runtime_1.jsx)(message_1.Message, Object.assign({ json: serialize(message) }, props, { type: core_1.INPUT.TEXT }, { children: message })));
|
|
18
|
-
};
|
|
19
|
-
const renderNode = () => {
|
|
20
|
-
return ((0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { header: props.header && JSON.stringify(props.header), body: props.body && JSON.stringify(props.body), footer: props.footer && JSON.stringify(props.footer), type: core_1.INPUT.WHATSAPP_TEMPLATE })));
|
|
21
|
-
};
|
|
22
|
-
return (0, react_2.renderComponent)({ renderBrowser, renderNode });
|
|
23
|
-
};
|
|
24
|
-
exports.WhatsappTemplate = WhatsappTemplate;
|
|
25
|
-
//# sourceMappingURL=whatsapp-template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-template.js","sourceRoot":"","sources":["../../../src/components/whatsapp-template.jsx"],"names":[],"mappings":";;;;;AAAA,wCAAqC;AACrC,0DAAyB;AAEzB,yCAA+C;AAC/C,uCAAmC;AAEnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE;IACxC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;AACxC,CAAC,CAAA;AAEM,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE;IACtC,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,IAAI,mBAAmB,KAAK,CAAC,SAAS,6BAA6B,CAAA;QACrG,OAAO,CACL,uBAAC,iBAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,YAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO,CACL,oDACM,KAAK,IACT,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,YAAK,CAAC,iBAAiB,IAC7B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAxBY,QAAA,gBAAgB,oBAwB5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function WhatsappTemplate(props: any): any;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { INPUT } from '@botonic/core';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { renderComponent } from '../util/react';
|
|
5
|
-
import { Message } from './message';
|
|
6
|
-
const serialize = whatsappTemplateProps => {
|
|
7
|
-
return { text: whatsappTemplateProps };
|
|
8
|
-
};
|
|
9
|
-
export const WhatsappTemplate = props => {
|
|
10
|
-
const renderBrowser = () => {
|
|
11
|
-
// Return a dummy message for browser
|
|
12
|
-
const message = `Template ${props.name} with namespace ${props.namespace} would be sent to the user.`;
|
|
13
|
-
return (_jsx(Message, Object.assign({ json: serialize(message) }, props, { type: INPUT.TEXT }, { children: message })));
|
|
14
|
-
};
|
|
15
|
-
const renderNode = () => {
|
|
16
|
-
return (_jsx("message", Object.assign({}, props, { header: props.header && JSON.stringify(props.header), body: props.body && JSON.stringify(props.body), footer: props.footer && JSON.stringify(props.footer), type: INPUT.WHATSAPP_TEMPLATE })));
|
|
17
|
-
};
|
|
18
|
-
return renderComponent({ renderBrowser, renderNode });
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=whatsapp-template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-template.js","sourceRoot":"","sources":["../../../src/components/whatsapp-template.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE;IACxC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE;IACtC,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,IAAI,mBAAmB,KAAK,CAAC,SAAS,6BAA6B,CAAA;QACrG,OAAO,CACL,KAAC,OAAO,kBAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAM,KAAK,IAAE,IAAI,EAAE,KAAK,CAAC,IAAI,gBAC3D,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO,CACL,kCACM,KAAK,IACT,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EACpD,IAAI,EAAE,KAAK,CAAC,iBAAiB,IAC7B,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { INPUT } from '@botonic/core'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import { renderComponent } from '../util/react'
|
|
5
|
-
import { Message } from './message'
|
|
6
|
-
|
|
7
|
-
const serialize = whatsappTemplateProps => {
|
|
8
|
-
return { text: whatsappTemplateProps }
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const WhatsappTemplate = props => {
|
|
12
|
-
const renderBrowser = () => {
|
|
13
|
-
// Return a dummy message for browser
|
|
14
|
-
const message = `Template ${props.name} with namespace ${props.namespace} would be sent to the user.`
|
|
15
|
-
return (
|
|
16
|
-
<Message json={serialize(message)} {...props} type={INPUT.TEXT}>
|
|
17
|
-
{message}
|
|
18
|
-
</Message>
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const renderNode = () => {
|
|
23
|
-
return (
|
|
24
|
-
<message
|
|
25
|
-
{...props}
|
|
26
|
-
header={props.header && JSON.stringify(props.header)}
|
|
27
|
-
body={props.body && JSON.stringify(props.body)}
|
|
28
|
-
footer={props.footer && JSON.stringify(props.footer)}
|
|
29
|
-
type={INPUT.WHATSAPP_TEMPLATE}
|
|
30
|
-
/>
|
|
31
|
-
)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return renderComponent({ renderBrowser, renderNode })
|
|
35
|
-
}
|