@botonic/react 0.22.0-alpha.2 → 0.22.0-beta.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 (70) hide show
  1. package/lib/cjs/components/index-types.d.ts +174 -0
  2. package/lib/cjs/components/index-types.js +17 -0
  3. package/lib/cjs/components/index-types.js.map +1 -0
  4. package/lib/cjs/components/index.d.ts +22 -20
  5. package/lib/cjs/components/index.js +4 -1
  6. package/lib/cjs/components/index.js.map +1 -1
  7. package/lib/cjs/components/multichannel/index-types.d.ts +45 -0
  8. package/lib/cjs/components/multichannel/index-types.js +3 -0
  9. package/lib/cjs/components/multichannel/index-types.js.map +1 -0
  10. package/lib/cjs/components/multichannel/index.d.ts +8 -3
  11. package/lib/cjs/components/multichannel/index.js +2 -0
  12. package/lib/cjs/components/multichannel/index.js.map +1 -1
  13. package/lib/cjs/contexts.d.ts +2 -3
  14. package/lib/cjs/contexts.js +3 -4
  15. package/lib/cjs/contexts.js.map +1 -1
  16. package/lib/cjs/index-types.d.ts +96 -0
  17. package/lib/cjs/index-types.js +12 -0
  18. package/lib/cjs/index-types.js.map +1 -0
  19. package/lib/cjs/index.d.ts +7 -10
  20. package/lib/cjs/index.js +6 -10
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/cjs/webchat/index-types.d.ts +55 -0
  23. package/lib/cjs/webchat/index-types.js +3 -0
  24. package/lib/cjs/webchat/index-types.js.map +1 -0
  25. package/lib/cjs/webchat/index.d.ts +4 -6
  26. package/lib/cjs/webchat/index.js +3 -3
  27. package/lib/cjs/webchat/index.js.map +1 -1
  28. package/lib/esm/components/carousel.d.ts +2 -1
  29. package/lib/esm/components/index-types.d.ts +174 -0
  30. package/lib/esm/components/index-types.js +16 -0
  31. package/lib/esm/components/index-types.js.map +1 -0
  32. package/lib/esm/components/index.d.ts +22 -19
  33. package/lib/esm/components/index.js +2 -0
  34. package/lib/esm/components/index.js.map +1 -1
  35. package/lib/esm/components/multichannel/index-types.d.ts +45 -0
  36. package/lib/esm/components/multichannel/index-types.js +2 -0
  37. package/lib/esm/components/multichannel/index-types.js.map +1 -0
  38. package/lib/esm/components/multichannel/index.d.ts +8 -3
  39. package/lib/esm/components/multichannel/index.js +1 -0
  40. package/lib/esm/components/multichannel/index.js.map +1 -1
  41. package/lib/esm/contexts.d.ts +2 -3
  42. package/lib/esm/contexts.js +3 -3
  43. package/lib/esm/contexts.js.map +1 -1
  44. package/lib/esm/index-types.d.ts +96 -0
  45. package/lib/esm/index-types.js +9 -0
  46. package/lib/esm/index-types.js.map +1 -0
  47. package/lib/esm/index.d.ts +7 -9
  48. package/lib/esm/index.js +5 -4
  49. package/lib/esm/index.js.map +1 -1
  50. package/lib/esm/message-utils.d.ts +2 -1
  51. package/lib/esm/node-app.d.ts +3 -3
  52. package/lib/esm/react-bot.d.ts +2 -1
  53. package/lib/esm/webchat/index-types.d.ts +55 -0
  54. package/lib/esm/webchat/index-types.js +2 -0
  55. package/lib/esm/webchat/index-types.js.map +1 -0
  56. package/lib/esm/webchat/index.d.ts +4 -6
  57. package/lib/esm/webchat/index.js +2 -3
  58. package/lib/esm/webchat/index.js.map +1 -1
  59. package/lib/esm/webchat-app.d.ts +4 -3
  60. package/package.json +1 -1
  61. package/src/components/{index.d.ts → index-types.ts} +22 -43
  62. package/src/components/{index.js → index.ts} +2 -0
  63. package/src/components/multichannel/{index.d.ts → index-types.ts} +1 -10
  64. package/src/components/multichannel/{index.js → index.ts} +2 -0
  65. package/src/contexts.jsx +3 -3
  66. package/src/index-types.ts +190 -0
  67. package/src/{index.js → index.ts} +5 -4
  68. package/src/webchat/{index.d.ts → index-types.ts} +5 -10
  69. package/src/webchat/{index.js → index.ts} +3 -3
  70. package/src/index.d.ts +0 -238
@@ -0,0 +1,174 @@
1
+ import React from 'react';
2
+ import { CoverComponentProps } from '../webchat/index-types';
3
+ export type MessageType = 'audio' | 'buttonmessage' | 'carousel' | 'custom' | 'document' | 'image' | 'location' | 'text' | 'video';
4
+ export interface MessageProps {
5
+ blob?: boolean;
6
+ children: React.ReactNode;
7
+ delay?: number;
8
+ enabletimestamps?: boolean;
9
+ from?: 'user' | 'bot';
10
+ json?: Record<string, unknown>;
11
+ style?: Record<string, unknown>;
12
+ type?: MessageType;
13
+ typing?: number;
14
+ }
15
+ export interface TextProps extends MessageProps {
16
+ markdown?: boolean;
17
+ }
18
+ export interface Webview {
19
+ name: string;
20
+ }
21
+ export interface ButtonProps {
22
+ params?: any;
23
+ path?: string;
24
+ payload?: string;
25
+ target?: string;
26
+ url?: string;
27
+ webview?: Webview;
28
+ onClick?: () => void;
29
+ autodisable?: boolean;
30
+ disabled?: boolean;
31
+ disabledstyle?: boolean;
32
+ }
33
+ export interface ReplyProps {
34
+ path?: string;
35
+ payload?: string;
36
+ children: string;
37
+ }
38
+ export interface PicProps {
39
+ src: string;
40
+ }
41
+ export type ImageProps = PicProps;
42
+ export interface TitleProps {
43
+ children: React.ReactNode;
44
+ style: string;
45
+ }
46
+ export type SubtitleProps = TitleProps;
47
+ export type CustomProp = {
48
+ custom?: React.ComponentType;
49
+ };
50
+ export type EnableProp = {
51
+ enable?: boolean;
52
+ };
53
+ export type ImageProp = {
54
+ image?: string;
55
+ };
56
+ export type PersistentMenuCloseOption = {
57
+ closeLabel: string;
58
+ };
59
+ export type PersistentMenuOption = {
60
+ label: string;
61
+ } & ButtonProps;
62
+ export type StyleProp = {
63
+ style?: any;
64
+ };
65
+ export type PersistentMenuTheme = (PersistentMenuCloseOption | PersistentMenuOption)[];
66
+ export interface PersistentMenuProps {
67
+ onClick: () => void;
68
+ options: any;
69
+ }
70
+ export type BlockInputOption = {
71
+ preprocess?: (message: string) => string;
72
+ match: RegExp[];
73
+ message: string;
74
+ };
75
+ export interface BlobProps {
76
+ blobTick?: boolean;
77
+ blobTickStyle?: any;
78
+ blobWidth?: string;
79
+ imageStyle?: any;
80
+ }
81
+ export interface ScrollbarProps {
82
+ autoHide?: boolean;
83
+ thumb?: {
84
+ bgcolor?: string;
85
+ border?: string;
86
+ color?: string;
87
+ opacity?: string;
88
+ };
89
+ track?: {
90
+ bgcolor?: string;
91
+ border?: string;
92
+ color?: string;
93
+ };
94
+ }
95
+ export interface ThemeProps extends StyleProp {
96
+ mobileBreakpoint?: number;
97
+ mobileStyle?: any;
98
+ webview?: StyleProp & {
99
+ header?: StyleProp;
100
+ };
101
+ animations?: EnableProp;
102
+ intro?: StyleProp & ImageProp & CustomProp;
103
+ brand?: {
104
+ color?: string;
105
+ } & ImageProp;
106
+ header?: {
107
+ title?: string;
108
+ subtitle?: string;
109
+ } & ImageProp & StyleProp & CustomProp;
110
+ message?: {
111
+ bot?: BlobProps & ImageProp & StyleProp;
112
+ user?: BlobProps & StyleProp;
113
+ customTypes?: React.ComponentType[];
114
+ } & StyleProp & {
115
+ timestamps?: {
116
+ enable?: boolean;
117
+ format(): string;
118
+ } & StyleProp;
119
+ };
120
+ button?: {
121
+ autodisable?: boolean;
122
+ disabledstyle?: any;
123
+ hoverBackground?: string;
124
+ hoverTextColor?: string;
125
+ messageType?: 'text' | 'payload';
126
+ } & StyleProp & CustomProp;
127
+ replies?: {
128
+ align?: 'left' | 'center' | 'right';
129
+ wrap?: 'wrap' | 'nowrap';
130
+ };
131
+ carousel?: {
132
+ arrow?: {
133
+ left: CustomProp;
134
+ right: CustomProp;
135
+ };
136
+ enableArrows?: boolean;
137
+ };
138
+ reply?: StyleProp & CustomProp;
139
+ triggerButton?: ImageProp & StyleProp & CustomProp;
140
+ markdownStyle?: string;
141
+ scrollbar?: ScrollbarProps & EnableProp;
142
+ userInput?: {
143
+ attachments?: EnableProp & CustomProp;
144
+ blockInputs?: BlockInputOption[];
145
+ box?: {
146
+ placeholder: string;
147
+ } & StyleProp;
148
+ emojiPicker?: EnableProp & CustomProp;
149
+ menu?: {
150
+ darkBackground?: boolean;
151
+ } & {
152
+ custom?: React.ComponentType<PersistentMenuProps>;
153
+ };
154
+ menuButton?: CustomProp;
155
+ persistentMenu?: PersistentMenuTheme;
156
+ sendButton?: EnableProp & CustomProp;
157
+ } & EnableProp & StyleProp;
158
+ }
159
+ export interface CoverComponentOptions {
160
+ component: React.ComponentType<CoverComponentProps>;
161
+ props?: any;
162
+ }
163
+ export interface WebchatSettingsProps {
164
+ blockInputs?: BlockInputOption[];
165
+ enableAnimations?: boolean;
166
+ enableAttachments?: boolean;
167
+ enableEmojiPicker?: boolean;
168
+ enableUserInput?: boolean;
169
+ persistentMenu?: PersistentMenuTheme;
170
+ theme?: ThemeProps;
171
+ }
172
+ export type WrappedComponent<Props> = React.FunctionComponent<Props> & {
173
+ customTypeName: string;
174
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // TODO: Reuse types to be typed in respective functions
4
+ // export class ErrorBoundary<Props> extends React.Component<Props> {
5
+ // componentDidCatch(error: Error, errorInfo: ErrorInfo): void
6
+ // }
7
+ // export function createErrorBoundary<Props>(_?: {
8
+ // errorComponent: React.ComponentType
9
+ // }): ErrorBoundary<Props>
10
+ // export function customMessage<Props>(_: {
11
+ // name: string
12
+ // component: React.ComponentType<Props>
13
+ // defaultProps?: Record<string, unknown>
14
+ // errorBoundary?: ErrorBoundary<Props>
15
+ // }): WrappedComponent<Props>
16
+ // export function getDisplayName(component: React.ComponentType): string
17
+ //# sourceMappingURL=index-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-types.js","sourceRoot":"src/","sources":["components/index-types.ts"],"names":[],"mappings":";;AA8LA,wDAAwD;AACxD,qEAAqE;AACrE,gEAAgE;AAChE,IAAI;AAEJ,mDAAmD;AACnD,wCAAwC;AACxC,2BAA2B;AAE3B,4CAA4C;AAC5C,iBAAiB;AACjB,0CAA0C;AAC1C,2CAA2C;AAC3C,yCAAyC;AACzC,8BAA8B;AAE9B,yEAAyE"}
@@ -1,20 +1,22 @@
1
- export { Audio } from "./audio";
2
- export { Button } from "./button";
3
- export { Carousel } from "./carousel";
4
- export { customMessage } from "./custom-message";
5
- export { Document } from "./document";
6
- export { Element } from "./element";
7
- export { Image } from "./image";
8
- export { Location } from "./location";
9
- export { MessageTemplate } from "./message-template";
10
- export * from "./multichannel";
11
- export { Pic } from "./pic";
12
- export { Raw } from "./raw";
13
- export { Reply } from "./reply";
14
- export { ShareButton } from "./share-button";
15
- export { Subtitle } from "./subtitle";
16
- export { Text } from "./text";
17
- export { Title } from "./title";
18
- export { Video } from "./video";
19
- export { WebchatSettings } from "./webchat-settings";
20
- export { WhatsappTemplate } from "./whatsapp-template";
1
+ export { Audio } from './audio';
2
+ export { Button } from './button';
3
+ export { Carousel } from './carousel';
4
+ export { customMessage } from './custom-message';
5
+ export { Document } from './document';
6
+ export { Element } from './element';
7
+ export { Image } from './image';
8
+ export * from './index-types';
9
+ export { Location } from './location';
10
+ export { Message } from './message';
11
+ export { MessageTemplate } from './message-template';
12
+ export * from './multichannel';
13
+ export { Pic } from './pic';
14
+ export { Raw } from './raw';
15
+ export { Reply } from './reply';
16
+ export { ShareButton } from './share-button';
17
+ export { Subtitle } from './subtitle';
18
+ export { Text } from './text';
19
+ export { Title } from './title';
20
+ export { Video } from './video';
21
+ export { WebchatSettings } from './webchat-settings';
22
+ export { WhatsappTemplate } from './whatsapp-template';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WhatsappTemplate = exports.WebchatSettings = exports.Video = exports.Title = exports.Text = exports.Subtitle = exports.ShareButton = exports.Reply = exports.Raw = exports.Pic = exports.MessageTemplate = exports.Location = exports.Image = exports.Element = exports.Document = exports.customMessage = exports.Carousel = exports.Button = exports.Audio = void 0;
3
+ exports.WhatsappTemplate = exports.WebchatSettings = 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.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; } });
@@ -16,8 +16,11 @@ var element_1 = require("./element");
16
16
  Object.defineProperty(exports, "Element", { enumerable: true, get: function () { return element_1.Element; } });
17
17
  var image_1 = require("./image");
18
18
  Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return image_1.Image; } });
19
+ tslib_1.__exportStar(require("./index-types"), exports);
19
20
  var location_1 = require("./location");
20
21
  Object.defineProperty(exports, "Location", { enumerable: true, get: function () { return location_1.Location; } });
22
+ var message_1 = require("./message");
23
+ Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return message_1.Message; } });
21
24
  var message_template_1 = require("./message-template");
22
25
  Object.defineProperty(exports, "MessageTemplate", { enumerable: true, get: function () { return message_template_1.MessageTemplate; } });
23
26
  tslib_1.__exportStar(require("./multichannel"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["components/index.js"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,mCAAiC;AAAxB,gGAAA,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,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,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,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["components/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,mCAAiC;AAAxB,gGAAA,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,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,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,45 @@
1
+ export type IndexMode = 'number' | 'letter' | undefined;
2
+ export interface MultichannelViewOptions {
3
+ boldIndex?: boolean;
4
+ indexSeparator?: string;
5
+ }
6
+ export interface MultichannelContextType extends MultichannelViewOptions {
7
+ currentIndex: number | string;
8
+ /** @see same field at MultichannelProps */
9
+ messageSeparator?: string;
10
+ }
11
+ export interface MultichannelTextProps extends MultichannelViewOptions {
12
+ index?: string;
13
+ indexMode?: IndexMode;
14
+ /** Defaults to no separator between lines*/
15
+ newline?: string;
16
+ buttonsAsText?: boolean;
17
+ buttonsTextSeparator?: string;
18
+ }
19
+ export interface MultichannelCarouselProps extends MultichannelViewOptions {
20
+ enableURL?: boolean;
21
+ indexMode?: IndexMode;
22
+ showTitle?: boolean;
23
+ showSubtitle?: boolean;
24
+ buttonsAsText?: boolean;
25
+ }
26
+ export interface MultichannelButtonProps {
27
+ newline?: string;
28
+ path?: string;
29
+ payload?: string;
30
+ url?: string;
31
+ webview?: string;
32
+ asText?: boolean;
33
+ }
34
+ export interface MultichannelProps extends MultichannelViewOptions {
35
+ firstIndex?: number | string;
36
+ carousel?: MultichannelCarouselProps;
37
+ text?: MultichannelTextProps;
38
+ /**
39
+ * If undefined, each component will be served in a different botonic message
40
+ * '' will concatenate in the same line
41
+ * '\n' will split in different lines
42
+ * '\n\n' will separate with an empty line
43
+ **/
44
+ messageSeparator?: string;
45
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-types.js","sourceRoot":"src/","sources":["components/multichannel/index-types.ts"],"names":[],"mappings":""}
@@ -1,6 +1,11 @@
1
1
  import { Multichannel } from './multichannel';
2
- import { MultichannelText } from './multichannel-text';
3
2
  import { MultichannelButton } from './multichannel-button';
4
- import { MultichannelReply } from './multichannel-reply';
5
3
  import { MultichannelCarousel } from './multichannel-carousel';
6
- export { Multichannel, MultichannelText, MultichannelButton, MultichannelReply, MultichannelCarousel };
4
+ import { MultichannelReply } from './multichannel-reply';
5
+ import { MultichannelText } from './multichannel-text';
6
+ export { Multichannel };
7
+ export { MultichannelText };
8
+ export { MultichannelButton };
9
+ export { MultichannelReply };
10
+ export { MultichannelCarousel };
11
+ export * from './index-types';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MultichannelCarousel = exports.MultichannelReply = exports.MultichannelButton = exports.MultichannelText = exports.Multichannel = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const multichannel_1 = require("./multichannel");
5
6
  Object.defineProperty(exports, "Multichannel", { enumerable: true, get: function () { return multichannel_1.Multichannel; } });
6
7
  const multichannel_button_1 = require("./multichannel-button");
@@ -11,4 +12,5 @@ const multichannel_reply_1 = require("./multichannel-reply");
11
12
  Object.defineProperty(exports, "MultichannelReply", { enumerable: true, get: function () { return multichannel_reply_1.MultichannelReply; } });
12
13
  const multichannel_text_1 = require("./multichannel-text");
13
14
  Object.defineProperty(exports, "MultichannelText", { enumerable: true, get: function () { return multichannel_text_1.MultichannelText; } });
15
+ tslib_1.__exportStar(require("./index-types"), exports);
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["components/multichannel/index.js"],"names":[],"mappings":";;;AAAA,iDAA6C;AAMpC,6FANA,2BAAY,OAMA;AALrB,+DAA0D;AAOjD,mGAPA,wCAAkB,OAOA;AAN3B,mEAA8D;AAQrD,qGARA,4CAAoB,OAQA;AAP7B,6DAAwD;AAM/C,kGANA,sCAAiB,OAMA;AAL1B,2DAAsD;AAG7C,iGAHA,oCAAgB,OAGA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["components/multichannel/index.ts"],"names":[],"mappings":";;;;AAAA,iDAA6C;AAMpC,6FANA,2BAAY,OAMA;AALrB,+DAA0D;AAOjD,mGAPA,wCAAkB,OAOA;AAN3B,mEAA8D;AAQrD,qGARA,4CAAoB,OAQA;AAP7B,6DAAwD;AAM/C,kGANA,sCAAiB,OAMA;AAL1B,2DAAsD;AAG7C,iGAHA,oCAAgB,OAGA;AAKzB,wDAA6B"}
@@ -1,4 +1,4 @@
1
- export const RequestContext: React.Context<{
1
+ export const RequestContext: import("react").Context<{
2
2
  getString: () => "";
3
3
  setLocale: () => "";
4
4
  session: {};
@@ -7,7 +7,7 @@ export const RequestContext: React.Context<{
7
7
  defaultDelay: number;
8
8
  defaultTyping: number;
9
9
  }>;
10
- export const WebchatContext: React.Context<{
10
+ export const WebchatContext: import("react").Context<{
11
11
  sendText: (text: any) => void;
12
12
  sendAttachment: (attachment: any) => void;
13
13
  sendPayload: (payload: any) => void;
@@ -66,4 +66,3 @@ export const WebchatContext: React.Context<{
66
66
  updateWebchatDevSettings: (settings: any) => {};
67
67
  updateUser: (user: any) => void;
68
68
  }>;
69
- import React from 'react';
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebchatContext = exports.RequestContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
4
+ const react_1 = require("react");
6
5
  const hooks_1 = require("./webchat/hooks");
7
- exports.RequestContext = react_1.default.createContext({
6
+ exports.RequestContext = (0, react_1.createContext)({
8
7
  getString: () => '',
9
8
  setLocale: () => '',
10
9
  session: {},
@@ -13,7 +12,7 @@ exports.RequestContext = react_1.default.createContext({
13
12
  defaultDelay: 0,
14
13
  defaultTyping: 0,
15
14
  });
16
- exports.WebchatContext = react_1.default.createContext({
15
+ exports.WebchatContext = (0, react_1.createContext)({
17
16
  sendText: text => { },
18
17
  sendAttachment: attachment => { },
19
18
  sendPayload: payload => { },
@@ -1 +1 @@
1
- {"version":3,"file":"contexts.js","sourceRoot":"src/","sources":["contexts.jsx"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAEzB,2CAAqD;AAExC,QAAA,cAAc,GAAG,eAAK,CAAC,aAAa,CAAC;IAChD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;CACjB,CAAC,CAAA;AAEW,QAAA,cAAc,GAAG,eAAK,CAAC,aAAa,CAAC;IAChD,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAE,CAAC;IACpB,cAAc,EAAE,UAAU,CAAC,EAAE,GAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC1B,SAAS,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC,EAAE,GAAE,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC;IAC9B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;IACvB,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS;IACvC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,2BAAmB;IACjC,wBAAwB,EAAE,QAAQ,CAAC,EAAE;QACnC,OAAO,EAAE,CAAA;IACX,CAAC;IACD,UAAU,EAAE,IAAI,CAAC,EAAE,GAAE,CAAC;CACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"contexts.js","sourceRoot":"src/","sources":["contexts.jsx"],"names":[],"mappings":";;;AAAA,iCAAqC;AAErC,2CAAqD;AAExC,QAAA,cAAc,GAAG,IAAA,qBAAa,EAAC;IAC1C,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;CACjB,CAAC,CAAA;AAEW,QAAA,cAAc,GAAG,IAAA,qBAAa,EAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAE,CAAC;IACpB,cAAc,EAAE,UAAU,CAAC,EAAE,GAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC1B,SAAS,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC,EAAE,GAAE,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC,EAAE,GAAE,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC,EAAE,GAAE,CAAC;IAC9B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;IACvB,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS;IACvC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,2BAAmB;IACjC,wBAAwB,EAAE,QAAQ,CAAC,EAAE;QACnC,OAAO,EAAE,CAAA;IACX,CAAC;IACD,UAAU,EAAE,IAAI,CAAC,EAAE,GAAE,CAAC;CACvB,CAAC,CAAA"}
@@ -0,0 +1,96 @@
1
+ import * as core from '@botonic/core';
2
+ import React from 'react';
3
+ import { ButtonProps, ReplyProps, ThemeProps, WebchatSettingsProps, Webview } from './components/index-types';
4
+ import { WebchatState } from './webchat';
5
+ /**
6
+ * See @botonic/core's Response for the description of the Response's semantics*/
7
+ export interface BotResponse extends core.BotRequest {
8
+ response: [React.ReactNode];
9
+ }
10
+ export interface Route extends core.Route {
11
+ action?: React.ComponentType<any>;
12
+ retryAction?: React.ComponentType<any>;
13
+ }
14
+ export type Routes = core.Routes<Route>;
15
+ export interface ActionRequest {
16
+ defaultDelay: number;
17
+ defaultTyping: number;
18
+ input: core.Input;
19
+ lastRoutePath: string;
20
+ params: {
21
+ [key: string]: string;
22
+ };
23
+ plugins: {
24
+ [id: string]: core.Plugin;
25
+ };
26
+ session: core.Session;
27
+ }
28
+ export interface RequestContextInterface extends ActionRequest {
29
+ getString: (stringId: string) => string;
30
+ setLocale: (locale: string) => string;
31
+ }
32
+ export type RequestContext = React.Context<RequestContextInterface>;
33
+ export interface CustomMessageType {
34
+ customTypeName: string;
35
+ }
36
+ export interface WebchatAppArgs {
37
+ appId?: string;
38
+ visibility?: () => boolean;
39
+ }
40
+ export interface WebchatMessage {
41
+ ack: 0 | 1;
42
+ buttons: ButtonProps[];
43
+ data: any;
44
+ delay: number;
45
+ display: boolean;
46
+ from: 'user' | 'bot';
47
+ id: string;
48
+ markdown: boolean;
49
+ replies: ReplyProps[];
50
+ timestamp: string;
51
+ type: core.InputType;
52
+ typing: number;
53
+ }
54
+ export interface OnUserInputArgs {
55
+ input: core.Input;
56
+ lastRoutePath?: string;
57
+ session?: core.Session;
58
+ user: core.SessionUser;
59
+ }
60
+ export interface OnStateChangeArgs {
61
+ messagesJSON: WebchatMessage[];
62
+ user: core.SessionUser;
63
+ }
64
+ export interface MessageInfo {
65
+ data: any | 'typing_on';
66
+ id: string;
67
+ type: 'update_webchat_settings' | 'sender_action';
68
+ }
69
+ export interface Event {
70
+ action?: 'update_message_info';
71
+ isError?: boolean;
72
+ message?: MessageInfo;
73
+ }
74
+ export interface WebchatContextProps {
75
+ sendText: (text: string, payload?: string) => void;
76
+ sendAttachment: (attachment: File) => void;
77
+ sendPayload: (payload: string) => void;
78
+ sendInput: (input: core.Input) => void;
79
+ openWebview: (webviewComponent: Webview) => void;
80
+ addMessage: (message: WebchatMessage) => void;
81
+ updateMessage: (message: WebchatMessage) => void;
82
+ updateReplies: (replies: boolean) => void;
83
+ updateLatestInput: (input: core.Input) => void;
84
+ closeWebview: () => void;
85
+ toggleWebchat: () => void;
86
+ getThemeProperty: (property: string, defaultValue?: string) => any;
87
+ resolveCase: () => void;
88
+ theme: ThemeProps;
89
+ webchatState: WebchatState;
90
+ updateWebchatDevSettings: (settings: WebchatSettingsProps) => void;
91
+ updateUser: (user: Partial<core.SessionUser>) => void;
92
+ }
93
+ export type WebchatContext = React.Context<WebchatContextProps>;
94
+ export * from './components';
95
+ export * from './util';
96
+ export * from './webchat';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // export class DevApp extends WebchatApp {
5
+ // constructor(args: WebchatAppArgs)
6
+ // onUserInput(args: OnUserInputArgs): Promise<void>
7
+ // render(dest: HTMLElement, optionsAtRuntime: WebchatAppArgs): void
8
+ // }
9
+ tslib_1.__exportStar(require("./components"), exports);
10
+ tslib_1.__exportStar(require("./util"), exports);
11
+ tslib_1.__exportStar(require("./webchat"), exports);
12
+ //# sourceMappingURL=index-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-types.js","sourceRoot":"src/","sources":["index-types.ts"],"names":[],"mappings":";;;AAqLA,2CAA2C;AAC3C,sCAAsC;AACtC,sDAAsD;AACtD,sEAAsE;AACtE,IAAI;AAEJ,uDAA4B;AAC5B,iDAAsB;AACtB,oDAAyB"}
@@ -1,10 +1,7 @@
1
- export * from "./components";
2
- export { DevApp } from "./dev-app";
3
- export { NodeApp } from "./node-app";
4
- export { staticAsset } from "./util/environment";
5
- export { getBotonicApp } from "./webchat/index.js";
6
- export { WebchatApp } from "./webchat-app";
7
- export { WebviewApp } from "./webview-app";
8
- export { BotonicInputTester, BotonicOutputTester } from "./botonic-tester";
9
- export { RequestContext, WebchatContext } from "./contexts";
10
- export { msgsToBotonic, msgToBotonic } from "./msg-to-botonic";
1
+ export { BotonicInputTester, BotonicOutputTester } from './botonic-tester';
2
+ export { DevApp } from './dev-app';
3
+ export * from './index-types';
4
+ export { msgsToBotonic, msgToBotonic } from './msg-to-botonic';
5
+ export { NodeApp } from './node-app';
6
+ export { WebchatApp } from './webchat-app';
7
+ export { WebviewApp } from './webview-app';
package/lib/cjs/index.js CHANGED
@@ -1,26 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebviewApp = exports.WebchatApp = exports.Webchat = exports.getBotonicApp = exports.staticAsset = exports.NodeApp = exports.msgToBotonic = exports.msgsToBotonic = exports.DevApp = exports.WebchatContext = exports.RequestContext = exports.BotonicOutputTester = exports.BotonicInputTester = void 0;
3
+ exports.WebviewApp = exports.WebchatApp = exports.NodeApp = exports.msgToBotonic = exports.msgsToBotonic = exports.DevApp = exports.BotonicOutputTester = exports.BotonicInputTester = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var botonic_tester_1 = require("./botonic-tester");
6
6
  Object.defineProperty(exports, "BotonicInputTester", { enumerable: true, get: function () { return botonic_tester_1.BotonicInputTester; } });
7
7
  Object.defineProperty(exports, "BotonicOutputTester", { enumerable: true, get: function () { return botonic_tester_1.BotonicOutputTester; } });
8
- tslib_1.__exportStar(require("./components"), exports);
9
- var contexts_1 = require("./contexts");
10
- Object.defineProperty(exports, "RequestContext", { enumerable: true, get: function () { return contexts_1.RequestContext; } });
11
- Object.defineProperty(exports, "WebchatContext", { enumerable: true, get: function () { return contexts_1.WebchatContext; } });
8
+ // export * from './components'
9
+ // export { RequestContext, WebchatContext } from './contexts'
12
10
  var dev_app_1 = require("./dev-app");
13
11
  Object.defineProperty(exports, "DevApp", { enumerable: true, get: function () { return dev_app_1.DevApp; } });
12
+ tslib_1.__exportStar(require("./index-types"), exports);
14
13
  var msg_to_botonic_1 = require("./msg-to-botonic");
15
14
  Object.defineProperty(exports, "msgsToBotonic", { enumerable: true, get: function () { return msg_to_botonic_1.msgsToBotonic; } });
16
15
  Object.defineProperty(exports, "msgToBotonic", { enumerable: true, get: function () { return msg_to_botonic_1.msgToBotonic; } });
17
16
  var node_app_1 = require("./node-app");
18
17
  Object.defineProperty(exports, "NodeApp", { enumerable: true, get: function () { return node_app_1.NodeApp; } });
19
- var environment_1 = require("./util/environment");
20
- Object.defineProperty(exports, "staticAsset", { enumerable: true, get: function () { return environment_1.staticAsset; } });
21
- var index_js_1 = require("./webchat/index.js");
22
- Object.defineProperty(exports, "getBotonicApp", { enumerable: true, get: function () { return index_js_1.getBotonicApp; } });
23
- Object.defineProperty(exports, "Webchat", { enumerable: true, get: function () { return index_js_1.Webchat; } });
18
+ // export { staticAsset } from './util/environment'
19
+ // export { getBotonicApp, Webchat } from './webchat/index'
24
20
  var webchat_app_1 = require("./webchat-app");
25
21
  Object.defineProperty(exports, "WebchatApp", { enumerable: true, get: function () { return webchat_app_1.WebchatApp; } });
26
22
  var webview_app_1 = require("./webview-app");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.js"],"names":[],"mappings":";;;;AAAA,mDAA0E;AAAjE,oHAAA,kBAAkB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAChD,uDAA4B;AAC5B,uCAA2D;AAAlD,0GAAA,cAAc,OAAA;AAAE,0GAAA,cAAc,OAAA;AACvC,qCAAkC;AAAzB,iGAAA,MAAM,OAAA;AACf,mDAA8D;AAArD,+GAAA,aAAa,OAAA;AAAE,8GAAA,YAAY,OAAA;AACpC,uCAAoC;AAA3B,mGAAA,OAAO,OAAA;AAChB,kDAAgD;AAAvC,0GAAA,WAAW,OAAA;AACpB,+CAA2D;AAAlD,yGAAA,aAAa,OAAA;AAAE,mGAAA,OAAO,OAAA;AAC/B,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,6CAA0C;AAAjC,yGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":";;;;AAAA,mDAA0E;AAAjE,oHAAA,kBAAkB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAChD,+BAA+B;AAC/B,8DAA8D;AAC9D,qCAAkC;AAAzB,iGAAA,MAAM,OAAA;AACf,wDAA6B;AAC7B,mDAA8D;AAArD,+GAAA,aAAa,OAAA;AAAE,8GAAA,YAAY,OAAA;AACpC,uCAAoC;AAA3B,mGAAA,OAAO,OAAA;AAChB,mDAAmD;AACnD,2DAA2D;AAC3D,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,6CAA0C;AAAjC,yGAAA,UAAU,OAAA"}
@@ -0,0 +1,55 @@
1
+ import * as core from '@botonic/core';
2
+ import { RefObject } from 'react';
3
+ import { Webview } from '../components/index-types';
4
+ export interface WebchatStateTheme {
5
+ headerTitle: string;
6
+ brandColor: string;
7
+ brandImage: string;
8
+ triggerButtonImage: undefined;
9
+ textPlaceholder: string;
10
+ style: {
11
+ fontFamily: string;
12
+ };
13
+ }
14
+ export interface WebchatState {
15
+ width: number;
16
+ height: number;
17
+ messagesJSON: any[];
18
+ messagesComponents: any[];
19
+ replies: any[];
20
+ latestInput: Partial<core.Input>;
21
+ typing: boolean;
22
+ webview: Webview | null;
23
+ webviewParams: null;
24
+ session: Partial<core.Session>;
25
+ lastRoutePath: string | null;
26
+ handoff: boolean;
27
+ theme: WebchatStateTheme;
28
+ themeUpdates: Partial<WebchatStateTheme>;
29
+ error: {
30
+ message?: string;
31
+ };
32
+ devSettings: {
33
+ keepSessionOnReload?: boolean;
34
+ showSessionView?: boolean;
35
+ };
36
+ isWebchatOpen: boolean;
37
+ isEmojiPickerOpen: boolean;
38
+ isPersistentMenuOpen: boolean;
39
+ isCoverComponentOpen: boolean;
40
+ lastMessageUpdate: string;
41
+ currentAttachment: File | undefined;
42
+ }
43
+ export interface WebchatProps {
44
+ ref: RefObject<any>;
45
+ onConnectionRegained?: () => Promise<void>;
46
+ }
47
+ export interface WebchatDevProps extends WebchatProps {
48
+ initialDevSettings?: {
49
+ keepSessionOnReload?: boolean;
50
+ showSessionView?: boolean;
51
+ };
52
+ }
53
+ export interface CoverComponentProps {
54
+ closeComponent: () => void;
55
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-types.js","sourceRoot":"src/","sources":["webchat/index-types.ts"],"names":[],"mappings":""}