@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.
Files changed (30) hide show
  1. package/lib/cjs/components/index-types.d.ts +1 -0
  2. package/lib/cjs/components/index.d.ts +1 -0
  3. package/lib/cjs/components/index.js +3 -1
  4. package/lib/cjs/components/index.js.map +1 -1
  5. package/lib/cjs/components/multichannel/whatsapp/constants.d.ts +1 -0
  6. package/lib/cjs/components/multichannel/whatsapp/constants.js +2 -1
  7. package/lib/cjs/components/multichannel/whatsapp/constants.js.map +1 -1
  8. package/lib/cjs/components/whatsapp-interactive-media-carousel.d.ts +15 -0
  9. package/lib/cjs/components/whatsapp-interactive-media-carousel.js +19 -0
  10. package/lib/cjs/components/whatsapp-interactive-media-carousel.js.map +1 -0
  11. package/lib/cjs/components/whatsapp-media-carousel.js +3 -0
  12. package/lib/cjs/components/whatsapp-media-carousel.js.map +1 -1
  13. package/lib/esm/components/index-types.d.ts +1 -0
  14. package/lib/esm/components/index.d.ts +1 -0
  15. package/lib/esm/components/index.js +1 -0
  16. package/lib/esm/components/index.js.map +1 -1
  17. package/lib/esm/components/multichannel/whatsapp/constants.d.ts +1 -0
  18. package/lib/esm/components/multichannel/whatsapp/constants.js +1 -0
  19. package/lib/esm/components/multichannel/whatsapp/constants.js.map +1 -1
  20. package/lib/esm/components/whatsapp-interactive-media-carousel.d.ts +15 -0
  21. package/lib/esm/components/whatsapp-interactive-media-carousel.js +15 -0
  22. package/lib/esm/components/whatsapp-interactive-media-carousel.js.map +1 -0
  23. package/lib/esm/components/whatsapp-media-carousel.js +3 -0
  24. package/lib/esm/components/whatsapp-media-carousel.js.map +1 -1
  25. package/package.json +3 -3
  26. package/src/components/index-types.ts +1 -0
  27. package/src/components/index.ts +4 -0
  28. package/src/components/multichannel/whatsapp/constants.ts +1 -0
  29. package/src/components/whatsapp-interactive-media-carousel.tsx +52 -0
  30. package/src/components/whatsapp-media-carousel.tsx +3 -0
@@ -20,6 +20,7 @@ export interface TextProps extends MessageProps {
20
20
  }
21
21
  export interface CarouselProps extends MessageProps {
22
22
  children: React.ReactNode[];
23
+ text?: string;
23
24
  }
24
25
  export interface Webview {
25
26
  name: string;
@@ -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;AAEM,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"}
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"}
@@ -20,6 +20,7 @@ export interface TextProps extends MessageProps {
20
20
  }
21
21
  export interface CarouselProps extends MessageProps {
22
22
  children: React.ReactNode[];
23
+ text?: string;
23
24
  }
24
25
  export interface Webview {
25
26
  name: string;
@@ -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": "^0.41.0",
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
+ }
@@ -35,6 +35,7 @@ export interface TextProps extends MessageProps {
35
35
 
36
36
  export interface CarouselProps extends MessageProps {
37
37
  children: React.ReactNode[]
38
+ text?: string // Only for Whatsapp Interactive Media Carousel
38
39
  }
39
40
 
40
41
  export interface Webview {
@@ -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