@botonic/react 0.41.0 → 0.41.1-alpha.0
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-types.d.ts +1 -0
- package/lib/cjs/components/index.d.ts +1 -0
- package/lib/cjs/components/index.js +3 -1
- package/lib/cjs/components/index.js.map +1 -1
- package/lib/cjs/components/multichannel/whatsapp/constants.d.ts +1 -0
- package/lib/cjs/components/multichannel/whatsapp/constants.js +2 -1
- package/lib/cjs/components/multichannel/whatsapp/constants.js.map +1 -1
- package/lib/cjs/components/whatsapp-interactive-media-carousel.d.ts +15 -0
- package/lib/cjs/components/whatsapp-interactive-media-carousel.js +19 -0
- package/lib/cjs/components/whatsapp-interactive-media-carousel.js.map +1 -0
- package/lib/cjs/components/whatsapp-media-carousel.js +3 -0
- package/lib/cjs/components/whatsapp-media-carousel.js.map +1 -1
- package/lib/esm/components/index-types.d.ts +1 -0
- package/lib/esm/components/index.d.ts +1 -0
- package/lib/esm/components/index.js +1 -0
- package/lib/esm/components/index.js.map +1 -1
- package/lib/esm/components/multichannel/whatsapp/constants.d.ts +1 -0
- package/lib/esm/components/multichannel/whatsapp/constants.js +1 -0
- package/lib/esm/components/multichannel/whatsapp/constants.js.map +1 -1
- package/lib/esm/components/whatsapp-interactive-media-carousel.d.ts +15 -0
- package/lib/esm/components/whatsapp-interactive-media-carousel.js +15 -0
- package/lib/esm/components/whatsapp-interactive-media-carousel.js.map +1 -0
- package/lib/esm/components/whatsapp-media-carousel.js +3 -0
- package/lib/esm/components/whatsapp-media-carousel.js.map +1 -1
- package/package.json +3 -3
- package/src/components/index-types.ts +1 -0
- package/src/components/index.ts +4 -0
- package/src/components/multichannel/whatsapp/constants.ts +1 -0
- package/src/components/whatsapp-interactive-media-carousel.tsx +52 -0
- package/src/components/whatsapp-media-carousel.tsx +3 -0
|
@@ -23,6 +23,7 @@ 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
27
|
export { WhatsappMediaCarousel, WhatsappMediaCarouselProps, } from './whatsapp-media-carousel';
|
|
27
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
28
29
|
export { WhatsappProductCarousel, WhatsappProductCarouselProps, } from './whatsapp-product-carousel';
|
|
@@ -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.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.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; } });
|
|
@@ -52,6 +52,8 @@ Object.defineProperty(exports, "WhatsappCatalog", { enumerable: true, get: funct
|
|
|
52
52
|
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
|
+
var whatsapp_interactive_media_carousel_1 = require("./whatsapp-interactive-media-carousel");
|
|
56
|
+
Object.defineProperty(exports, "WhatsappInteractiveMediaCarousel", { enumerable: true, get: function () { return whatsapp_interactive_media_carousel_1.WhatsappInteractiveMediaCarousel; } });
|
|
55
57
|
var whatsapp_media_carousel_1 = require("./whatsapp-media-carousel");
|
|
56
58
|
Object.defineProperty(exports, "WhatsappMediaCarousel", { enumerable: true, get: function () { return whatsapp_media_carousel_1.WhatsappMediaCarousel; } });
|
|
57
59
|
var whatsapp_product_1 = require("./whatsapp-product");
|
|
@@ -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,qEAGkC;AAFhC,gIAAA,qBAAqB,OAAA;AAGvB,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yEAGoC;AAFlC,oIAAA,uBAAuB,OAAA;AAGzB,iEAKgC;AAH9B,4HAAA,mBAAmB,OAAA;AAIrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
|
|
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,6FAG8C;AAF5C,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,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
|
|
@@ -6,6 +6,7 @@ export declare const WHATSAPP_LIST_MAX_BUTTONS = 10;
|
|
|
6
6
|
export declare const WHATSAPP_MAX_BUTTON_CHARS = 20;
|
|
7
7
|
export declare const WHATSAPP_MAX_HEADER_CHARS = 60;
|
|
8
8
|
export declare const WHATSAPP_MAX_BODY_CHARS = 1024;
|
|
9
|
+
export declare const WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS = 160;
|
|
9
10
|
export declare const WHATSAPP_MAX_FOOTER_CHARS = 60;
|
|
10
11
|
export declare const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = "More options:";
|
|
11
12
|
export declare const MENU_BUTTON_WHATSAPP_BUTTON_LIST = "Show options";
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
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;
|
|
3
|
+
exports.MENU_BUTTON_WHATSAPP_BUTTON_LIST = exports.DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = exports.WHATSAPP_MAX_FOOTER_CHARS = exports.WHATSAPP_MAX_CAROUSEL_CARD_TEXT_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;
|
|
4
4
|
exports.MULTICHANNEL_WHATSAPP_PROPS = { markdown: false };
|
|
5
5
|
exports.WHATSAPP_MAX_BUTTONS = 3;
|
|
6
6
|
exports.WHATSAPP_LIST_MAX_BUTTONS = 10;
|
|
7
7
|
exports.WHATSAPP_MAX_BUTTON_CHARS = 20;
|
|
8
8
|
exports.WHATSAPP_MAX_HEADER_CHARS = 60;
|
|
9
9
|
exports.WHATSAPP_MAX_BODY_CHARS = 1024;
|
|
10
|
+
exports.WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS = 160;
|
|
10
11
|
exports.WHATSAPP_MAX_FOOTER_CHARS = 60;
|
|
11
12
|
exports.DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:';
|
|
12
13
|
exports.MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAEjD,QAAA,oBAAoB,GAAG,CAAC,CAAA;AACxB,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,uBAAuB,GAAG,IAAI,CAAA;AAC9B,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,qCAAqC,GAAG,eAAe,CAAA;AACvD,QAAA,gCAAgC,GAAG,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAEjD,QAAA,oBAAoB,GAAG,CAAC,CAAA;AACxB,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,uBAAuB,GAAG,IAAI,CAAA;AAC9B,QAAA,qCAAqC,GAAG,GAAG,CAAA;AAC3C,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,qCAAqC,GAAG,eAAe,CAAA;AACvD,QAAA,gCAAgC,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ActionCard {
|
|
2
|
+
buttonText: string;
|
|
3
|
+
buttonUrl: string;
|
|
4
|
+
imageLink: string;
|
|
5
|
+
}
|
|
6
|
+
interface Card {
|
|
7
|
+
text: string;
|
|
8
|
+
action: ActionCard;
|
|
9
|
+
}
|
|
10
|
+
export interface WhatsappInteractiveMediaCarouselProps {
|
|
11
|
+
cards: Card[];
|
|
12
|
+
textMessage: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const WhatsappInteractiveMediaCarousel: (props: WhatsappInteractiveMediaCarouselProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhatsappInteractiveMediaCarousel = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const button_1 = require("./button");
|
|
7
|
+
const carousel_1 = require("./carousel");
|
|
8
|
+
const element_1 = require("./element");
|
|
9
|
+
const constants_1 = require("./multichannel/whatsapp/constants");
|
|
10
|
+
const pic_1 = require("./pic");
|
|
11
|
+
const title_1 = require("./title");
|
|
12
|
+
/*
|
|
13
|
+
Reference: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/interactive-media-carousel-messages/
|
|
14
|
+
*/
|
|
15
|
+
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.action.imageLink }), (0, jsx_runtime_1.jsx)(title_1.Title, { children: (0, util_1.truncateText)(card.text, constants_1.WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS) }), (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) }))] }, index))) })));
|
|
17
|
+
};
|
|
18
|
+
exports.WhatsappInteractiveMediaCarousel = WhatsappInteractiveMediaCarousel;
|
|
19
|
+
//# sourceMappingURL=whatsapp-interactive-media-carousel.js.map
|
|
@@ -0,0 +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;AAkB/B;;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,MAAM,CAAC,SAAS,GAAI,EACnC,uBAAC,aAAK,cACH,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,iDAAqC,CAAC,GACzD,EACR,uBAAC,eAAM,kBAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,gBAC/B,IAAA,mBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,qCAAyB,CAAC,IACzD,KAPG,KAAK,CAQT,CACX,CAAC,IACO,CACZ,CAAA;AACH,CAAC,CAAA;AAlBY,QAAA,gCAAgC,oCAkB5C"}
|
|
@@ -9,6 +9,9 @@ const message_1 = require("./message");
|
|
|
9
9
|
const serialize = (message) => {
|
|
10
10
|
return { text: message };
|
|
11
11
|
};
|
|
12
|
+
/*
|
|
13
|
+
Reference: https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/media-card-carousel-templates
|
|
14
|
+
*/
|
|
12
15
|
const WhatsappMediaCarousel = (props) => {
|
|
13
16
|
const renderBrowser = () => {
|
|
14
17
|
// Return a dummy message for browser
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-media-carousel.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,mDAAoD;AACpD,yCAA+C;AAC/C,uCAAmC;AAsDnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"whatsapp-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-media-carousel.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,mDAAoD;AACpD,yCAA+C;AAC/C,uCAAmC;AAsDnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED;;EAEE;AACK,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,oDAAoD,CAAA;QACpE,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,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aACvB;YACD,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;iBAC3B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAe,EAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,IAAI,EAAE,YAAK,CAAC,uBAAuB,IACnC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAxCY,QAAA,qBAAqB,yBAwCjC"}
|
|
@@ -23,6 +23,7 @@ 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
27
|
export { WhatsappMediaCarousel, WhatsappMediaCarouselProps, } from './whatsapp-media-carousel';
|
|
27
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
28
29
|
export { WhatsappProductCarousel, WhatsappProductCarouselProps, } from './whatsapp-product-carousel';
|
|
@@ -23,6 +23,7 @@ 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
27
|
export { WhatsappMediaCarousel, } from './whatsapp-media-carousel';
|
|
27
28
|
export { WhatsappProduct } from './whatsapp-product';
|
|
28
29
|
export { WhatsappProductCarousel, } from './whatsapp-product-carousel';
|
|
@@ -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,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,qBAAqB,CAAA"}
|
|
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,qBAAqB,CAAA"}
|
|
@@ -6,6 +6,7 @@ export declare const WHATSAPP_LIST_MAX_BUTTONS = 10;
|
|
|
6
6
|
export declare const WHATSAPP_MAX_BUTTON_CHARS = 20;
|
|
7
7
|
export declare const WHATSAPP_MAX_HEADER_CHARS = 60;
|
|
8
8
|
export declare const WHATSAPP_MAX_BODY_CHARS = 1024;
|
|
9
|
+
export declare const WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS = 160;
|
|
9
10
|
export declare const WHATSAPP_MAX_FOOTER_CHARS = 60;
|
|
10
11
|
export declare const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = "More options:";
|
|
11
12
|
export declare const MENU_BUTTON_WHATSAPP_BUTTON_LIST = "Show options";
|
|
@@ -4,6 +4,7 @@ export const WHATSAPP_LIST_MAX_BUTTONS = 10;
|
|
|
4
4
|
export const WHATSAPP_MAX_BUTTON_CHARS = 20;
|
|
5
5
|
export const WHATSAPP_MAX_HEADER_CHARS = 60;
|
|
6
6
|
export const WHATSAPP_MAX_BODY_CHARS = 1024;
|
|
7
|
+
export const WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS = 160;
|
|
7
8
|
export const WHATSAPP_MAX_FOOTER_CHARS = 60;
|
|
8
9
|
export const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:';
|
|
9
10
|
export const MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,eAAe,CAAA;AACpE,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAA;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,eAAe,CAAA;AACpE,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ActionCard {
|
|
2
|
+
buttonText: string;
|
|
3
|
+
buttonUrl: string;
|
|
4
|
+
imageLink: string;
|
|
5
|
+
}
|
|
6
|
+
interface Card {
|
|
7
|
+
text: string;
|
|
8
|
+
action: ActionCard;
|
|
9
|
+
}
|
|
10
|
+
export interface WhatsappInteractiveMediaCarouselProps {
|
|
11
|
+
cards: Card[];
|
|
12
|
+
textMessage: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const WhatsappInteractiveMediaCarousel: (props: WhatsappInteractiveMediaCarouselProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { truncateText } from '../util';
|
|
3
|
+
import { Button } from './button';
|
|
4
|
+
import { Carousel } from './carousel';
|
|
5
|
+
import { Element } from './element';
|
|
6
|
+
import { WHATSAPP_MAX_BODY_CHARS, WHATSAPP_MAX_BUTTON_CHARS, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS, } from './multichannel/whatsapp/constants';
|
|
7
|
+
import { Pic } from './pic';
|
|
8
|
+
import { Title } from './title';
|
|
9
|
+
/*
|
|
10
|
+
Reference: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/interactive-media-carousel-messages/
|
|
11
|
+
*/
|
|
12
|
+
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.action.imageLink }), _jsx(Title, { children: truncateText(card.text, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS) }), _jsx(Button, Object.assign({ url: card.action.buttonUrl }, { children: truncateText(card.action.buttonText, WHATSAPP_MAX_BUTTON_CHARS) }))] }, index))) })));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=whatsapp-interactive-media-carousel.js.map
|
|
@@ -0,0 +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;AAkB/B;;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,MAAM,CAAC,SAAS,GAAI,EACnC,KAAC,KAAK,cACH,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,qCAAqC,CAAC,GACzD,EACR,KAAC,MAAM,kBAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,gBAC/B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC,IACzD,KAPG,KAAK,CAQT,CACX,CAAC,IACO,CACZ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -6,6 +6,9 @@ import { Message } from './message';
|
|
|
6
6
|
const serialize = (message) => {
|
|
7
7
|
return { text: message };
|
|
8
8
|
};
|
|
9
|
+
/*
|
|
10
|
+
Reference: https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/media-card-carousel-templates
|
|
11
|
+
*/
|
|
9
12
|
export const WhatsappMediaCarousel = (props) => {
|
|
10
13
|
const renderBrowser = () => {
|
|
11
14
|
// Return a dummy message for browser
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-media-carousel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsDnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,oDAAoD,CAAA;QACpE,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,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aACvB;YACD,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;iBAC3B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,kCACM,KAAK,IACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,IAAI,EAAE,KAAK,CAAC,uBAAuB,IACnC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"whatsapp-media-carousel.js","sourceRoot":"","sources":["../../../src/components/whatsapp-media-carousel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsDnC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED;;EAEE;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACzE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,oDAAoD,CAAA;QACpE,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,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;aACvB;YACD,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;iBAC3B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,kCACM,KAAK,IACT,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,IAAI,EAAE,KAAK,CAAC,uBAAuB,IACnC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "0.41.0",
|
|
3
|
+
"version": "0.41.1-alpha.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "./lib/cjs",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"lint_core": "../../node_modules/.bin/eslint_d --cache --quiet '.*.js' '*.js' 'src/**/*.js*' --fix"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@botonic/core": "
|
|
24
|
+
"@botonic/core": "0.41.1-alpha.0",
|
|
25
25
|
"axios": "^1.12.2",
|
|
26
26
|
"emoji-picker-react": "^4.12.0",
|
|
27
27
|
"lodash.merge": "^4.6.2",
|
|
@@ -81,4 +81,4 @@
|
|
|
81
81
|
"javascript",
|
|
82
82
|
"react"
|
|
83
83
|
]
|
|
84
|
-
}
|
|
84
|
+
}
|
package/src/components/index.ts
CHANGED
|
@@ -36,6 +36,10 @@ export {
|
|
|
36
36
|
WhatsappCTAUrlButtonProps,
|
|
37
37
|
WhatsappCTAUrlHeaderType,
|
|
38
38
|
} from './whatsapp-cta-url-button'
|
|
39
|
+
export {
|
|
40
|
+
WhatsappInteractiveMediaCarousel,
|
|
41
|
+
WhatsappInteractiveMediaCarouselProps,
|
|
42
|
+
} from './whatsapp-interactive-media-carousel'
|
|
39
43
|
export {
|
|
40
44
|
WhatsappMediaCarousel,
|
|
41
45
|
WhatsappMediaCarouselProps,
|
|
@@ -5,6 +5,7 @@ export const WHATSAPP_LIST_MAX_BUTTONS = 10
|
|
|
5
5
|
export const WHATSAPP_MAX_BUTTON_CHARS = 20
|
|
6
6
|
export const WHATSAPP_MAX_HEADER_CHARS = 60
|
|
7
7
|
export const WHATSAPP_MAX_BODY_CHARS = 1024
|
|
8
|
+
export const WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS = 160
|
|
8
9
|
export const WHATSAPP_MAX_FOOTER_CHARS = 60
|
|
9
10
|
export const DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR = 'More options:'
|
|
10
11
|
export const MENU_BUTTON_WHATSAPP_BUTTON_LIST = 'Show options'
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { truncateText } from '../util'
|
|
4
|
+
import { Button } from './button'
|
|
5
|
+
import { Carousel } from './carousel'
|
|
6
|
+
import { Element } from './element'
|
|
7
|
+
import {
|
|
8
|
+
WHATSAPP_MAX_BODY_CHARS,
|
|
9
|
+
WHATSAPP_MAX_BUTTON_CHARS,
|
|
10
|
+
WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS,
|
|
11
|
+
} from './multichannel/whatsapp/constants'
|
|
12
|
+
import { Pic } from './pic'
|
|
13
|
+
import { Title } from './title'
|
|
14
|
+
|
|
15
|
+
interface ActionCard {
|
|
16
|
+
buttonText: string
|
|
17
|
+
buttonUrl: string
|
|
18
|
+
imageLink: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface Card {
|
|
22
|
+
text: string
|
|
23
|
+
action: ActionCard
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface WhatsappInteractiveMediaCarouselProps {
|
|
27
|
+
cards: Card[]
|
|
28
|
+
textMessage: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
Reference: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/interactive-media-carousel-messages/
|
|
33
|
+
*/
|
|
34
|
+
export const WhatsappInteractiveMediaCarousel = (
|
|
35
|
+
props: WhatsappInteractiveMediaCarouselProps
|
|
36
|
+
) => {
|
|
37
|
+
return (
|
|
38
|
+
<Carousel text={truncateText(props.textMessage, WHATSAPP_MAX_BODY_CHARS)}>
|
|
39
|
+
{props.cards.map((card, index) => (
|
|
40
|
+
<Element key={index}>
|
|
41
|
+
<Pic src={card.action.imageLink} />
|
|
42
|
+
<Title>
|
|
43
|
+
{truncateText(card.text, WHATSAPP_MAX_CAROUSEL_CARD_TEXT_CHARS)}
|
|
44
|
+
</Title>
|
|
45
|
+
<Button url={card.action.buttonUrl}>
|
|
46
|
+
{truncateText(card.action.buttonText, WHATSAPP_MAX_BUTTON_CHARS)}
|
|
47
|
+
</Button>
|
|
48
|
+
</Element>
|
|
49
|
+
))}
|
|
50
|
+
</Carousel>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
@@ -61,6 +61,9 @@ const serialize = (message: string) => {
|
|
|
61
61
|
return { text: message }
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
/*
|
|
65
|
+
Reference: https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/media-card-carousel-templates
|
|
66
|
+
*/
|
|
64
67
|
export const WhatsappMediaCarousel = (props: WhatsappMediaCarouselProps) => {
|
|
65
68
|
const renderBrowser = () => {
|
|
66
69
|
// Return a dummy message for browser
|