@botonic/react 0.29.0 → 0.30.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/contexts.js +14 -8
- package/lib/cjs/contexts.js.map +1 -1
- package/lib/cjs/index-types.d.ts +12 -6
- package/lib/cjs/index-types.js +6 -1
- package/lib/cjs/index-types.js.map +1 -1
- package/lib/cjs/webchat/components/{persistent-menu.d.ts → opened-persistent-menu.d.ts} +0 -4
- package/lib/cjs/webchat/components/{persistent-menu.js → opened-persistent-menu.js} +2 -12
- package/lib/cjs/webchat/components/opened-persistent-menu.js.map +1 -0
- package/lib/cjs/webchat/trigger-button/styles.js +1 -1
- package/lib/cjs/webchat/utils.d.ts +2 -0
- package/lib/cjs/webchat/utils.js +12 -0
- package/lib/cjs/webchat/utils.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/attachment.d.ts +7 -0
- package/lib/cjs/webchat/{components → webchat-input-panel}/attachment.js +6 -4
- package/lib/cjs/webchat/webchat-input-panel/attachment.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/emoji-picker.d.ts +6 -0
- package/lib/cjs/webchat/{components → webchat-input-panel}/emoji-picker.js +5 -20
- package/lib/cjs/webchat/webchat-input-panel/emoji-picker.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/index.d.ts +13 -0
- package/lib/cjs/webchat/webchat-input-panel/index.js +53 -0
- package/lib/cjs/webchat/webchat-input-panel/index.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.d.ts +6 -0
- package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.js +15 -0
- package/lib/cjs/webchat/webchat-input-panel/opened-emoji-picker.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/persistent-menu.d.ts +6 -0
- package/lib/cjs/webchat/webchat-input-panel/persistent-menu.js +19 -0
- package/lib/cjs/webchat/webchat-input-panel/persistent-menu.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/send-button.d.ts +5 -0
- package/lib/cjs/webchat/{components → webchat-input-panel}/send-button.js +2 -2
- package/lib/cjs/webchat/webchat-input-panel/send-button.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/styles.d.ts +3 -0
- package/lib/cjs/webchat/webchat-input-panel/styles.js +30 -0
- package/lib/cjs/webchat/webchat-input-panel/styles.js.map +1 -0
- package/lib/cjs/webchat/webchat-input-panel/textarea.d.ts +12 -0
- package/lib/cjs/webchat/webchat-input-panel/textarea.js +57 -0
- package/lib/cjs/webchat/webchat-input-panel/textarea.js.map +1 -0
- package/lib/cjs/webchat/webchat.d.ts +0 -1
- package/lib/cjs/webchat/webchat.js +16 -108
- package/lib/cjs/webchat/webchat.js.map +1 -1
- package/lib/cjs/webchat-app.js +1 -1
- package/lib/cjs/webchat-app.js.map +1 -1
- package/lib/esm/contexts.js +14 -8
- package/lib/esm/contexts.js.map +1 -1
- package/lib/esm/index-types.d.ts +12 -6
- package/lib/esm/index-types.js +5 -0
- package/lib/esm/index-types.js.map +1 -1
- package/lib/esm/webchat/components/{persistent-menu.d.ts → opened-persistent-menu.d.ts} +0 -4
- package/lib/esm/webchat/components/{persistent-menu.js → opened-persistent-menu.js} +2 -11
- package/lib/esm/webchat/components/opened-persistent-menu.js.map +1 -0
- package/lib/esm/webchat/trigger-button/styles.js +1 -1
- package/lib/esm/webchat/utils.d.ts +2 -0
- package/lib/esm/webchat/utils.js +8 -0
- package/lib/esm/webchat/utils.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/attachment.d.ts +7 -0
- package/lib/esm/webchat/{components → webchat-input-panel}/attachment.js +6 -4
- package/lib/esm/webchat/webchat-input-panel/attachment.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/emoji-picker.d.ts +6 -0
- package/lib/esm/webchat/{components → webchat-input-panel}/emoji-picker.js +4 -18
- package/lib/esm/webchat/webchat-input-panel/emoji-picker.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/index.d.ts +13 -0
- package/lib/esm/webchat/webchat-input-panel/index.js +49 -0
- package/lib/esm/webchat/webchat-input-panel/index.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.d.ts +6 -0
- package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.js +10 -0
- package/lib/esm/webchat/webchat-input-panel/opened-emoji-picker.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/persistent-menu.d.ts +6 -0
- package/lib/esm/webchat/webchat-input-panel/persistent-menu.js +14 -0
- package/lib/esm/webchat/webchat-input-panel/persistent-menu.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/send-button.d.ts +5 -0
- package/lib/esm/webchat/{components → webchat-input-panel}/send-button.js +2 -2
- package/lib/esm/webchat/webchat-input-panel/send-button.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/styles.d.ts +3 -0
- package/lib/esm/webchat/webchat-input-panel/styles.js +26 -0
- package/lib/esm/webchat/webchat-input-panel/styles.js.map +1 -0
- package/lib/esm/webchat/webchat-input-panel/textarea.d.ts +12 -0
- package/lib/esm/webchat/webchat-input-panel/textarea.js +52 -0
- package/lib/esm/webchat/webchat-input-panel/textarea.js.map +1 -0
- package/lib/esm/webchat/webchat.d.ts +0 -1
- package/lib/esm/webchat/webchat.js +15 -106
- package/lib/esm/webchat/webchat.js.map +1 -1
- package/lib/esm/webchat-app.js +2 -2
- package/lib/esm/webchat-app.js.map +1 -1
- package/package.json +3 -5
- package/src/contexts.tsx +10 -4
- package/src/index-types.ts +13 -6
- package/src/webchat/components/{persistent-menu.jsx → opened-persistent-menu.jsx} +0 -29
- package/src/webchat/trigger-button/styles.ts +1 -1
- package/src/webchat/utils.ts +7 -0
- package/src/webchat/{components/attachment.jsx → webchat-input-panel/attachment.tsx} +16 -4
- package/src/webchat/{components/emoji-picker.jsx → webchat-input-panel/emoji-picker.tsx} +11 -33
- package/src/webchat/webchat-input-panel/index.tsx +116 -0
- package/src/webchat/webchat-input-panel/opened-emoji-picker.tsx +34 -0
- package/src/webchat/webchat-input-panel/persistent-menu.tsx +41 -0
- package/src/webchat/{components/send-button.jsx → webchat-input-panel/send-button.tsx} +6 -2
- package/src/webchat/webchat-input-panel/styles.ts +29 -0
- package/src/webchat/webchat-input-panel/textarea.tsx +110 -0
- package/src/webchat/webchat.jsx +28 -190
- package/src/webchat-app.jsx +2 -2
- package/lib/cjs/webchat/components/attachment.d.ts +0 -5
- package/lib/cjs/webchat/components/attachment.js.map +0 -1
- package/lib/cjs/webchat/components/emoji-picker.d.ts +0 -5
- package/lib/cjs/webchat/components/emoji-picker.js.map +0 -1
- package/lib/cjs/webchat/components/persistent-menu.js.map +0 -1
- package/lib/cjs/webchat/components/send-button.d.ts +0 -3
- package/lib/cjs/webchat/components/send-button.js.map +0 -1
- package/lib/esm/webchat/components/attachment.d.ts +0 -5
- package/lib/esm/webchat/components/attachment.js.map +0 -1
- package/lib/esm/webchat/components/emoji-picker.d.ts +0 -5
- package/lib/esm/webchat/components/emoji-picker.js.map +0 -1
- package/lib/esm/webchat/components/persistent-menu.js.map +0 -1
- package/lib/esm/webchat/components/send-button.d.ts +0 -3
- package/lib/esm/webchat/components/send-button.js.map +0 -1
package/lib/cjs/contexts.js
CHANGED
|
@@ -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
|
},
|
package/lib/cjs/contexts.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/cjs/index-types.d.ts
CHANGED
|
@@ -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 |
|
|
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?:
|
|
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;
|
package/lib/cjs/index-types.js
CHANGED
|
@@ -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;
|
|
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.
|
|
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,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getParsedAction = void 0;
|
|
4
|
+
const core_1 = require("@botonic/core");
|
|
5
|
+
const getParsedAction = (botonicAction) => {
|
|
6
|
+
const splittedAction = botonicAction.split(`${core_1.BotonicAction.CreateCase}:`);
|
|
7
|
+
if (splittedAction.length <= 1)
|
|
8
|
+
return undefined;
|
|
9
|
+
return JSON.parse(splittedAction[1]);
|
|
10
|
+
};
|
|
11
|
+
exports.getParsedAction = getParsedAction;
|
|
12
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/webchat/utils.ts"],"names":[],"mappings":";;;AAAA,wCAAgE;AAEzD,MAAM,eAAe,GAAG,CAAC,aAAgC,EAAE,EAAE;IAClE,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,oBAAa,CAAC,UAAU,GAAG,CAAC,CAAA;IAC1E,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B"}
|
|
@@ -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 =
|
|
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
|
|
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
|
|
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"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EmojiPicker = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
const
|
|
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
|
|
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":";;;;;AAAA,iCAAyC;AAEzC,2FAAoD;AACpD,+CAAgD;AAChD,6CAA+C;AAC/C,iDAA2C;AAC3C,+EAA0E;AAOnE,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,53 @@
|
|
|
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, { 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 })] })));
|
|
51
|
+
};
|
|
52
|
+
exports.WebchatInputPanel = WebchatInputPanel;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/webchat/webchat-input-panel/index.tsx"],"names":[],"mappings":";;;;;AAAA,wCAAqC;AACrC,iCAAyC;AACzC,+BAAmC;AAEnC,+CAAyC;AACzC,6CAA+C;AAC/C,uDAA0D;AAE1D,6CAAyC;AACzC,iDAA4C;AAC5C,+DAAyD;AACzD,uDAAkD;AAClD,+CAA0C;AAC1C,qCAA6C;AAC7C,yCAAqC;AAY9B,MAAM,iBAAiB,GAAG,CAAC,EAChC,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,WAAW,GACY,EAAE,EAAE;IAC3B,MAAM,EACJ,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IAE9B,MAAM,mBAAmB,GAAG,KAAK,CAAC,EAAE;QAClC,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA;QACxC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,iBAAiB,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;IACpD,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,oBAAoB,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAA;IAC1D,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzC,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;IAChC,CAAC,CAAA,CAAA;IAED,MAAM,aAAa,GAAG,CAAM,SAAS,EAAC,EAAE;QACtC,MAAM,cAAc,GAAG;YACrB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,IAAI,EAAE,YAAK,CAAC,UAAU;YACtB,IAAI,EAAE,SAAS;SAChB,CAAA;QACD,IAAI,WAAW,EAAE;YACf,WAAW,CAAC;gBACV,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI;gBAC/B,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C,CAAC,CAAA;SACH;IACH,CAAC,CAAA,CAAA;IAED,OAAO,CACL,wBAAC,2BAAkB,kBACjB,KAAK,oBACA,gBAAgB,CAAC,mBAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,GAE/D,SAAS,EAAC,sBAAsB,iBAE/B,YAAY,CAAC,iBAAiB,IAAI,CACjC,uBAAC,uCAAiB,IAChB,YAAY,EAAE,mBAAmB,EACjC,OAAO,EAAE,gBAAgB,GACzB,CACH,EAED,uBAAC,gCAAc,IAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,GAAI,EAEvE,uBAAC,mBAAQ,IACP,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,EAEF,uBAAC,0BAAW,IACV,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,gBAAgB,GACzB,EAEF,uBAAC,uBAAU,IACT,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,IAAA,oCAAoB,GAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GACxC,EAEF,uBAAC,wBAAU,IAAC,OAAO,EAAE,gBAAgB,GAAI,KACtB,CACtB,CAAA;AACH,CAAC,CAAA;AAzFY,QAAA,iBAAiB,qBAyF7B"}
|
|
@@ -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 }, lazyLoadEmojis: true, 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,cAAc,EAAE,IAAI,EACpB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,KAAK,GACtB,IACyB,CAC9B,IACG,CACP,CAAA;AACH,CAAC,CAAA;AArBY,QAAA,iBAAiB,qBAqB7B"}
|
|
@@ -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"}
|
|
@@ -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 =
|
|
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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"}
|