@botonic/react 0.29.0 → 0.29.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 (100) hide show
  1. package/lib/cjs/contexts.js +14 -8
  2. package/lib/cjs/contexts.js.map +1 -1
  3. package/lib/cjs/index-types.d.ts +12 -6
  4. package/lib/cjs/index-types.js +6 -1
  5. package/lib/cjs/index-types.js.map +1 -1
  6. package/lib/cjs/webchat/components/{persistent-menu.d.ts → opened-persistent-menu.d.ts} +0 -4
  7. package/lib/cjs/webchat/components/{persistent-menu.js → opened-persistent-menu.js} +2 -12
  8. package/lib/cjs/webchat/components/opened-persistent-menu.js.map +1 -0
  9. package/lib/cjs/webchat/webchat-input-panel/attachment.d.ts +7 -0
  10. package/lib/cjs/webchat/{components → webchat-input-panel}/attachment.js +6 -4
  11. package/lib/cjs/webchat/webchat-input-panel/attachment.js.map +1 -0
  12. package/lib/cjs/webchat/webchat-input-panel/emoji-picker.d.ts +6 -0
  13. package/lib/cjs/webchat/{components → webchat-input-panel}/emoji-picker.js +5 -20
  14. package/lib/cjs/webchat/webchat-input-panel/emoji-picker.js.map +1 -0
  15. package/lib/cjs/webchat/webchat-input-panel/index.d.ts +13 -0
  16. package/lib/cjs/webchat/webchat-input-panel/index.js +57 -0
  17. package/lib/cjs/webchat/webchat-input-panel/index.js.map +1 -0
  18. package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.d.ts +6 -0
  19. package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.js +15 -0
  20. package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.js.map +1 -0
  21. package/lib/cjs/webchat/webchat-input-panel/persistent-menu.d.ts +6 -0
  22. package/lib/cjs/webchat/webchat-input-panel/persistent-menu.js +19 -0
  23. package/lib/cjs/webchat/webchat-input-panel/persistent-menu.js.map +1 -0
  24. package/lib/cjs/webchat/webchat-input-panel/send-button.d.ts +5 -0
  25. package/lib/cjs/webchat/{components → webchat-input-panel}/send-button.js +2 -2
  26. package/lib/cjs/webchat/webchat-input-panel/send-button.js.map +1 -0
  27. package/lib/cjs/webchat/webchat-input-panel/styles.d.ts +3 -0
  28. package/lib/cjs/webchat/webchat-input-panel/styles.js +30 -0
  29. package/lib/cjs/webchat/webchat-input-panel/styles.js.map +1 -0
  30. package/lib/cjs/webchat/webchat-input-panel/textarea.d.ts +12 -0
  31. package/lib/cjs/webchat/webchat-input-panel/textarea.js +57 -0
  32. package/lib/cjs/webchat/webchat-input-panel/textarea.js.map +1 -0
  33. package/lib/cjs/webchat/webchat.js +10 -95
  34. package/lib/cjs/webchat/webchat.js.map +1 -1
  35. package/lib/cjs/webchat-app.js +1 -1
  36. package/lib/cjs/webchat-app.js.map +1 -1
  37. package/lib/esm/contexts.js +14 -8
  38. package/lib/esm/contexts.js.map +1 -1
  39. package/lib/esm/index-types.d.ts +12 -6
  40. package/lib/esm/index-types.js +5 -0
  41. package/lib/esm/index-types.js.map +1 -1
  42. package/lib/esm/webchat/components/{persistent-menu.d.ts → opened-persistent-menu.d.ts} +0 -4
  43. package/lib/esm/webchat/components/{persistent-menu.js → opened-persistent-menu.js} +2 -11
  44. package/lib/esm/webchat/components/opened-persistent-menu.js.map +1 -0
  45. package/lib/esm/webchat/webchat-input-panel/attachment.d.ts +7 -0
  46. package/lib/esm/webchat/{components → webchat-input-panel}/attachment.js +6 -4
  47. package/lib/esm/webchat/webchat-input-panel/attachment.js.map +1 -0
  48. package/lib/esm/webchat/webchat-input-panel/emoji-picker.d.ts +6 -0
  49. package/lib/esm/webchat/{components → webchat-input-panel}/emoji-picker.js +4 -18
  50. package/lib/esm/webchat/webchat-input-panel/emoji-picker.js.map +1 -0
  51. package/lib/esm/webchat/webchat-input-panel/index.d.ts +13 -0
  52. package/lib/esm/webchat/webchat-input-panel/index.js +53 -0
  53. package/lib/esm/webchat/webchat-input-panel/index.js.map +1 -0
  54. package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.d.ts +6 -0
  55. package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.js +10 -0
  56. package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.js.map +1 -0
  57. package/lib/esm/webchat/webchat-input-panel/persistent-menu.d.ts +6 -0
  58. package/lib/esm/webchat/webchat-input-panel/persistent-menu.js +14 -0
  59. package/lib/esm/webchat/webchat-input-panel/persistent-menu.js.map +1 -0
  60. package/lib/esm/webchat/webchat-input-panel/send-button.d.ts +5 -0
  61. package/lib/esm/webchat/{components → webchat-input-panel}/send-button.js +2 -2
  62. package/lib/esm/webchat/webchat-input-panel/send-button.js.map +1 -0
  63. package/lib/esm/webchat/webchat-input-panel/styles.d.ts +3 -0
  64. package/lib/esm/webchat/webchat-input-panel/styles.js +26 -0
  65. package/lib/esm/webchat/webchat-input-panel/styles.js.map +1 -0
  66. package/lib/esm/webchat/webchat-input-panel/textarea.d.ts +12 -0
  67. package/lib/esm/webchat/webchat-input-panel/textarea.js +52 -0
  68. package/lib/esm/webchat/webchat-input-panel/textarea.js.map +1 -0
  69. package/lib/esm/webchat/webchat.js +10 -95
  70. package/lib/esm/webchat/webchat.js.map +1 -1
  71. package/lib/esm/webchat-app.js +2 -2
  72. package/lib/esm/webchat-app.js.map +1 -1
  73. package/package.json +2 -2
  74. package/src/contexts.tsx +10 -4
  75. package/src/index-types.ts +13 -6
  76. package/src/webchat/components/{persistent-menu.jsx → opened-persistent-menu.jsx} +0 -29
  77. package/src/webchat/{components/attachment.jsx → webchat-input-panel/attachment.tsx} +16 -4
  78. package/src/webchat/{components/emoji-picker.jsx → webchat-input-panel/emoji-picker.tsx} +13 -32
  79. package/src/webchat/webchat-input-panel/index.tsx +117 -0
  80. package/src/webchat/webchat-input-panel/opened-emoji-picker.tsx +33 -0
  81. package/src/webchat/webchat-input-panel/persistent-menu.tsx +41 -0
  82. package/src/webchat/{components/send-button.jsx → webchat-input-panel/send-button.tsx} +6 -2
  83. package/src/webchat/webchat-input-panel/styles.ts +29 -0
  84. package/src/webchat/webchat-input-panel/textarea.tsx +110 -0
  85. package/src/webchat/webchat.jsx +19 -180
  86. package/src/webchat-app.jsx +2 -2
  87. package/lib/cjs/webchat/components/attachment.d.ts +0 -5
  88. package/lib/cjs/webchat/components/attachment.js.map +0 -1
  89. package/lib/cjs/webchat/components/emoji-picker.d.ts +0 -5
  90. package/lib/cjs/webchat/components/emoji-picker.js.map +0 -1
  91. package/lib/cjs/webchat/components/persistent-menu.js.map +0 -1
  92. package/lib/cjs/webchat/components/send-button.d.ts +0 -3
  93. package/lib/cjs/webchat/components/send-button.js.map +0 -1
  94. package/lib/esm/webchat/components/attachment.d.ts +0 -5
  95. package/lib/esm/webchat/components/attachment.js.map +0 -1
  96. package/lib/esm/webchat/components/emoji-picker.d.ts +0 -5
  97. package/lib/esm/webchat/components/emoji-picker.js.map +0 -1
  98. package/lib/esm/webchat/components/persistent-menu.js.map +0 -1
  99. package/lib/esm/webchat/components/send-button.d.ts +0 -3
  100. package/lib/esm/webchat/components/send-button.js.map +0 -1
@@ -41,22 +41,28 @@ exports.WebchatContext = (0, react_1.createContext)({
41
41
  setLastMessageVisible: () => {
42
42
  return;
43
43
  },
44
- sendAttachment: () => {
44
+ sendAttachment: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
45
  return;
46
- },
47
- sendInput: () => {
46
+ }),
47
+ sendInput: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
48
48
  return;
49
- },
50
- sendPayload: () => {
49
+ }),
50
+ sendPayload: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
51
51
  return;
52
- },
53
- sendText: () => {
52
+ }),
53
+ sendText: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
54
54
  return;
55
- },
55
+ }),
56
56
  theme: {},
57
57
  toggleWebchat: () => {
58
58
  return;
59
59
  },
60
+ toggleEmojiPicker: () => {
61
+ return;
62
+ },
63
+ togglePersistentMenu: () => {
64
+ return;
65
+ },
60
66
  updateLatestInput: () => {
61
67
  return;
62
68
  },
@@ -1 +1 @@
1
- {"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../src/contexts.tsx"],"names":[],"mappings":";;;;AACA,iCAAqC;AAGrC,2CAAqD;AAExC,QAAA,cAAc,GAAG,IAAA,qBAAa,EAKzC;IACA,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;IAC1B,OAAO,EAAE,EAAiB;IAC1B,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAe;IACtB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;CACjB,CAAC,CAAA;AAQW,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAK/C;IACD,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,MAAM,EAAE,EAAyB;IACjC,OAAO,EAAE,EAAiB;CAC3B,CAAC,CAAA;AAEW,QAAA,cAAc,GAAG,IAAA,qBAAa,EAAsB;IAC/D,UAAU,EAAE,GAAG,EAAE;QACf,OAAM;IACR,CAAC;IACD,YAAY,EAAE,GAAG,EAAE;QACjB,OAAM;IACR,CAAC;IACD,gBAAgB,EAAE,GAAG,EAAE;QACrB,OAAM;IACR,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,OAAM;IACR,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,OAAM;IACR,CAAC;IACD,mBAAmB,EAAE,GAAG,EAAE;QACxB,OAAM;IACR,CAAC;IACD,qBAAqB,EAAE,GAAG,EAAE;QAC1B,OAAM;IACR,CAAC;IACD,cAAc,EAAE,GAAG,EAAE;QACnB,OAAM;IACR,CAAC;IACD,SAAS,EAAE,GAAG,EAAE;QACd,OAAM;IACR,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,OAAM;IACR,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE;QACb,OAAM;IACR,CAAC;IACD,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,iBAAiB,EAAE,GAAG,EAAE;QACtB,OAAM;IACR,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,UAAU,EAAE,GAAG,EAAE;QACf,OAAM;IACR,CAAC;IACD,wBAAwB,EAAE,GAAG,EAAE;QAC7B,OAAM;IACR,CAAC;IACD,YAAY,EAAE,2BAAmB;IACjC,UAAU,EAAE,GAAS,EAAE;QACrB,OAAM;IACR,CAAC,CAAA;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../src/contexts.tsx"],"names":[],"mappings":";;;;AACA,iCAAqC;AAGrC,2CAAqD;AAExC,QAAA,cAAc,GAAG,IAAA,qBAAa,EAKzC;IACA,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;IAC1B,OAAO,EAAE,EAAiB;IAC1B,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAe;IACtB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;CACjB,CAAC,CAAA;AAQW,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAK/C;IACD,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,MAAM,EAAE,EAAyB;IACjC,OAAO,EAAE,EAAiB;CAC3B,CAAC,CAAA;AAEW,QAAA,cAAc,GAAG,IAAA,qBAAa,EAAsB;IAC/D,UAAU,EAAE,GAAG,EAAE;QACf,OAAM;IACR,CAAC;IACD,YAAY,EAAE,GAAG,EAAE;QACjB,OAAM;IACR,CAAC;IACD,gBAAgB,EAAE,GAAG,EAAE;QACrB,OAAM;IACR,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,OAAM;IACR,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,OAAM;IACR,CAAC;IACD,mBAAmB,EAAE,GAAG,EAAE;QACxB,OAAM;IACR,CAAC;IACD,qBAAqB,EAAE,GAAG,EAAE;QAC1B,OAAM;IACR,CAAC;IACD,cAAc,EAAE,GAAS,EAAE;QACzB,OAAM;IACR,CAAC,CAAA;IACD,SAAS,EAAE,GAAS,EAAE;QACpB,OAAM;IACR,CAAC,CAAA;IACD,WAAW,EAAE,GAAS,EAAE;QACtB,OAAM;IACR,CAAC,CAAA;IACD,QAAQ,EAAE,GAAS,EAAE;QACnB,OAAM;IACR,CAAC,CAAA;IACD,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,iBAAiB,EAAE,GAAG,EAAE;QACtB,OAAM;IACR,CAAC;IACD,oBAAoB,EAAE,GAAG,EAAE;QACzB,OAAM;IACR,CAAC;IACD,iBAAiB,EAAE,GAAG,EAAE;QACtB,OAAM;IACR,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,OAAM;IACR,CAAC;IACD,UAAU,EAAE,GAAG,EAAE;QACf,OAAM;IACR,CAAC;IACD,wBAAwB,EAAE,GAAG,EAAE;QAC7B,OAAM;IACR,CAAC;IACD,YAAY,EAAE,2BAAmB;IACjC,UAAU,EAAE,GAAS,EAAE;QACrB,OAAM;IACR,CAAC,CAAA;CACF,CAAC,CAAA"}
@@ -69,6 +69,10 @@ export declare enum SENDERS {
69
69
  user = "user",
70
70
  agent = "agent"
71
71
  }
72
+ export declare enum Typing {
73
+ On = "typing_on",
74
+ Off = "typing_off"
75
+ }
72
76
  export interface WebchatMessage {
73
77
  ack: 0 | 1;
74
78
  blob: boolean;
@@ -101,7 +105,7 @@ export interface OnStateChangeArgs {
101
105
  user: CoreSessionUser;
102
106
  }
103
107
  export interface MessageInfo {
104
- data: any | 'typing_on';
108
+ data: any | Typing.On;
105
109
  id: string;
106
110
  type: 'update_webchat_settings' | 'sender_action';
107
111
  }
@@ -113,17 +117,19 @@ export interface Event {
113
117
  export interface WebchatContextProps {
114
118
  addMessage: (message: WebchatMessage) => void;
115
119
  closeWebview: () => void;
116
- getThemeProperty: (property: string, defaultValue?: string | boolean) => any;
120
+ getThemeProperty: (property: string, defaultValue?: any) => any;
117
121
  openWebview: (webviewComponent: Webview) => void;
118
122
  resetUnreadMessages: () => void;
119
123
  resolveCase: () => void;
120
- sendAttachment: (attachment: File) => void;
121
- sendInput: (input: CoreInput) => void;
122
- sendPayload: (payload: string) => void;
123
- sendText: (text: string, payload?: string) => void;
124
+ sendAttachment: (attachment: File) => Promise<void>;
125
+ sendInput: (input: CoreInput) => Promise<void>;
126
+ sendPayload: (payload: string) => Promise<void>;
127
+ sendText: (text: string, payload?: string) => Promise<void>;
124
128
  setLastMessageVisible: (isLastMessageVisible: boolean) => void;
125
129
  theme: ThemeProps;
126
130
  toggleWebchat: (toggle: boolean) => void;
131
+ toggleEmojiPicker: (toggle: boolean) => void;
132
+ togglePersistentMenu: (toggle: boolean) => void;
127
133
  updateLatestInput: (input: CoreInput) => void;
128
134
  updateMessage: (message: WebchatMessage) => void;
129
135
  updateReplies: (replies: boolean) => void;
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SENDERS = void 0;
3
+ exports.Typing = exports.SENDERS = void 0;
4
4
  var SENDERS;
5
5
  (function (SENDERS) {
6
6
  SENDERS["bot"] = "bot";
7
7
  SENDERS["user"] = "user";
8
8
  SENDERS["agent"] = "agent";
9
9
  })(SENDERS = exports.SENDERS || (exports.SENDERS = {}));
10
+ var Typing;
11
+ (function (Typing) {
12
+ Typing["On"] = "typing_on";
13
+ Typing["Off"] = "typing_off";
14
+ })(Typing = exports.Typing || (exports.Typing = {}));
10
15
  // export class DevApp extends WebchatApp {
11
16
  // constructor(args: WebchatAppArgs)
12
17
  // onUserInput(args: OnUserInputArgs): Promise<void>
@@ -1 +1 @@
1
- {"version":3,"file":"index-types.js","sourceRoot":"","sources":["../../src/index-types.ts"],"names":[],"mappings":";;;AA0IA,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,sBAAW,CAAA;IACX,wBAAa,CAAA;IACb,0BAAe,CAAA;AACjB,CAAC,EAJW,OAAO,GAAP,eAAO,KAAP,eAAO,QAIlB;AAuED,2CAA2C;AAC3C,sCAAsC;AACtC,sDAAsD;AACtD,sEAAsE;AACtE,IAAI"}
1
+ {"version":3,"file":"index-types.js","sourceRoot":"","sources":["../../src/index-types.ts"],"names":[],"mappings":";;;AA0IA,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,sBAAW,CAAA;IACX,wBAAa,CAAA;IACb,0BAAe,CAAA;AACjB,CAAC,EAJW,OAAO,GAAP,eAAO,KAAP,eAAO,QAIlB;AAED,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,0BAAgB,CAAA;IAChB,4BAAkB,CAAA;AACpB,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB;AAyED,2CAA2C;AAC3C,sCAAsC;AACtC,sDAAsD;AACtD,sEAAsE;AACtE,IAAI"}
@@ -3,8 +3,4 @@ export function OpenedPersistentMenu({ onClick, options, borderRadius }: {
3
3
  options: any;
4
4
  borderRadius: any;
5
5
  }): JSX.Element;
6
- export function PersistentMenu({ onClick, persistentMenu }: {
7
- onClick: any;
8
- persistentMenu: any;
9
- }): JSX.Element;
10
6
  export default OpenedPersistentMenu;
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PersistentMenu = exports.OpenedPersistentMenu = void 0;
3
+ exports.OpenedPersistentMenu = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_1 = tslib_1.__importStar(require("react"));
7
7
  const styled_components_1 = tslib_1.__importDefault(require("styled-components"));
8
- const menuButton_svg_1 = tslib_1.__importDefault(require("../../assets/menuButton.svg"));
9
8
  const button_1 = require("../../components/button");
10
9
  const constants_1 = require("../../constants");
11
10
  const contexts_1 = require("../../contexts");
12
- const conditional_animation_1 = require("../components/conditional-animation");
13
11
  const hooks_1 = require("../hooks");
14
- const common_1 = require("./common");
15
12
  const ButtonsContainer = styled_components_1.default.div `
16
13
  position: absolute;
17
14
  z-index: 2;
@@ -34,12 +31,5 @@ const OpenedPersistentMenu = ({ onClick, options, borderRadius }) => {
34
31
  }), (0, jsx_runtime_1.jsx)(button_1.Button, Object.assign({ onClick: onClick, bottomRadius: borderRadius }, { children: closeLabel }))] })) })));
35
32
  };
36
33
  exports.OpenedPersistentMenu = OpenedPersistentMenu;
37
- const PersistentMenu = ({ onClick, persistentMenu }) => {
38
- const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
39
- const persistentMenuOptions = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.persistentMenu, persistentMenu);
40
- const CustomMenuButton = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.customMenuButton, undefined);
41
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: persistentMenuOptions ? ((0, jsx_runtime_1.jsx)(conditional_animation_1.ConditionalAnimation, { children: (0, jsx_runtime_1.jsx)("div", Object.assign({ role: constants_1.ROLES.PERSISTENT_MENU_ICON, onClick: onClick }, { children: CustomMenuButton ? (0, jsx_runtime_1.jsx)(CustomMenuButton, {}) : (0, jsx_runtime_1.jsx)(common_1.Icon, { src: menuButton_svg_1.default }) })) })) : null }));
42
- };
43
- exports.PersistentMenu = PersistentMenu;
44
34
  exports.default = exports.OpenedPersistentMenu;
45
- //# sourceMappingURL=persistent-menu.js.map
35
+ //# sourceMappingURL=opened-persistent-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-persistent-menu.js","sourceRoot":"","sources":["../../../../src/webchat/components/opened-persistent-menu.jsx"],"names":[],"mappings":";;;;;AAAA,uDAAyC;AACzC,kFAAsC;AAEtC,oDAAgD;AAChD,+CAAgD;AAChD,6CAA+C;AAC/C,oCAA8C;AAE9C,MAAM,gBAAgB,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;CAMlC,CAAA;AAEM,MAAM,oBAAoB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;IACzE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAA,2BAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IACvD,MAAM,oBAAoB,GAAG,gBAAgB,CAC3C,mBAAO,CAAC,iBAAiB,CAAC,oBAAoB,EAC9C,SAAS,CACV,CAAA;IACD,IAAI,UAAU,GAAG,QAAQ,CAAA;IACzB,IAAI;QACF,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;aAChE,UAAU,CAAA;KACd;IAAC,OAAO,CAAC,EAAE,GAAE;IACd,OAAO,CACL,8CAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAK,CAAC,eAAe,gBACvC,kBAAkB,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAC5C,uBAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,CAC7D,CAAC,CAAC,CAAC,CACF,wBAAC,gBAAgB,eACd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACnC,OAAO,CACL,CAAC,CAAC,KAAK,IAAI,CACT,uBAAC,eAAM,kBACL,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,OAAO,EAAE,CAAC,CAAC,OAAO,gBAGjB,CAAC,CAAC,KAAK,KAFH,CAAC,CAGC,CACV,CACF,CAAA;gBACH,CAAC,CAAC,EACF,uBAAC,eAAM,kBAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,gBACjD,UAAU,IACJ,IACQ,CACpB,IACG,CACP,CAAA;AACH,CAAC,CAAA;AAzCY,QAAA,oBAAoB,wBAyChC;AAED,kBAAe,4BAAoB,CAAA"}
@@ -0,0 +1,7 @@
1
+ interface AttachmentProps {
2
+ accept: string;
3
+ enableAttachments: boolean;
4
+ onChange: (event: any) => void;
5
+ }
6
+ export declare const Attachment: ({ accept, enableAttachments, onChange, }: AttachmentProps) => JSX.Element;
7
+ export {};
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Attachment = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = tslib_1.__importStar(require("react"));
6
+ const react_1 = require("react");
7
7
  const attachment_icon_svg_1 = tslib_1.__importDefault(require("../../assets/attachment-icon.svg"));
8
8
  const constants_1 = require("../../constants");
9
9
  const contexts_1 = require("../../contexts");
10
+ const common_1 = require("../components/common");
10
11
  const conditional_animation_1 = require("../components/conditional-animation");
11
- const common_1 = require("./common");
12
- const Attachment = ({ onChange, accept, enableAttachments }) => {
12
+ const Attachment = ({ accept, enableAttachments, onChange, }) => {
13
13
  const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
14
14
  const fileInputRef = (0, react_1.useRef)(null);
15
15
  const CustomAttachments = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.customAttachments, undefined);
@@ -21,7 +21,9 @@ const Attachment = ({ onChange, accept, enableAttachments }) => {
21
21
  const attachmentsEnabled = isAttachmentsEnabled();
22
22
  const handleOnChange = event => {
23
23
  onChange(event);
24
- fileInputRef.current.value = null;
24
+ if (fileInputRef.current) {
25
+ fileInputRef.current.value = '';
26
+ }
25
27
  };
26
28
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: attachmentsEnabled ? ((0, jsx_runtime_1.jsx)(conditional_animation_1.ConditionalAnimation, { children: (0, jsx_runtime_1.jsxs)("div", Object.assign({ role: constants_1.ROLES.ATTACHMENT_ICON }, { children: [(0, jsx_runtime_1.jsx)("label", Object.assign({ htmlFor: 'attachment', style: { marginTop: 4 } }, { children: CustomAttachments ? ((0, jsx_runtime_1.jsx)(CustomAttachments, {})) : ((0, jsx_runtime_1.jsx)(common_1.Icon, { src: attachment_icon_svg_1.default })) })), (0, jsx_runtime_1.jsx)("input", { ref: fileInputRef, type: 'file', name: 'file', id: 'attachment', style: { display: 'none' }, onChange: handleOnChange, accept: accept })] })) })) : null }));
27
29
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/attachment.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAiD;AAEjD,mGAA6D;AAC7D,+CAAgD;AAChD,6CAA+C;AAC/C,iDAA2C;AAC3C,+EAA0E;AAQnE,MAAM,UAAU,GAAG,CAAC,EACzB,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACQ,EAAE,EAAE;IACpB,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IAEvD,MAAM,YAAY,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAA;IAE1D,MAAM,iBAAiB,GAAG,gBAAgB,CACxC,mBAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAC3C,SAAS,CACV,CAAA;IAED,MAAM,oBAAoB,GAAG,GAAG,EAAE;;QAChC,MAAM,oBAAoB,GAAG,CAAC,CAAC,iBAAiB,CAAA;QAChD,OAAO,CACL,MAAA,gBAAgB,CACd,mBAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAC3C,iBAAiB,CAClB,mCAAI,oBAAoB,CAC1B,CAAA;IACH,CAAC,CAAA;IACD,MAAM,kBAAkB,GAAG,oBAAoB,EAAE,CAAA;IAEjD,MAAM,cAAc,GAAG,KAAK,CAAC,EAAE;QAC7B,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;SAChC;IACH,CAAC,CAAA;IAED,OAAO,CACL,2DACG,kBAAkB,CAAC,CAAC,CAAC,CACpB,uBAAC,4CAAoB,cACnB,+CAAK,IAAI,EAAE,iBAAK,CAAC,eAAe,iBAC9B,gDAAO,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,gBAChD,iBAAiB,CAAC,CAAC,CAAC,CACnB,uBAAC,iBAAiB,KAAG,CACtB,CAAC,CAAC,CAAC,CACF,uBAAC,aAAI,IAAC,GAAG,EAAE,6BAAc,GAAI,CAC9B,IACK,EACR,kCACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,YAAY,EACf,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,GACd,KACE,GACe,CACxB,CAAC,CAAC,CAAC,IAAI,GACP,CACJ,CAAA;AACH,CAAC,CAAA;AA1DY,QAAA,UAAU,cA0DtB"}
@@ -0,0 +1,6 @@
1
+ interface EmojiPickerProps {
2
+ enableEmojiPicker: boolean;
3
+ onClick: () => void;
4
+ }
5
+ export declare const EmojiPicker: ({ enableEmojiPicker, onClick, }: EmojiPickerProps) => JSX.Element;
6
+ export {};
@@ -1,18 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenedEmojiPicker = exports.EmojiPicker = void 0;
3
+ exports.EmojiPicker = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const emoji_picker_react_1 = tslib_1.__importDefault(require("emoji-picker-react"));
7
- const react_1 = tslib_1.__importStar(require("react"));
8
- const styled_components_1 = tslib_1.__importDefault(require("styled-components"));
6
+ const react_1 = require("react");
9
7
  const emojiButton_svg_1 = tslib_1.__importDefault(require("../../assets/emojiButton.svg"));
10
8
  const constants_1 = require("../../constants");
11
9
  const contexts_1 = require("../../contexts");
10
+ const common_1 = require("../components/common");
12
11
  const conditional_animation_1 = require("../components/conditional-animation");
13
- const hooks_1 = require("../hooks");
14
- const common_1 = require("./common");
15
- const EmojiPicker = ({ enableEmojiPicker, onClick }) => {
12
+ const EmojiPicker = ({ enableEmojiPicker, onClick, }) => {
16
13
  const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
17
14
  const CustomEmojiPicker = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.customEmojiPicker, undefined);
18
15
  const isEmojiPickerEnabled = () => {
@@ -21,23 +18,11 @@ const EmojiPicker = ({ enableEmojiPicker, onClick }) => {
21
18
  return ((_a = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.enableEmojiPicker, enableEmojiPicker)) !== null && _a !== void 0 ? _a : hasCustomEmojiPicker);
22
19
  };
23
20
  const emojiPickerEnabled = isEmojiPickerEnabled();
24
- const handleClick = event => {
21
+ const handleClick = (event) => {
25
22
  onClick();
26
23
  event.stopPropagation();
27
24
  };
28
25
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: emojiPickerEnabled ? ((0, jsx_runtime_1.jsx)(conditional_animation_1.ConditionalAnimation, { children: (0, jsx_runtime_1.jsx)("div", Object.assign({ role: constants_1.ROLES.EMOJI_PICKER_ICON, onClick: handleClick }, { children: CustomEmojiPicker ? ((0, jsx_runtime_1.jsx)(CustomEmojiPicker, {})) : ((0, jsx_runtime_1.jsx)(common_1.Icon, { src: emojiButton_svg_1.default })) })) })) : null }));
29
26
  };
30
27
  exports.EmojiPicker = EmojiPicker;
31
- const Container = styled_components_1.default.div `
32
- display: flex;
33
- justify-content: flex-end;
34
- position: absolute;
35
- right: 3px;
36
- top: -324px;
37
- `;
38
- const OpenedEmojiPicker = props => {
39
- const { ref, isComponentVisible } = (0, hooks_1.useComponentVisible)(true, props.onClick);
40
- return ((0, jsx_runtime_1.jsx)("div", Object.assign({ ref: ref }, { children: isComponentVisible && ((0, jsx_runtime_1.jsx)(Container, Object.assign({ role: constants_1.ROLES.EMOJI_PICKER }, { children: (0, jsx_runtime_1.jsx)(emoji_picker_react_1.default, { width: '100%', height: '19rem', previewConfig: { showPreview: false }, onEmojiClick: props.onEmojiClick, disableAutoFocus: true }) }))) })));
41
- };
42
- exports.OpenedEmojiPicker = OpenedEmojiPicker;
43
28
  //# sourceMappingURL=emoji-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji-picker.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/emoji-picker.tsx"],"names":[],"mappings":";;;;;AACA,iCAAoD;AAEpD,2FAAoD;AACpD,+CAAgD;AAChD,6CAA+C;AAC/C,iDAA2C;AAC3C,+EAA0E;AASnE,MAAM,WAAW,GAAG,CAAC,EAC1B,iBAAiB,EACjB,OAAO,GACU,EAAE,EAAE;IACrB,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IAEvD,MAAM,iBAAiB,GAAG,gBAAgB,CACxC,mBAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAC3C,SAAS,CACV,CAAA;IAED,MAAM,oBAAoB,GAAG,GAAG,EAAE;;QAChC,MAAM,oBAAoB,GAAG,CAAC,CAAC,iBAAiB,CAAA;QAChD,OAAO,CACL,MAAA,gBAAgB,CACd,mBAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAC3C,iBAAiB,CAClB,mCAAI,oBAAoB,CAC1B,CAAA;IACH,CAAC,CAAA;IACD,MAAM,kBAAkB,GAAG,oBAAoB,EAAE,CAAA;IAEjD,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;QACjC,OAAO,EAAE,CAAA;QACT,KAAK,CAAC,eAAe,EAAE,CAAA;IACzB,CAAC,CAAA;IAED,OAAO,CACL,2DACG,kBAAkB,CAAC,CAAC,CAAC,CACpB,uBAAC,4CAAoB,cACnB,8CAAK,IAAI,EAAE,iBAAK,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,gBACrD,iBAAiB,CAAC,CAAC,CAAC,CACnB,uBAAC,iBAAiB,KAAG,CACtB,CAAC,CAAC,CAAC,CACF,uBAAC,aAAI,IAAC,GAAG,EAAE,yBAAS,GAAI,CACzB,IACG,GACe,CACxB,CAAC,CAAC,CAAC,IAAI,GACP,CACJ,CAAA;AACH,CAAC,CAAA;AA1CY,QAAA,WAAW,eA0CvB"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { DeviceAdapter } from '../devices/device-adapter';
3
+ interface WebchatInputPanelProps {
4
+ persistentMenu: any;
5
+ enableEmojiPicker: boolean;
6
+ enableAttachments: boolean;
7
+ handleAttachment: (event: any) => void;
8
+ textareaRef: React.MutableRefObject<HTMLTextAreaElement>;
9
+ deviceAdapter: DeviceAdapter;
10
+ onUserInput?: (event: any) => Promise<void>;
11
+ }
12
+ export declare const WebchatInputPanel: ({ persistentMenu, enableEmojiPicker, enableAttachments, handleAttachment, textareaRef, deviceAdapter, onUserInput, }: WebchatInputPanelProps) => JSX.Element;
13
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebchatInputPanel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const core_1 = require("@botonic/core");
7
+ const react_1 = require("react");
8
+ const uuid_1 = require("uuid");
9
+ const constants_1 = require("../../constants");
10
+ const contexts_1 = require("../../contexts");
11
+ const message_utils_1 = require("../../message-utils");
12
+ const attachment_1 = require("./attachment");
13
+ const emoji_picker_1 = require("./emoji-picker");
14
+ const opened_emoji_picker_1 = require("./opened-emoji-picker");
15
+ const persistent_menu_1 = require("./persistent-menu");
16
+ const send_button_1 = require("./send-button");
17
+ const styles_1 = require("./styles");
18
+ const textarea_1 = require("./textarea");
19
+ const WebchatInputPanel = ({ persistentMenu, enableEmojiPicker, enableAttachments, handleAttachment, textareaRef, deviceAdapter, onUserInput, }) => {
20
+ const { getThemeProperty, sendText, togglePersistentMenu, toggleEmojiPicker, webchatState, } = (0, react_1.useContext)(contexts_1.WebchatContext);
21
+ const handleSelectedEmoji = event => {
22
+ textareaRef.current.value += event.emoji;
23
+ textareaRef.current.focus();
24
+ };
25
+ const handleEmojiClick = () => {
26
+ toggleEmojiPicker(!webchatState.isEmojiPickerOpen);
27
+ };
28
+ const handleMenu = () => {
29
+ togglePersistentMenu(!webchatState.isPersistentMenuOpen);
30
+ };
31
+ const sendTextAreaText = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
32
+ yield sendText(textareaRef.current.value);
33
+ textareaRef.current.value = '';
34
+ });
35
+ const sendChatEvent = (chatEvent) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
36
+ const chatEventInput = {
37
+ id: (0, uuid_1.v4)(),
38
+ type: core_1.INPUT.CHAT_EVENT,
39
+ data: chatEvent,
40
+ };
41
+ if (onUserInput) {
42
+ onUserInput({
43
+ user: webchatState.session.user,
44
+ input: chatEventInput,
45
+ session: webchatState.session,
46
+ lastRoutePath: webchatState.lastRoutePath,
47
+ });
48
+ }
49
+ });
50
+ return ((0, jsx_runtime_1.jsxs)(styles_1.UserInputContainer, Object.assign({ style: Object.assign({}, getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.userInputStyle)), className: 'user-input-container' }, { children: [webchatState.isEmojiPickerOpen && ((0, jsx_runtime_1.jsx)(opened_emoji_picker_1.OpenedEmojiPicker
51
+ // height={webchatState.theme.style.height} // Revisar si es necessari, en el WebchatStateTheme no hi ha style.height, pero en el Theme props style es any.
52
+ , {
53
+ // height={webchatState.theme.style.height} // Revisar si es necessari, en el WebchatStateTheme no hi ha style.height, pero en el Theme props style es any.
54
+ onEmojiClick: handleSelectedEmoji, onClick: handleEmojiClick })), (0, jsx_runtime_1.jsx)(persistent_menu_1.PersistentMenu, { onClick: handleMenu, persistentMenu: persistentMenu }), (0, jsx_runtime_1.jsx)(textarea_1.Textarea, { deviceAdapter: deviceAdapter, persistentMenu: persistentMenu, textareaRef: textareaRef, sendChatEvent: sendChatEvent, sendTextAreaText: sendTextAreaText }), (0, jsx_runtime_1.jsx)(emoji_picker_1.EmojiPicker, { enableEmojiPicker: enableEmojiPicker, onClick: handleEmojiClick }), (0, jsx_runtime_1.jsx)(attachment_1.Attachment, { enableAttachments: enableAttachments, onChange: handleAttachment, accept: (0, message_utils_1.getFullMimeWhitelist)().join(',') }), (0, jsx_runtime_1.jsx)(send_button_1.SendButton, { onClick: sendTextAreaText })] })));
55
+ };
56
+ exports.WebchatInputPanel = WebchatInputPanel;
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface OpenedEmojiPickerProps {
2
+ onClick: () => void;
3
+ onEmojiClick: (event: any) => void;
4
+ }
5
+ export declare const OpenedEmojiPicker: ({ onClick, onEmojiClick, }: OpenedEmojiPickerProps) => JSX.Element;
6
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenedEmojiPicker = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const emoji_picker_react_1 = tslib_1.__importDefault(require("emoji-picker-react"));
7
+ const constants_1 = require("../../constants");
8
+ const hooks_1 = require("../hooks");
9
+ const styles_1 = require("./styles");
10
+ const OpenedEmojiPicker = ({ onClick, onEmojiClick, }) => {
11
+ const { ref, isComponentVisible } = (0, hooks_1.useComponentVisible)(true, onClick);
12
+ return ((0, jsx_runtime_1.jsx)("div", Object.assign({ ref: ref }, { children: isComponentVisible && ((0, jsx_runtime_1.jsx)(styles_1.OpenedEmojiPickerContainer, Object.assign({ role: constants_1.ROLES.EMOJI_PICKER }, { children: (0, jsx_runtime_1.jsx)(emoji_picker_react_1.default, { width: '100%', height: '19rem', previewConfig: { showPreview: false }, onEmojiClick: onEmojiClick, autoFocusSearch: false }) }))) })));
13
+ };
14
+ exports.OpenedEmojiPicker = OpenedEmojiPicker;
15
+ //# sourceMappingURL=opened-emoji-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-emoji-picker.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/opened-emoji-picker.tsx"],"names":[],"mappings":";;;;;AAAA,oFAAuC;AAGvC,+CAAuC;AACvC,oCAA8C;AAC9C,qCAAqD;AAO9C,MAAM,iBAAiB,GAAG,CAAC,EAChC,OAAO,EACP,YAAY,GACW,EAAE,EAAE;IAC3B,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAA,2BAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtE,OAAO,CACL,8CAAK,GAAG,EAAE,GAAgC,gBACvC,kBAAkB,IAAI,CACrB,uBAAC,mCAA0B,kBAAC,IAAI,EAAE,iBAAK,CAAC,YAAY,gBAClD,uBAAC,4BAAM,IACL,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,OAAO,EACd,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EACrC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,KAAK,GACtB,IACyB,CAC9B,IACG,CACP,CAAA;AACH,CAAC,CAAA;AApBY,QAAA,iBAAiB,qBAoB7B"}
@@ -0,0 +1,6 @@
1
+ interface PersistentMenuProps {
2
+ persistentMenu: any;
3
+ onClick: () => void;
4
+ }
5
+ export declare const PersistentMenu: ({ onClick, persistentMenu, }: PersistentMenuProps) => JSX.Element;
6
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersistentMenu = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const menuButton_svg_1 = tslib_1.__importDefault(require("../../assets/menuButton.svg"));
8
+ const constants_1 = require("../../constants");
9
+ const contexts_1 = require("../../contexts");
10
+ const common_1 = require("../components/common");
11
+ const conditional_animation_1 = require("../components/conditional-animation");
12
+ const PersistentMenu = ({ onClick, persistentMenu, }) => {
13
+ const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
14
+ const persistentMenuOptions = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.persistentMenu, persistentMenu);
15
+ const CustomMenuButton = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.customMenuButton, undefined);
16
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: persistentMenuOptions ? ((0, jsx_runtime_1.jsx)(conditional_animation_1.ConditionalAnimation, { children: (0, jsx_runtime_1.jsx)("div", Object.assign({ role: constants_1.ROLES.PERSISTENT_MENU_ICON, onClick: onClick }, { children: CustomMenuButton ? (0, jsx_runtime_1.jsx)(CustomMenuButton, {}) : (0, jsx_runtime_1.jsx)(common_1.Icon, { src: menuButton_svg_1.default }) })) })) : null }));
17
+ };
18
+ exports.PersistentMenu = PersistentMenu;
19
+ //# sourceMappingURL=persistent-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-menu.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/persistent-menu.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAyC;AAEzC,yFAAkD;AAClD,+CAAgD;AAChD,6CAA+C;AAC/C,iDAA2C;AAC3C,+EAA0E;AAOnE,MAAM,cAAc,GAAG,CAAC,EAC7B,OAAO,EACP,cAAc,GACM,EAAE,EAAE;IACxB,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IAEvD,MAAM,qBAAqB,GAAG,gBAAgB,CAC5C,mBAAO,CAAC,iBAAiB,CAAC,cAAc,EACxC,cAAc,CACf,CAAA;IAED,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,mBAAO,CAAC,iBAAiB,CAAC,gBAAgB,EAC1C,SAAS,CACV,CAAA;IAED,OAAO,CACL,2DACG,qBAAqB,CAAC,CAAC,CAAC,CACvB,uBAAC,4CAAoB,cACnB,8CAAK,IAAI,EAAE,iBAAK,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,gBACpD,gBAAgB,CAAC,CAAC,CAAC,uBAAC,gBAAgB,KAAG,CAAC,CAAC,CAAC,uBAAC,aAAI,IAAC,GAAG,EAAE,wBAAQ,GAAI,IAC9D,GACe,CACxB,CAAC,CAAC,CAAC,IAAI,GACP,CACJ,CAAA;AACH,CAAC,CAAA;AA3BY,QAAA,cAAc,kBA2B1B"}
@@ -0,0 +1,5 @@
1
+ interface SendButtonProps {
2
+ onClick: () => Promise<void>;
3
+ }
4
+ export declare const SendButton: ({ onClick }: SendButtonProps) => JSX.Element;
5
+ export {};
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SendButton = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = tslib_1.__importStar(require("react"));
6
+ const react_1 = require("react");
7
7
  const send_button_svg_1 = tslib_1.__importDefault(require("../../assets/send-button.svg"));
8
8
  const constants_1 = require("../../constants");
9
9
  const contexts_1 = require("../../contexts");
10
+ const common_1 = require("../components/common");
10
11
  const conditional_animation_1 = require("../components/conditional-animation");
11
- const common_1 = require("./common");
12
12
  const SendButton = ({ onClick }) => {
13
13
  const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
14
14
  const sendButtonEnabled = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.enableSendButton, true);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-button.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/send-button.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAyC;AAEzC,2FAAyD;AACzD,+CAAgD;AAChD,6CAA+C;AAC/C,iDAA2C;AAC3C,+EAA0E;AAMnE,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAmB,EAAE,EAAE;IACzD,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IAEvD,MAAM,iBAAiB,GAAG,gBAAgB,CACxC,mBAAO,CAAC,iBAAiB,CAAC,gBAAgB,EAC1C,IAAI,CACL,CAAA;IAED,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,mBAAO,CAAC,iBAAiB,CAAC,gBAAgB,EAC1C,SAAS,CACV,CAAA;IAED,OAAO,CACL,2DACG,iBAAiB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CACvC,uBAAC,4CAAoB,cACnB,8CAAK,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAK,CAAC,gBAAgB,gBAChD,gBAAgB,CAAC,CAAC,CAAC,CAClB,uBAAC,gBAAgB,KAAG,CACrB,CAAC,CAAC,CAAC,CACF,uBAAC,aAAI,IAAC,GAAG,EAAE,yBAAc,GAAI,CAC9B,IACG,GACe,CACxB,CAAC,CAAC,CAAC,IAAI,GACP,CACJ,CAAA;AACH,CAAC,CAAA;AA5BY,QAAA,UAAU,cA4BtB"}
@@ -0,0 +1,3 @@
1
+ export declare const UserInputContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const TextAreaContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const OpenedEmojiPickerContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenedEmojiPickerContainer = exports.TextAreaContainer = exports.UserInputContainer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const styled_components_1 = tslib_1.__importDefault(require("styled-components"));
6
+ const constants_1 = require("../../constants");
7
+ exports.UserInputContainer = styled_components_1.default.div `
8
+ min-height: 52px;
9
+ position: relative;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: flex-start;
13
+ gap: 16px;
14
+ padding: 0px 16px;
15
+ z-index: 1;
16
+ border-top: 1px solid ${constants_1.COLORS.SOLID_BLACK_ALPHA_0_5};
17
+ `;
18
+ exports.TextAreaContainer = styled_components_1.default.div `
19
+ display: flex;
20
+ flex: 1 1 auto;
21
+ align-items: center;
22
+ `;
23
+ exports.OpenedEmojiPickerContainer = styled_components_1.default.div `
24
+ display: flex;
25
+ justify-content: flex-end;
26
+ position: absolute;
27
+ right: 3px;
28
+ top: -324px;
29
+ `;
30
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/styles.ts"],"names":[],"mappings":";;;;AAAA,kFAAsC;AAEtC,+CAAwC;AAE3B,QAAA,kBAAkB,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;;;;0BASlB,kBAAM,CAAC,qBAAqB;CACrD,CAAA;AAEY,QAAA,iBAAiB,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;CAI1C,CAAA;AAEY,QAAA,0BAA0B,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;CAMnD,CAAA"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PersistentMenuTheme } from '../../components/index-types';
3
+ import { DeviceAdapter } from '../devices/device-adapter';
4
+ interface TextareaProps {
5
+ deviceAdapter: DeviceAdapter;
6
+ persistentMenu: PersistentMenuTheme;
7
+ textareaRef: React.MutableRefObject<HTMLTextAreaElement>;
8
+ sendChatEvent: (event: string) => Promise<void>;
9
+ sendTextAreaText: () => Promise<void>;
10
+ }
11
+ export declare const Textarea: ({ deviceAdapter, persistentMenu, textareaRef, sendChatEvent, sendTextAreaText, }: TextareaProps) => JSX.Element;
12
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Textarea = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const react_textarea_autosize_1 = tslib_1.__importDefault(require("react-textarea-autosize"));
8
+ const constants_1 = require("../../constants");
9
+ const contexts_1 = require("../../contexts");
10
+ const index_types_1 = require("../../index-types");
11
+ const styles_1 = require("./styles");
12
+ const Textarea = ({ deviceAdapter, persistentMenu, textareaRef, sendChatEvent, sendTextAreaText, }) => {
13
+ const { getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
14
+ let isTyping = false;
15
+ let typingTimeout;
16
+ const persistentMenuOptions = getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.persistentMenu, persistentMenu);
17
+ const onKeyDown = event => {
18
+ if (event.keyCode === 13 && event.shiftKey === false) {
19
+ event.preventDefault();
20
+ sendTextAreaText();
21
+ stopTyping();
22
+ }
23
+ };
24
+ const onKeyUp = () => {
25
+ if (textareaRef.current.value === '') {
26
+ stopTyping();
27
+ return;
28
+ }
29
+ if (!isTyping) {
30
+ startTyping();
31
+ }
32
+ clearTimeoutWithReset(true);
33
+ };
34
+ const clearTimeoutWithReset = (reset) => {
35
+ const waitTime = 20 * 1000;
36
+ if (typingTimeout)
37
+ clearTimeout(typingTimeout);
38
+ if (reset)
39
+ typingTimeout = setTimeout(stopTyping, waitTime);
40
+ };
41
+ const startTyping = () => {
42
+ isTyping = true;
43
+ sendChatEvent(index_types_1.Typing.On);
44
+ };
45
+ const stopTyping = () => {
46
+ clearTimeoutWithReset(false);
47
+ isTyping = false;
48
+ sendChatEvent(index_types_1.Typing.Off);
49
+ };
50
+ return ((0, jsx_runtime_1.jsx)(styles_1.TextAreaContainer, { children: (0, jsx_runtime_1.jsx)(react_textarea_autosize_1.default, { ref: (ref) => (textareaRef.current = ref), name: 'text', onFocus: () => {
51
+ deviceAdapter.onFocus();
52
+ }, onBlur: () => {
53
+ deviceAdapter.onBlur();
54
+ }, maxRows: 4, wrap: 'soft', maxLength: 1000, placeholder: getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.textPlaceholder, constants_1.WEBCHAT.DEFAULTS.PLACEHOLDER), autoFocus: false, onKeyDown: e => onKeyDown(e), onKeyUp: onKeyUp, style: Object.assign({ display: 'flex', fontSize: deviceAdapter.fontSize(14), width: '100%', border: 'none', resize: 'none', overflow: 'auto', outline: 'none', flex: '1 1 auto', padding: 10, paddingLeft: persistentMenuOptions ? 0 : 10, fontFamily: 'inherit' }, getThemeProperty(constants_1.WEBCHAT.CUSTOM_PROPERTIES.userInputBoxStyle)) }) }));
55
+ };
56
+ exports.Textarea = Textarea;
57
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/textarea.tsx"],"names":[],"mappings":"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"}