@botonic/react 1.0.0-beta.0 → 1.0.0-dev.2
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/components/button.js +2 -0
- package/lib/components/button.js.map +1 -1
- package/lib/components/components.js +1 -1
- package/lib/components/image.js +47 -5
- package/lib/components/image.js.map +1 -1
- package/lib/components/index.js +6 -6
- package/lib/components/markdown.js +1 -1
- package/lib/components/multichannel/multichannel-utils.js +8 -6
- package/lib/components/multichannel/multichannel-utils.js.map +1 -1
- package/lib/components/timestamps.js +1 -1
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/dev-app.js +7 -6
- package/lib/dev-app.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +20 -20
- package/lib/message-utils.js +1 -1
- package/lib/util/dom.js +8 -2
- package/lib/util/dom.js.map +1 -1
- package/lib/util/environment.js +1 -1
- package/lib/util/objects.js +1 -1
- package/lib/util/react.js +1 -1
- package/lib/util/webchat.js +1 -1
- package/lib/webchat/actions.js +5 -1
- package/lib/webchat/actions.js.map +1 -1
- package/lib/webchat/devices/device-adapter.js +14 -4
- package/lib/webchat/devices/device-adapter.js.map +1 -1
- package/lib/webchat/devices/scrollbar-controller.js +5 -3
- package/lib/webchat/devices/scrollbar-controller.js.map +1 -1
- package/lib/webchat/header.js +1 -1
- package/lib/webchat/hooks.js +25 -6
- package/lib/webchat/hooks.js.map +1 -1
- package/lib/webchat/index.js +1 -1
- package/lib/webchat/webchat-reducer.js +11 -0
- package/lib/webchat/webchat-reducer.js.map +1 -1
- package/lib/webchat/webchat.js +21 -4
- package/lib/webchat/webchat.js.map +1 -1
- package/lib/webchat/webview.js +1 -1
- package/lib/webchat-app.js +20 -9
- package/lib/webchat-app.js.map +1 -1
- package/package.json +6 -6
- package/src/components/button.jsx +2 -0
- package/src/dev-app.jsx +8 -3
- package/src/experimental/components/message.jsx +8 -2
- package/src/experimental/constants.js +189 -0
- package/src/experimental/contexts.jsx +36 -0
- package/src/experimental/dev-app.jsx +14 -7
- package/src/experimental/index.js +94 -25
- package/src/experimental/msg-to-botonic.jsx +8 -8
- package/src/experimental/react-bot.jsx +1 -1
- package/src/experimental/util/dom.js +55 -0
- package/src/experimental/util/objects.js +39 -0
- package/src/experimental/util/webchat.js +61 -0
- package/src/experimental/webchat/actions.jsx +24 -0
- package/src/experimental/webchat/hooks.js +296 -0
- package/src/experimental/webchat/messages-reducer.js +86 -0
- package/src/experimental/webchat/session-view.jsx +166 -0
- package/src/experimental/webchat/webchat-dev.jsx +23 -19
- package/src/experimental/webchat/webchat-reducer.js +68 -0
- package/src/experimental/webchat/webchat.jsx +109 -82
- package/src/experimental/webchat-app.jsx +39 -15
- package/src/index.d.ts +1 -0
- package/src/util/dom.js +5 -3
- package/src/webchat/actions.jsx +1 -0
- package/src/webchat/devices/device-adapter.js +16 -4
- package/src/webchat/devices/scrollbar-controller.js +9 -4
- package/src/webchat/hooks.js +10 -0
- package/src/webchat/webchat-reducer.js +3 -0
- package/src/webchat/webchat.jsx +2 -1
- package/src/webchat-app.jsx +6 -4
- package/lib/experimental/components/audio.js +0 -46
- package/lib/experimental/components/audio.js.map +0 -1
- package/lib/experimental/components/carousel.js +0 -194
- package/lib/experimental/components/carousel.js.map +0 -1
- package/lib/experimental/components/custom-message.js +0 -132
- package/lib/experimental/components/custom-message.js.map +0 -1
- package/lib/experimental/components/document.js +0 -69
- package/lib/experimental/components/document.js.map +0 -1
- package/lib/experimental/components/image.js +0 -47
- package/lib/experimental/components/image.js.map +0 -1
- package/lib/experimental/components/index.js +0 -184
- package/lib/experimental/components/index.js.map +0 -1
- package/lib/experimental/components/location.js +0 -54
- package/lib/experimental/components/location.js.map +0 -1
- package/lib/experimental/components/markdown.js +0 -103
- package/lib/experimental/components/markdown.js.map +0 -1
- package/lib/experimental/components/message.js +0 -353
- package/lib/experimental/components/message.js.map +0 -1
- package/lib/experimental/components/text.js +0 -80
- package/lib/experimental/components/text.js.map +0 -1
- package/lib/experimental/components/video.js +0 -49
- package/lib/experimental/components/video.js.map +0 -1
- package/lib/experimental/components/whatsapp-template.js +0 -53
- package/lib/experimental/components/whatsapp-template.js.map +0 -1
- package/lib/experimental/dev-app.js +0 -240
- package/lib/experimental/dev-app.js.map +0 -1
- package/lib/experimental/index.js +0 -748
- package/lib/experimental/index.js.map +0 -1
- package/lib/experimental/msg-to-botonic.js +0 -162
- package/lib/experimental/msg-to-botonic.js.map +0 -1
- package/lib/experimental/node-app.js +0 -97
- package/lib/experimental/node-app.js.map +0 -1
- package/lib/experimental/react-bot.js +0 -167
- package/lib/experimental/react-bot.js.map +0 -1
- package/lib/experimental/webchat/assets/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/lib/experimental/webchat/assets/botonic-logo-white.svg +0 -16
- package/lib/experimental/webchat/assets/messenger.svg +0 -10
- package/lib/experimental/webchat/assets/open-new-window.svg +0 -3
- package/lib/experimental/webchat/assets/open.svg +0 -3
- package/lib/experimental/webchat/assets/telegram.svg +0 -10
- package/lib/experimental/webchat/assets/webchat.svg +0 -21
- package/lib/experimental/webchat/assets/whatsapp.svg +0 -4
- package/lib/experimental/webchat/webchat-dev.js +0 -300
- package/lib/experimental/webchat/webchat-dev.js.map +0 -1
- package/lib/experimental/webchat/webchat.js +0 -1044
- package/lib/experimental/webchat/webchat.js.map +0 -1
- package/lib/experimental/webchat-app.js +0 -635
- package/lib/experimental/webchat-app.js.map +0 -1
|
@@ -1,1044 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.Webchat = exports.getParsedAction = void 0;
|
|
11
|
-
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
-
|
|
16
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
19
|
-
|
|
20
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
21
|
-
|
|
22
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
23
|
-
|
|
24
|
-
var _core = require("@botonic/core");
|
|
25
|
-
|
|
26
|
-
var _framerMotion = require("framer-motion");
|
|
27
|
-
|
|
28
|
-
var _lodash = _interopRequireDefault(require("lodash.merge"));
|
|
29
|
-
|
|
30
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
31
|
-
|
|
32
|
-
var _reactTextareaAutosize = _interopRequireDefault(require("react-textarea-autosize"));
|
|
33
|
-
|
|
34
|
-
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
35
|
-
|
|
36
|
-
var _useAsyncEffect = require("use-async-effect");
|
|
37
|
-
|
|
38
|
-
var _uuid = require("uuid");
|
|
39
|
-
|
|
40
|
-
var _handoff = require("../../components/handoff");
|
|
41
|
-
|
|
42
|
-
var _webchatSettings = require("../../components/webchat-settings");
|
|
43
|
-
|
|
44
|
-
var _constants = require("../../constants");
|
|
45
|
-
|
|
46
|
-
var _contexts = require("../../contexts");
|
|
47
|
-
|
|
48
|
-
var _messageUtils = require("../../message-utils");
|
|
49
|
-
|
|
50
|
-
var _dom = require("../../util/dom");
|
|
51
|
-
|
|
52
|
-
var _environment = require("../../util/environment");
|
|
53
|
-
|
|
54
|
-
var _react2 = require("../../util/react");
|
|
55
|
-
|
|
56
|
-
var _regexs = require("../../util/regexs");
|
|
57
|
-
|
|
58
|
-
var _webchat = require("../../util/webchat");
|
|
59
|
-
|
|
60
|
-
var _attachment = require("../../webchat/components/attachment");
|
|
61
|
-
|
|
62
|
-
var _emojiPicker = require("../../webchat/components/emoji-picker");
|
|
63
|
-
|
|
64
|
-
var _persistentMenu = require("../../webchat/components/persistent-menu");
|
|
65
|
-
|
|
66
|
-
var _sendButton = require("../../webchat/components/send-button");
|
|
67
|
-
|
|
68
|
-
var _typingIndicator = require("../../webchat/components/typing-indicator");
|
|
69
|
-
|
|
70
|
-
var _deviceAdapter = require("../../webchat/devices/device-adapter");
|
|
71
|
-
|
|
72
|
-
var _header = require("../../webchat/header");
|
|
73
|
-
|
|
74
|
-
var _hooks = require("../../webchat/hooks");
|
|
75
|
-
|
|
76
|
-
var _messageList = require("../../webchat/message-list");
|
|
77
|
-
|
|
78
|
-
var _replies = require("../../webchat/replies");
|
|
79
|
-
|
|
80
|
-
var _useStorageStateHook = require("../../webchat/use-storage-state-hook");
|
|
81
|
-
|
|
82
|
-
var _webview = require("../../webchat/webview");
|
|
83
|
-
|
|
84
|
-
var _components = require("../components");
|
|
85
|
-
|
|
86
|
-
var _text = require("../components/text");
|
|
87
|
-
|
|
88
|
-
var _msgToBotonic = require("../msg-to-botonic");
|
|
89
|
-
|
|
90
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
91
|
-
|
|
92
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
93
|
-
|
|
94
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
95
|
-
|
|
96
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
97
|
-
|
|
98
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
99
|
-
|
|
100
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
101
|
-
|
|
102
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
103
|
-
|
|
104
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
105
|
-
|
|
106
|
-
var getParsedAction = function getParsedAction(botonicAction) {
|
|
107
|
-
var splittedAction = botonicAction.split('create_case:');
|
|
108
|
-
if (splittedAction.length <= 1) return undefined;
|
|
109
|
-
return JSON.parse(splittedAction[1]);
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
exports.getParsedAction = getParsedAction;
|
|
113
|
-
|
|
114
|
-
var StyledWebchat = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n right: 20px;\n bottom: 20px;\n width: ", "px;\n height: ", "px;\n margin: auto;\n background-color: ", ";\n border-radius: 10px;\n box-shadow: ", " 0px 0px 12px;\n display: flex;\n flex-direction: column;\n"])), function (props) {
|
|
115
|
-
return props.width;
|
|
116
|
-
}, function (props) {
|
|
117
|
-
return props.height;
|
|
118
|
-
}, _constants.COLORS.SOLID_WHITE, _constants.COLORS.SOLID_BLACK_ALPHA_0_2);
|
|
119
|
-
|
|
120
|
-
var StyledTriggerButton = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n position: fixed;\n background: ", ";\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: 65px;\n height: 65px;\n bottom: 20px;\n right: 10px;\n padding: 8px;\n"])), _constants.COLORS.SOLID_WHITE);
|
|
121
|
-
|
|
122
|
-
var UserInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 52px;\n display: flex;\n position: relative;\n border-top: 1px solid ", ";\n"])), _constants.COLORS.SOLID_BLACK_ALPHA_0_5);
|
|
123
|
-
|
|
124
|
-
var TextAreaContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n"])));
|
|
125
|
-
|
|
126
|
-
var FeaturesWrapper = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n"])));
|
|
127
|
-
|
|
128
|
-
var TriggerImage = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n max-width: 100%;\n max-height: 100%;\n"])));
|
|
129
|
-
|
|
130
|
-
var ErrorMessageContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: flex;\n z-index: 1;\n justify-content: center;\n width: 100%;\n"])));
|
|
131
|
-
|
|
132
|
-
var ErrorMessage = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 10px;\n font-size: 14px;\n line-height: 20px;\n padding: 4px 11px;\n display: flex;\n background-color: ", ";\n color: ", ";\n border-radius: 5px;\n align-items: center;\n justify-content: center;\n font-family: ", ";\n"])), _constants.COLORS.ERROR_RED, _constants.COLORS.CONCRETE_WHITE, _constants.WEBCHAT.DEFAULTS.FONT_FAMILY);
|
|
133
|
-
|
|
134
|
-
var DarkBackgroundMenu = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n background: ", ";\n opacity: 0.3;\n z-index: 1;\n right: 0;\n bottom: 0;\n border-radius: 10px;\n position: absolute;\n width: 100%;\n height: 100%;\n"])), _constants.COLORS.SOLID_BLACK); // eslint-disable-next-line complexity
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var Webchat = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
138
|
-
var _ref = props.webchatHooks || (0, _hooks.useWebchat)(),
|
|
139
|
-
webchatState = _ref.webchatState,
|
|
140
|
-
addMessage = _ref.addMessage,
|
|
141
|
-
addMessageComponent = _ref.addMessageComponent,
|
|
142
|
-
updateMessage = _ref.updateMessage,
|
|
143
|
-
updateReplies = _ref.updateReplies,
|
|
144
|
-
updateLatestInput = _ref.updateLatestInput,
|
|
145
|
-
updateTyping = _ref.updateTyping,
|
|
146
|
-
updateWebview = _ref.updateWebview,
|
|
147
|
-
updateSession = _ref.updateSession,
|
|
148
|
-
updateLastRoutePath = _ref.updateLastRoutePath,
|
|
149
|
-
updateHandoff = _ref.updateHandoff,
|
|
150
|
-
updateTheme = _ref.updateTheme,
|
|
151
|
-
updateDevSettings = _ref.updateDevSettings,
|
|
152
|
-
_toggleWebchat = _ref.toggleWebchat,
|
|
153
|
-
toggleEmojiPicker = _ref.toggleEmojiPicker,
|
|
154
|
-
togglePersistentMenu = _ref.togglePersistentMenu,
|
|
155
|
-
_toggleCoverComponent = _ref.toggleCoverComponent,
|
|
156
|
-
setError = _ref.setError,
|
|
157
|
-
setOnline = _ref.setOnline,
|
|
158
|
-
_clearMessages = _ref.clearMessages,
|
|
159
|
-
openWebviewT = _ref.openWebviewT,
|
|
160
|
-
closeWebviewT = _ref.closeWebviewT,
|
|
161
|
-
updateLastMessageDate = _ref.updateLastMessageDate,
|
|
162
|
-
setCurrentAttachment = _ref.setCurrentAttachment;
|
|
163
|
-
|
|
164
|
-
var firstUpdate = (0, _react.useRef)(true);
|
|
165
|
-
|
|
166
|
-
var isOnline = function isOnline() {
|
|
167
|
-
return webchatState.online;
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
var currentDateString = function currentDateString() {
|
|
171
|
-
return new Date().toISOString();
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
var theme = (0, _lodash["default"])(webchatState.theme, props.theme);
|
|
175
|
-
var initialSession = props.initialSession,
|
|
176
|
-
initialDevSettings = props.initialDevSettings,
|
|
177
|
-
onStateChange = props.onStateChange;
|
|
178
|
-
var getThemeProperty = (0, _webchat._getThemeProperty)(theme);
|
|
179
|
-
var storage = props.storage === undefined ? localStorage : props.storage;
|
|
180
|
-
var storageKey = typeof props.storageKey === 'function' ? props.storageKey() : props.storageKey;
|
|
181
|
-
|
|
182
|
-
var _useStorageState = (0, _useStorageStateHook.useStorageState)(storage, storageKey || _constants.WEBCHAT.DEFAULTS.STORAGE_KEY),
|
|
183
|
-
_useStorageState2 = (0, _slicedToArray2["default"])(_useStorageState, 2),
|
|
184
|
-
botonicState = _useStorageState2[0],
|
|
185
|
-
saveState = _useStorageState2[1];
|
|
186
|
-
|
|
187
|
-
var host = props.host || document.body;
|
|
188
|
-
|
|
189
|
-
var saveWebchatState = function saveWebchatState(webchatState) {
|
|
190
|
-
storage && saveState(JSON.parse((0, _regexs.stringifyWithRegexs)({
|
|
191
|
-
messages: webchatState.messagesJSON,
|
|
192
|
-
session: webchatState.session,
|
|
193
|
-
lastRoutePath: webchatState.lastRoutePath,
|
|
194
|
-
devSettings: webchatState.devSettings,
|
|
195
|
-
lastMessageUpdate: webchatState.lastMessageUpdate,
|
|
196
|
-
themeUpdates: webchatState.themeUpdates
|
|
197
|
-
})));
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
var deviceAdapter = new _deviceAdapter.DeviceAdapter();
|
|
201
|
-
|
|
202
|
-
var handleAttachment = function handleAttachment(event) {
|
|
203
|
-
if (!(0, _messageUtils.isAllowedSize)(event.target.files[0].size)) {
|
|
204
|
-
throw new Error("The file is too large. A maximum of ".concat(_constants.MAX_ALLOWED_SIZE_MB, "MB is allowed."));
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
setCurrentAttachment({
|
|
208
|
-
fileName: event.target.files[0].name,
|
|
209
|
-
file: event.target.files[0],
|
|
210
|
-
// TODO: Attach more files?
|
|
211
|
-
attachmentType: (0, _messageUtils.getMediaType)(event.target.files[0].type)
|
|
212
|
-
});
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
(0, _react.useEffect)(function () {
|
|
216
|
-
if (webchatState.currentAttachment) sendAttachment(webchatState.currentAttachment);
|
|
217
|
-
}, [webchatState.currentAttachment]);
|
|
218
|
-
|
|
219
|
-
var sendUserInput = /*#__PURE__*/function () {
|
|
220
|
-
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(input) {
|
|
221
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
222
|
-
while (1) {
|
|
223
|
-
switch (_context.prev = _context.next) {
|
|
224
|
-
case 0:
|
|
225
|
-
props.onUserInput && props.onUserInput({
|
|
226
|
-
user: webchatState.session.user,
|
|
227
|
-
input: input,
|
|
228
|
-
session: webchatState.session,
|
|
229
|
-
lastRoutePath: webchatState.lastRoutePath
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
case 1:
|
|
233
|
-
case "end":
|
|
234
|
-
return _context.stop();
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}, _callee);
|
|
238
|
-
}));
|
|
239
|
-
|
|
240
|
-
return function sendUserInput(_x) {
|
|
241
|
-
return _ref2.apply(this, arguments);
|
|
242
|
-
};
|
|
243
|
-
}(); // Load styles stored in window._botonicInsertStyles by Webpack
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
(0, _hooks.useComponentWillMount)(function () {
|
|
247
|
-
if (window._botonicInsertStyles && window._botonicInsertStyles.length) {
|
|
248
|
-
var _iterator = _createForOfIteratorHelper(window._botonicInsertStyles),
|
|
249
|
-
_step;
|
|
250
|
-
|
|
251
|
-
try {
|
|
252
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
253
|
-
var botonicStyle = _step.value;
|
|
254
|
-
// Injecting styles at head is needed even if we use shadowDOM
|
|
255
|
-
// as some dependencies like simplebar rely on creating ephemeral elements
|
|
256
|
-
// on document.body and assume styles will be available globally
|
|
257
|
-
document.head.appendChild(botonicStyle); // injecting styles in host node too so that shadowDOM works
|
|
258
|
-
|
|
259
|
-
if (props.shadowDOM) host.appendChild(botonicStyle.cloneNode(true));
|
|
260
|
-
}
|
|
261
|
-
} catch (err) {
|
|
262
|
-
_iterator.e(err);
|
|
263
|
-
} finally {
|
|
264
|
-
_iterator.f();
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
delete window._botonicInsertStyles;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
if (props.shadowDOM) {
|
|
271
|
-
// emoji-picker-react injects styles in head, so we need to
|
|
272
|
-
// re-inject them in our host node to make it work with shadowDOM
|
|
273
|
-
var _iterator2 = _createForOfIteratorHelper(document.querySelectorAll('style')),
|
|
274
|
-
_step2;
|
|
275
|
-
|
|
276
|
-
try {
|
|
277
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
278
|
-
var style = _step2.value;
|
|
279
|
-
if (style.textContent && style.textContent.includes('emoji-picker-react')) host.appendChild(style.cloneNode(true));
|
|
280
|
-
}
|
|
281
|
-
} catch (err) {
|
|
282
|
-
_iterator2.e(err);
|
|
283
|
-
} finally {
|
|
284
|
-
_iterator2.f();
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}); // Load initial state from storage
|
|
288
|
-
|
|
289
|
-
(0, _react.useEffect)(function () {
|
|
290
|
-
var _ref3 = botonicState || {},
|
|
291
|
-
messages = _ref3.messages,
|
|
292
|
-
session = _ref3.session,
|
|
293
|
-
lastRoutePath = _ref3.lastRoutePath,
|
|
294
|
-
devSettings = _ref3.devSettings,
|
|
295
|
-
lastMessageUpdate = _ref3.lastMessageUpdate,
|
|
296
|
-
themeUpdates = _ref3.themeUpdates;
|
|
297
|
-
|
|
298
|
-
session = (0, _webchat.initSession)(session);
|
|
299
|
-
updateSession(session);
|
|
300
|
-
|
|
301
|
-
if ((0, _webchat.shouldKeepSessionOnReload)({
|
|
302
|
-
initialDevSettings: initialDevSettings,
|
|
303
|
-
devSettings: devSettings
|
|
304
|
-
})) {
|
|
305
|
-
if (messages) {
|
|
306
|
-
messages.forEach(function (m) {
|
|
307
|
-
addMessage(m);
|
|
308
|
-
var newComponent = (0, _msgToBotonic.msgToBotonic)(_objectSpread(_objectSpread({}, m), {}, {
|
|
309
|
-
delay: 0,
|
|
310
|
-
typing: 0
|
|
311
|
-
}), props.theme.message && props.theme.message.customTypes || props.theme.customMessageTypes);
|
|
312
|
-
if (newComponent) addMessageComponent(newComponent);
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
if (initialSession) updateSession((0, _lodash["default"])(initialSession, session));
|
|
317
|
-
if (lastRoutePath) updateLastRoutePath(lastRoutePath);
|
|
318
|
-
} else updateSession((0, _lodash["default"])(initialSession, session));
|
|
319
|
-
|
|
320
|
-
if (devSettings) updateDevSettings(devSettings);else if (initialDevSettings) updateDevSettings(initialDevSettings);
|
|
321
|
-
if (lastMessageUpdate) updateLastMessageDate(lastMessageUpdate);
|
|
322
|
-
if (themeUpdates !== undefined) updateTheme((0, _lodash["default"])(props.theme, themeUpdates), themeUpdates);
|
|
323
|
-
if (props.onInit) setTimeout(function () {
|
|
324
|
-
return props.onInit();
|
|
325
|
-
}, 100);
|
|
326
|
-
}, []);
|
|
327
|
-
(0, _react.useEffect)(function () {
|
|
328
|
-
if (!webchatState.isWebchatOpen) return;
|
|
329
|
-
deviceAdapter.init(host);
|
|
330
|
-
(0, _dom.scrollToBottom)({
|
|
331
|
-
behavior: 'auto',
|
|
332
|
-
host: host
|
|
333
|
-
});
|
|
334
|
-
}, [webchatState.isWebchatOpen]);
|
|
335
|
-
(0, _react.useEffect)(function () {
|
|
336
|
-
if (onStateChange && typeof onStateChange === 'function') onStateChange(webchatState);
|
|
337
|
-
saveWebchatState(webchatState);
|
|
338
|
-
}, [webchatState.messagesJSON, webchatState.session, webchatState.lastRoutePath, webchatState.devSettings, webchatState.lastMessageUpdate]);
|
|
339
|
-
(0, _useAsyncEffect.useAsyncEffect)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
340
|
-
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
341
|
-
while (1) {
|
|
342
|
-
switch (_context2.prev = _context2.next) {
|
|
343
|
-
case 0:
|
|
344
|
-
if (!webchatState.online) {
|
|
345
|
-
setError({
|
|
346
|
-
message: (0, _webchat.getServerErrorMessage)(props.server)
|
|
347
|
-
});
|
|
348
|
-
} else {
|
|
349
|
-
if (!firstUpdate.current) {
|
|
350
|
-
setError(undefined);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
case 1:
|
|
355
|
-
case "end":
|
|
356
|
-
return _context2.stop();
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}, _callee2);
|
|
360
|
-
})), [webchatState.online]);
|
|
361
|
-
(0, _hooks.useTyping)({
|
|
362
|
-
webchatState: webchatState,
|
|
363
|
-
updateTyping: updateTyping,
|
|
364
|
-
updateMessage: updateMessage,
|
|
365
|
-
host: host
|
|
366
|
-
});
|
|
367
|
-
(0, _react.useEffect)(function () {
|
|
368
|
-
updateTheme((0, _lodash["default"])(props.theme, theme, webchatState.themeUpdates));
|
|
369
|
-
}, [props.theme, webchatState.themeUpdates]);
|
|
370
|
-
|
|
371
|
-
var openWebview = function openWebview(webviewComponent, params) {
|
|
372
|
-
return updateWebview(webviewComponent, params);
|
|
373
|
-
};
|
|
374
|
-
|
|
375
|
-
var handleSelectedEmoji = function handleSelectedEmoji(event, emojiObject) {
|
|
376
|
-
textArea.current.value += emojiObject.emoji;
|
|
377
|
-
textArea.current.focus();
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
var closeWebview = function closeWebview(options) {
|
|
381
|
-
updateWebview();
|
|
382
|
-
|
|
383
|
-
if (userInputEnabled) {
|
|
384
|
-
textArea.current.focus();
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
if (options && options.payload) {
|
|
388
|
-
sendPayload(options.payload);
|
|
389
|
-
} else if (options && options.path) {
|
|
390
|
-
var params = '';
|
|
391
|
-
if (options.params) params = (0, _core.params2queryString)(options.params);
|
|
392
|
-
sendPayload("__PATH_PAYLOAD__".concat(options.path, "?").concat(params));
|
|
393
|
-
}
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
var handleMenu = function handleMenu() {
|
|
397
|
-
togglePersistentMenu(!webchatState.isPersistentMenuOpen);
|
|
398
|
-
};
|
|
399
|
-
|
|
400
|
-
var handleEmojiClick = function handleEmojiClick() {
|
|
401
|
-
toggleEmojiPicker(!webchatState.isEmojiPickerOpen);
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
var animationsEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableAnimations, props.enableAnimations !== undefined ? props.enableAnimations : true);
|
|
405
|
-
var persistentMenuOptions = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.persistentMenu, props.persistentMenu);
|
|
406
|
-
var darkBackgroundMenu = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu, false);
|
|
407
|
-
|
|
408
|
-
var getBlockInputs = function getBlockInputs(rule, inputData) {
|
|
409
|
-
return rule.match.some(function (regex) {
|
|
410
|
-
if (typeof regex === 'string') regex = (0, _regexs.deserializeRegex)(regex);
|
|
411
|
-
return regex.test(inputData);
|
|
412
|
-
});
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
var checkBlockInput = function checkBlockInput(input) {
|
|
416
|
-
// if is a text we check if it is a serialized RE
|
|
417
|
-
var blockInputs = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.blockInputs, props.blockInputs);
|
|
418
|
-
if (!Array.isArray(blockInputs)) return false;
|
|
419
|
-
|
|
420
|
-
var _iterator3 = _createForOfIteratorHelper(blockInputs),
|
|
421
|
-
_step3;
|
|
422
|
-
|
|
423
|
-
try {
|
|
424
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
425
|
-
var rule = _step3.value;
|
|
426
|
-
|
|
427
|
-
if (getBlockInputs(rule, input.data)) {
|
|
428
|
-
addMessageComponent( /*#__PURE__*/_react["default"].createElement(_text.Text, {
|
|
429
|
-
id: input.id,
|
|
430
|
-
from: _constants.SENDERS.user,
|
|
431
|
-
blob: false,
|
|
432
|
-
style: {
|
|
433
|
-
backgroundColor: _constants.COLORS.SCORPION_GRAY,
|
|
434
|
-
borderColor: _constants.COLORS.SCORPION_GRAY,
|
|
435
|
-
padding: '8px 12px'
|
|
436
|
-
}
|
|
437
|
-
}, rule.message));
|
|
438
|
-
updateReplies(false);
|
|
439
|
-
return true;
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
} catch (err) {
|
|
443
|
-
_iterator3.e(err);
|
|
444
|
-
} finally {
|
|
445
|
-
_iterator3.f();
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
return false;
|
|
449
|
-
};
|
|
450
|
-
|
|
451
|
-
var closeMenu = function closeMenu() {
|
|
452
|
-
togglePersistentMenu(false);
|
|
453
|
-
};
|
|
454
|
-
|
|
455
|
-
var persistentMenu = function persistentMenu() {
|
|
456
|
-
return /*#__PURE__*/_react["default"].createElement(_persistentMenu.OpenedPersistentMenu, {
|
|
457
|
-
onClick: closeMenu,
|
|
458
|
-
options: persistentMenuOptions,
|
|
459
|
-
borderRadius: webchatState.theme.style.borderRadius || '10px'
|
|
460
|
-
});
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
var getCoverComponent = function getCoverComponent() {
|
|
464
|
-
return getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.coverComponent, props.coverComponent && (props.coverComponent.component || props.coverComponent));
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
var CoverComponent = getCoverComponent();
|
|
468
|
-
|
|
469
|
-
var closeCoverComponent = function closeCoverComponent() {
|
|
470
|
-
_toggleCoverComponent(false);
|
|
471
|
-
};
|
|
472
|
-
|
|
473
|
-
(0, _react.useEffect)(function () {
|
|
474
|
-
if (!CoverComponent) return;
|
|
475
|
-
if (!botonicState || botonicState.messages && botonicState.messages.length == 0) _toggleCoverComponent(true);
|
|
476
|
-
}, []);
|
|
477
|
-
|
|
478
|
-
var coverComponent = function coverComponent() {
|
|
479
|
-
var coverComponentProps = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.coverComponentProps, props.coverComponent && props.coverComponent.props);
|
|
480
|
-
if (CoverComponent && webchatState.isCoverComponentOpen) return /*#__PURE__*/_react["default"].createElement(CoverComponent, (0, _extends2["default"])({
|
|
481
|
-
closeComponent: closeCoverComponent
|
|
482
|
-
}, coverComponentProps));
|
|
483
|
-
return null;
|
|
484
|
-
};
|
|
485
|
-
|
|
486
|
-
var messageComponentFromInput = function messageComponentFromInput(input) {
|
|
487
|
-
var messageComponent = null;
|
|
488
|
-
|
|
489
|
-
if ((0, _messageUtils.isText)(input)) {
|
|
490
|
-
messageComponent = /*#__PURE__*/_react["default"].createElement(_text.Text, {
|
|
491
|
-
id: input.id,
|
|
492
|
-
payload: input.payload,
|
|
493
|
-
from: _constants.SENDERS.user
|
|
494
|
-
}, input.data);
|
|
495
|
-
} else if ((0, _messageUtils.isMedia)(input)) {
|
|
496
|
-
var temporaryDisplayUrl = URL.createObjectURL(input.data);
|
|
497
|
-
var mediaProps = {
|
|
498
|
-
id: input.id,
|
|
499
|
-
from: _constants.SENDERS.user,
|
|
500
|
-
src: temporaryDisplayUrl
|
|
501
|
-
};
|
|
502
|
-
if ((0, _messageUtils.isImage)(input)) messageComponent = /*#__PURE__*/_react["default"].createElement(_components.Image, mediaProps);else if ((0, _messageUtils.isAudio)(input)) messageComponent = /*#__PURE__*/_react["default"].createElement(_components.Audio, mediaProps);else if ((0, _messageUtils.isVideo)(input)) messageComponent = /*#__PURE__*/_react["default"].createElement(_components.Video, mediaProps);else if ((0, _messageUtils.isDocument)(input)) messageComponent = /*#__PURE__*/_react["default"].createElement(_components.Document, mediaProps);
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
return messageComponent;
|
|
506
|
-
};
|
|
507
|
-
|
|
508
|
-
var sendInput = /*#__PURE__*/function () {
|
|
509
|
-
var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(input) {
|
|
510
|
-
var messageComponent;
|
|
511
|
-
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
512
|
-
while (1) {
|
|
513
|
-
switch (_context3.prev = _context3.next) {
|
|
514
|
-
case 0:
|
|
515
|
-
if (!(!input || Object.keys(input).length == 0)) {
|
|
516
|
-
_context3.next = 2;
|
|
517
|
-
break;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
return _context3.abrupt("return");
|
|
521
|
-
|
|
522
|
-
case 2:
|
|
523
|
-
if (!((0, _messageUtils.isText)(input) && (!input.data || !input.data.trim()))) {
|
|
524
|
-
_context3.next = 4;
|
|
525
|
-
break;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
return _context3.abrupt("return");
|
|
529
|
-
|
|
530
|
-
case 4:
|
|
531
|
-
if (!((0, _messageUtils.isText)(input) && checkBlockInput(input))) {
|
|
532
|
-
_context3.next = 6;
|
|
533
|
-
break;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
return _context3.abrupt("return");
|
|
537
|
-
|
|
538
|
-
case 6:
|
|
539
|
-
if (!input.id) input.id = (0, _uuid.v4)();
|
|
540
|
-
messageComponent = messageComponentFromInput(input);
|
|
541
|
-
if (messageComponent) addMessageComponent(messageComponent);
|
|
542
|
-
|
|
543
|
-
if (!(0, _messageUtils.isMedia)(input)) {
|
|
544
|
-
_context3.next = 13;
|
|
545
|
-
break;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
_context3.next = 12;
|
|
549
|
-
return (0, _messageUtils.readDataURL)(input.data);
|
|
550
|
-
|
|
551
|
-
case 12:
|
|
552
|
-
input.data = _context3.sent;
|
|
553
|
-
|
|
554
|
-
case 13:
|
|
555
|
-
sendUserInput(input);
|
|
556
|
-
updateLatestInput(input);
|
|
557
|
-
isOnline() && updateLastMessageDate(currentDateString());
|
|
558
|
-
updateReplies(false);
|
|
559
|
-
togglePersistentMenu(false);
|
|
560
|
-
toggleEmojiPicker(false);
|
|
561
|
-
|
|
562
|
-
case 19:
|
|
563
|
-
case "end":
|
|
564
|
-
return _context3.stop();
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}, _callee3);
|
|
568
|
-
}));
|
|
569
|
-
|
|
570
|
-
return function sendInput(_x2) {
|
|
571
|
-
return _ref5.apply(this, arguments);
|
|
572
|
-
};
|
|
573
|
-
}();
|
|
574
|
-
/* This is the public API this component exposes to its parents
|
|
575
|
-
https://stackoverflow.com/questions/37949981/call-child-method-from-parent
|
|
576
|
-
*/
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
var updateSessionWithUser = function updateSessionWithUser(userToUpdate) {
|
|
580
|
-
return updateSession((0, _lodash["default"])(webchatState.session, {
|
|
581
|
-
user: userToUpdate
|
|
582
|
-
}));
|
|
583
|
-
};
|
|
584
|
-
|
|
585
|
-
(0, _react.useImperativeHandle)(ref, function () {
|
|
586
|
-
return {
|
|
587
|
-
addBotResponse: function addBotResponse(_ref6) {
|
|
588
|
-
var response = _ref6.response,
|
|
589
|
-
session = _ref6.session,
|
|
590
|
-
lastRoutePath = _ref6.lastRoutePath;
|
|
591
|
-
updateTyping(false);
|
|
592
|
-
if (Array.isArray(response)) response.map(function (r) {
|
|
593
|
-
return addMessageComponent(r);
|
|
594
|
-
});else if (response) addMessageComponent(response);
|
|
595
|
-
|
|
596
|
-
if (session) {
|
|
597
|
-
updateSession((0, _lodash["default"])(session, {
|
|
598
|
-
user: webchatState.session.user
|
|
599
|
-
}));
|
|
600
|
-
var action = session._botonic_action || '';
|
|
601
|
-
var handoff = action.startsWith('create_case');
|
|
602
|
-
if (handoff && _environment.isDev) addMessageComponent( /*#__PURE__*/_react["default"].createElement(_handoff.Handoff, null));
|
|
603
|
-
updateHandoff(handoff);
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
if (lastRoutePath) updateLastRoutePath(lastRoutePath);
|
|
607
|
-
updateLastMessageDate(currentDateString());
|
|
608
|
-
},
|
|
609
|
-
setTyping: function setTyping(typing) {
|
|
610
|
-
return updateTyping(typing);
|
|
611
|
-
},
|
|
612
|
-
addUserMessage: function addUserMessage(message) {
|
|
613
|
-
return sendInput(message);
|
|
614
|
-
},
|
|
615
|
-
updateUser: updateSessionWithUser,
|
|
616
|
-
openWebchat: function openWebchat() {
|
|
617
|
-
return _toggleWebchat(true);
|
|
618
|
-
},
|
|
619
|
-
closeWebchat: function closeWebchat() {
|
|
620
|
-
return _toggleWebchat(false);
|
|
621
|
-
},
|
|
622
|
-
toggleWebchat: function toggleWebchat() {
|
|
623
|
-
return _toggleWebchat(!webchatState.isWebchatOpen);
|
|
624
|
-
},
|
|
625
|
-
openCoverComponent: function openCoverComponent() {
|
|
626
|
-
return _toggleCoverComponent(true);
|
|
627
|
-
},
|
|
628
|
-
closeCoverComponent: function closeCoverComponent() {
|
|
629
|
-
return _toggleCoverComponent(false);
|
|
630
|
-
},
|
|
631
|
-
toggleCoverComponent: function toggleCoverComponent() {
|
|
632
|
-
return _toggleCoverComponent(!webchatState.isCoverComponentOpen);
|
|
633
|
-
},
|
|
634
|
-
openWebviewApi: function openWebviewApi(component) {
|
|
635
|
-
return openWebviewT(component);
|
|
636
|
-
},
|
|
637
|
-
setError: setError,
|
|
638
|
-
setOnline: setOnline,
|
|
639
|
-
getMessages: function getMessages() {
|
|
640
|
-
return webchatState.messagesJSON;
|
|
641
|
-
},
|
|
642
|
-
isOnline: isOnline,
|
|
643
|
-
clearMessages: function clearMessages() {
|
|
644
|
-
_clearMessages();
|
|
645
|
-
|
|
646
|
-
updateReplies(false);
|
|
647
|
-
},
|
|
648
|
-
getLastMessageUpdate: function getLastMessageUpdate() {
|
|
649
|
-
return webchatState.lastMessageUpdate;
|
|
650
|
-
},
|
|
651
|
-
updateMessageInfo: function updateMessageInfo(msgId, messageInfo) {
|
|
652
|
-
var messageToUpdate = webchatState.messagesJSON.filter(function (m) {
|
|
653
|
-
return m.id == msgId;
|
|
654
|
-
})[0];
|
|
655
|
-
var updatedMsg = (0, _lodash["default"])(messageToUpdate, messageInfo);
|
|
656
|
-
if (updatedMsg.ack === 1) delete updatedMsg.unsentInput;
|
|
657
|
-
updateMessage(updatedMsg);
|
|
658
|
-
},
|
|
659
|
-
updateWebchatSettings: function updateWebchatSettings(settings) {
|
|
660
|
-
var themeUpdates = (0, _webchatSettings.normalizeWebchatSettings)(settings);
|
|
661
|
-
updateTheme((0, _lodash["default"])(webchatState.theme, themeUpdates), themeUpdates);
|
|
662
|
-
}
|
|
663
|
-
};
|
|
664
|
-
});
|
|
665
|
-
|
|
666
|
-
var resolveCase = function resolveCase() {
|
|
667
|
-
updateHandoff(false);
|
|
668
|
-
updateSession(_objectSpread(_objectSpread({}, webchatState.session), {}, {
|
|
669
|
-
_botonic_action: null
|
|
670
|
-
}));
|
|
671
|
-
};
|
|
672
|
-
|
|
673
|
-
var prevSession = (0, _hooks.usePrevious)(webchatState.session);
|
|
674
|
-
(0, _react.useEffect)(function () {
|
|
675
|
-
// Resume conversation after handoff
|
|
676
|
-
if (prevSession && prevSession._botonic_action && !webchatState.session._botonic_action) {
|
|
677
|
-
var action = getParsedAction(prevSession._botonic_action);
|
|
678
|
-
if (action && action.on_finish) sendPayload(action.on_finish);
|
|
679
|
-
}
|
|
680
|
-
}, [webchatState.session._botonic_action]);
|
|
681
|
-
|
|
682
|
-
var sendText = /*#__PURE__*/function () {
|
|
683
|
-
var _ref7 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(text, payload) {
|
|
684
|
-
var input;
|
|
685
|
-
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
686
|
-
while (1) {
|
|
687
|
-
switch (_context4.prev = _context4.next) {
|
|
688
|
-
case 0:
|
|
689
|
-
if (text) {
|
|
690
|
-
_context4.next = 2;
|
|
691
|
-
break;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
return _context4.abrupt("return");
|
|
695
|
-
|
|
696
|
-
case 2:
|
|
697
|
-
input = {
|
|
698
|
-
type: _core.INPUT.TEXT,
|
|
699
|
-
data: text,
|
|
700
|
-
payload: payload
|
|
701
|
-
};
|
|
702
|
-
_context4.next = 5;
|
|
703
|
-
return sendInput(input);
|
|
704
|
-
|
|
705
|
-
case 5:
|
|
706
|
-
case "end":
|
|
707
|
-
return _context4.stop();
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
}, _callee4);
|
|
711
|
-
}));
|
|
712
|
-
|
|
713
|
-
return function sendText(_x3, _x4) {
|
|
714
|
-
return _ref7.apply(this, arguments);
|
|
715
|
-
};
|
|
716
|
-
}();
|
|
717
|
-
|
|
718
|
-
var sendPayload = /*#__PURE__*/function () {
|
|
719
|
-
var _ref8 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(payload) {
|
|
720
|
-
var input;
|
|
721
|
-
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
722
|
-
while (1) {
|
|
723
|
-
switch (_context5.prev = _context5.next) {
|
|
724
|
-
case 0:
|
|
725
|
-
if (payload) {
|
|
726
|
-
_context5.next = 2;
|
|
727
|
-
break;
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
return _context5.abrupt("return");
|
|
731
|
-
|
|
732
|
-
case 2:
|
|
733
|
-
input = {
|
|
734
|
-
type: _core.INPUT.POSTBACK,
|
|
735
|
-
payload: payload
|
|
736
|
-
};
|
|
737
|
-
_context5.next = 5;
|
|
738
|
-
return sendInput(input);
|
|
739
|
-
|
|
740
|
-
case 5:
|
|
741
|
-
case "end":
|
|
742
|
-
return _context5.stop();
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
}, _callee5);
|
|
746
|
-
}));
|
|
747
|
-
|
|
748
|
-
return function sendPayload(_x5) {
|
|
749
|
-
return _ref8.apply(this, arguments);
|
|
750
|
-
};
|
|
751
|
-
}();
|
|
752
|
-
|
|
753
|
-
var sendAttachment = /*#__PURE__*/function () {
|
|
754
|
-
var _ref9 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(attachment) {
|
|
755
|
-
var attachmentType, input;
|
|
756
|
-
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
757
|
-
while (1) {
|
|
758
|
-
switch (_context6.prev = _context6.next) {
|
|
759
|
-
case 0:
|
|
760
|
-
if (!attachment.file) {
|
|
761
|
-
_context6.next = 8;
|
|
762
|
-
break;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
attachmentType = (0, _messageUtils.getMediaType)(attachment.file.type);
|
|
766
|
-
|
|
767
|
-
if (attachmentType) {
|
|
768
|
-
_context6.next = 4;
|
|
769
|
-
break;
|
|
770
|
-
}
|
|
771
|
-
|
|
772
|
-
return _context6.abrupt("return");
|
|
773
|
-
|
|
774
|
-
case 4:
|
|
775
|
-
input = {
|
|
776
|
-
type: attachmentType,
|
|
777
|
-
data: attachment.file
|
|
778
|
-
};
|
|
779
|
-
_context6.next = 7;
|
|
780
|
-
return sendInput(input);
|
|
781
|
-
|
|
782
|
-
case 7:
|
|
783
|
-
setCurrentAttachment(undefined);
|
|
784
|
-
|
|
785
|
-
case 8:
|
|
786
|
-
case "end":
|
|
787
|
-
return _context6.stop();
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
}, _callee6);
|
|
791
|
-
}));
|
|
792
|
-
|
|
793
|
-
return function sendAttachment(_x6) {
|
|
794
|
-
return _ref9.apply(this, arguments);
|
|
795
|
-
};
|
|
796
|
-
}();
|
|
797
|
-
|
|
798
|
-
var sendTextAreaText = function sendTextAreaText() {
|
|
799
|
-
sendText(textArea.current.value);
|
|
800
|
-
textArea.current.value = '';
|
|
801
|
-
};
|
|
802
|
-
|
|
803
|
-
var _onKeyDown = function onKeyDown(event) {
|
|
804
|
-
if (event.keyCode == 13 && event.shiftKey == false) {
|
|
805
|
-
event.preventDefault();
|
|
806
|
-
sendTextAreaText();
|
|
807
|
-
}
|
|
808
|
-
};
|
|
809
|
-
|
|
810
|
-
var webviewRequestContext = {
|
|
811
|
-
getString: function getString(stringId) {
|
|
812
|
-
return props.getString(stringId, webchatState.session);
|
|
813
|
-
},
|
|
814
|
-
setLocale: function setLocale(locale) {
|
|
815
|
-
return props.getString(locale, webchatState.session);
|
|
816
|
-
},
|
|
817
|
-
session: webchatState.session || {},
|
|
818
|
-
params: webchatState.webviewParams || {},
|
|
819
|
-
closeWebview: closeWebview,
|
|
820
|
-
defaultDelay: props.defaultDelay || 0,
|
|
821
|
-
defaultTyping: props.defaultTyping || 0
|
|
822
|
-
};
|
|
823
|
-
(0, _react.useEffect)(function () {
|
|
824
|
-
if (firstUpdate.current) {
|
|
825
|
-
firstUpdate.current = false;
|
|
826
|
-
return;
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
if (webchatState.isWebchatOpen && props.onOpen) props.onOpen();
|
|
830
|
-
|
|
831
|
-
if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {
|
|
832
|
-
props.onClose();
|
|
833
|
-
toggleEmojiPicker(false);
|
|
834
|
-
togglePersistentMenu(false);
|
|
835
|
-
}
|
|
836
|
-
}, [webchatState.isWebchatOpen]);
|
|
837
|
-
var textArea = (0, _react.useRef)();
|
|
838
|
-
|
|
839
|
-
var getTriggerImage = function getTriggerImage() {
|
|
840
|
-
var triggerImage = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.triggerButtonImage, null);
|
|
841
|
-
|
|
842
|
-
if (triggerImage === null) {
|
|
843
|
-
webchatState.theme.triggerButtonImage = _constants.WEBCHAT.DEFAULTS.LOGO;
|
|
844
|
-
return null;
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
return triggerImage;
|
|
848
|
-
};
|
|
849
|
-
|
|
850
|
-
var triggerButtonStyle = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.triggerButtonStyle);
|
|
851
|
-
var CustomTriggerButton = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.customTrigger, undefined);
|
|
852
|
-
|
|
853
|
-
var triggerButton = function triggerButton() {
|
|
854
|
-
if (CustomTriggerButton) {
|
|
855
|
-
return /*#__PURE__*/_react["default"].createElement(CustomTriggerButton, null);
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
return /*#__PURE__*/_react["default"].createElement(StyledTriggerButton, {
|
|
859
|
-
role: _constants.ROLES.TRIGGER_BUTTON,
|
|
860
|
-
style: _objectSpread({}, triggerButtonStyle)
|
|
861
|
-
}, getTriggerImage() && /*#__PURE__*/_react["default"].createElement(TriggerImage, {
|
|
862
|
-
src: (0, _environment.resolveImage)(getTriggerImage())
|
|
863
|
-
}));
|
|
864
|
-
};
|
|
865
|
-
|
|
866
|
-
var webchatMessageList = function webchatMessageList() {
|
|
867
|
-
return /*#__PURE__*/_react["default"].createElement(_messageList.WebchatMessageList, {
|
|
868
|
-
style: {
|
|
869
|
-
flex: 1
|
|
870
|
-
}
|
|
871
|
-
}, webchatState.typing && /*#__PURE__*/_react["default"].createElement(_typingIndicator.TypingIndicator, null));
|
|
872
|
-
};
|
|
873
|
-
|
|
874
|
-
var webchatReplies = function webchatReplies() {
|
|
875
|
-
return /*#__PURE__*/_react["default"].createElement(_replies.WebchatReplies, {
|
|
876
|
-
replies: webchatState.replies
|
|
877
|
-
});
|
|
878
|
-
};
|
|
879
|
-
|
|
880
|
-
var isUserInputEnabled = function isUserInputEnabled() {
|
|
881
|
-
var isUserInputEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableUserInput, props.enableUserInput !== undefined ? props.enableUserInput : true);
|
|
882
|
-
return isUserInputEnabled && !webchatState.isCoverComponentOpen;
|
|
883
|
-
};
|
|
884
|
-
|
|
885
|
-
var userInputEnabled = isUserInputEnabled();
|
|
886
|
-
var emojiPickerEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableEmojiPicker, props.enableEmojiPicker);
|
|
887
|
-
var attachmentsEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableAttachments, props.enableAttachments);
|
|
888
|
-
var sendButtonEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableSendButton, true);
|
|
889
|
-
var CustomSendButton = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.customSendButton, undefined);
|
|
890
|
-
var CustomMenuButton = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.customMenuButton, undefined);
|
|
891
|
-
|
|
892
|
-
var ConditionalAnimation = function ConditionalAnimation(props) {
|
|
893
|
-
return /*#__PURE__*/_react["default"].createElement(_react2.ConditionalWrapper, {
|
|
894
|
-
condition: animationsEnabled,
|
|
895
|
-
wrapper: function wrapper(children) {
|
|
896
|
-
return /*#__PURE__*/_react["default"].createElement(_framerMotion.motion.div, {
|
|
897
|
-
whileHover: {
|
|
898
|
-
scale: 1.2
|
|
899
|
-
}
|
|
900
|
-
}, children);
|
|
901
|
-
}
|
|
902
|
-
}, props.children);
|
|
903
|
-
};
|
|
904
|
-
|
|
905
|
-
var userInputArea = function userInputArea() {
|
|
906
|
-
return userInputEnabled && /*#__PURE__*/_react["default"].createElement(UserInputContainer, {
|
|
907
|
-
style: _objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userInputStyle))
|
|
908
|
-
}, webchatState.isEmojiPickerOpen && /*#__PURE__*/_react["default"].createElement(_emojiPicker.OpenedEmojiPicker, {
|
|
909
|
-
height: webchatState.theme.style.height,
|
|
910
|
-
onEmojiClick: handleSelectedEmoji,
|
|
911
|
-
onClick: handleEmojiClick
|
|
912
|
-
}), persistentMenuOptions && /*#__PURE__*/_react["default"].createElement(FeaturesWrapper, null, /*#__PURE__*/_react["default"].createElement(ConditionalAnimation, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
913
|
-
onClick: handleMenu
|
|
914
|
-
}, CustomMenuButton ? /*#__PURE__*/_react["default"].createElement(CustomMenuButton, null) : /*#__PURE__*/_react["default"].createElement(_persistentMenu.PersistentMenu, null)))), /*#__PURE__*/_react["default"].createElement(TextAreaContainer, null, /*#__PURE__*/_react["default"].createElement(_reactTextareaAutosize["default"], {
|
|
915
|
-
name: "text",
|
|
916
|
-
onFocus: function onFocus() {
|
|
917
|
-
return deviceAdapter.onFocus(host);
|
|
918
|
-
},
|
|
919
|
-
onBlur: function onBlur() {
|
|
920
|
-
return deviceAdapter.onBlur();
|
|
921
|
-
},
|
|
922
|
-
maxRows: 4,
|
|
923
|
-
wrap: "soft",
|
|
924
|
-
maxLength: "1000",
|
|
925
|
-
placeholder: getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.textPlaceholder, _constants.WEBCHAT.DEFAULTS.PLACEHOLDER),
|
|
926
|
-
autoFocus: true,
|
|
927
|
-
inputRef: textArea,
|
|
928
|
-
onKeyDown: function onKeyDown(e) {
|
|
929
|
-
return _onKeyDown(e);
|
|
930
|
-
},
|
|
931
|
-
style: _objectSpread({
|
|
932
|
-
display: 'flex',
|
|
933
|
-
fontSize: deviceAdapter.fontSize(14),
|
|
934
|
-
width: '100%',
|
|
935
|
-
border: 'none',
|
|
936
|
-
resize: 'none',
|
|
937
|
-
overflow: 'auto',
|
|
938
|
-
outline: 'none',
|
|
939
|
-
flex: '1 1 auto',
|
|
940
|
-
padding: 10,
|
|
941
|
-
paddingLeft: persistentMenuOptions ? 0 : 10,
|
|
942
|
-
fontFamily: 'inherit'
|
|
943
|
-
}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userInputBoxStyle))
|
|
944
|
-
})), /*#__PURE__*/_react["default"].createElement(FeaturesWrapper, null, emojiPickerEnabled && /*#__PURE__*/_react["default"].createElement(ConditionalAnimation, null, /*#__PURE__*/_react["default"].createElement(_emojiPicker.EmojiPicker, {
|
|
945
|
-
onClick: handleEmojiClick
|
|
946
|
-
})), attachmentsEnabled && /*#__PURE__*/_react["default"].createElement(ConditionalAnimation, null, /*#__PURE__*/_react["default"].createElement(_attachment.Attachment, {
|
|
947
|
-
onChange: handleAttachment,
|
|
948
|
-
accept: (0, _messageUtils.getFullMimeWhitelist)().join(',')
|
|
949
|
-
})), (sendButtonEnabled || CustomSendButton) && /*#__PURE__*/_react["default"].createElement(ConditionalAnimation, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
950
|
-
onClick: sendTextAreaText
|
|
951
|
-
}, CustomSendButton ? /*#__PURE__*/_react["default"].createElement(CustomSendButton, null) : /*#__PURE__*/_react["default"].createElement(_sendButton.SendButton, null)))));
|
|
952
|
-
};
|
|
953
|
-
|
|
954
|
-
var webchatWebview = function webchatWebview() {
|
|
955
|
-
return /*#__PURE__*/_react["default"].createElement(_contexts.RequestContext.Provider, {
|
|
956
|
-
value: webviewRequestContext
|
|
957
|
-
}, /*#__PURE__*/_react["default"].createElement(_webview.WebviewContainer, {
|
|
958
|
-
style: _objectSpread(_objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.webviewStyle)), mobileStyle),
|
|
959
|
-
webview: webchatState.webview
|
|
960
|
-
}));
|
|
961
|
-
};
|
|
962
|
-
|
|
963
|
-
var mobileStyle = {};
|
|
964
|
-
|
|
965
|
-
if ((0, _core.isMobile)(getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.mobileBreakpoint))) {
|
|
966
|
-
mobileStyle = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.mobileStyle) || {
|
|
967
|
-
width: '100%',
|
|
968
|
-
height: '100%',
|
|
969
|
-
right: 0,
|
|
970
|
-
bottom: 0,
|
|
971
|
-
borderRadius: 0
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
(0, _react.useEffect)(function () {
|
|
976
|
-
// Prod mode
|
|
977
|
-
saveWebchatState(webchatState);
|
|
978
|
-
(0, _dom.scrollToBottom)({
|
|
979
|
-
host: host
|
|
980
|
-
});
|
|
981
|
-
}, [webchatState.themeUpdates]); // Only needed for dev/serve mode
|
|
982
|
-
|
|
983
|
-
var updateWebchatDevSettings = function updateWebchatDevSettings(settings) {
|
|
984
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
985
|
-
(0, _react.useEffect)(function () {
|
|
986
|
-
var themeUpdates = (0, _webchatSettings.normalizeWebchatSettings)(settings);
|
|
987
|
-
updateTheme((0, _lodash["default"])(webchatState.theme, themeUpdates), themeUpdates);
|
|
988
|
-
}, [webchatState.messagesJSON]);
|
|
989
|
-
};
|
|
990
|
-
|
|
991
|
-
var DarkenBackground = function DarkenBackground(_ref10) {
|
|
992
|
-
var component = _ref10.component;
|
|
993
|
-
return /*#__PURE__*/_react["default"].createElement("div", null, darkBackgroundMenu && /*#__PURE__*/_react["default"].createElement(DarkBackgroundMenu, {
|
|
994
|
-
style: {
|
|
995
|
-
borderRadius: webchatState.theme.style.borderRadius
|
|
996
|
-
}
|
|
997
|
-
}), component);
|
|
998
|
-
};
|
|
999
|
-
|
|
1000
|
-
var WebchatComponent = /*#__PURE__*/_react["default"].createElement(_contexts.WebchatContext.Provider, {
|
|
1001
|
-
value: {
|
|
1002
|
-
sendText: sendText,
|
|
1003
|
-
sendAttachment: sendAttachment,
|
|
1004
|
-
sendPayload: sendPayload,
|
|
1005
|
-
sendInput: sendInput,
|
|
1006
|
-
openWebview: openWebview,
|
|
1007
|
-
resolveCase: resolveCase,
|
|
1008
|
-
webchatState: webchatState,
|
|
1009
|
-
getThemeProperty: getThemeProperty,
|
|
1010
|
-
addMessage: addMessage,
|
|
1011
|
-
toggleWebchat: _toggleWebchat,
|
|
1012
|
-
updateMessage: updateMessage,
|
|
1013
|
-
updateReplies: updateReplies,
|
|
1014
|
-
updateLatestInput: updateLatestInput,
|
|
1015
|
-
updateUser: updateSessionWithUser,
|
|
1016
|
-
updateWebchatDevSettings: updateWebchatDevSettings
|
|
1017
|
-
}
|
|
1018
|
-
}, !webchatState.isWebchatOpen && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1019
|
-
onClick: function onClick(event) {
|
|
1020
|
-
_toggleWebchat(true);
|
|
1021
|
-
|
|
1022
|
-
event.preventDefault();
|
|
1023
|
-
}
|
|
1024
|
-
}, triggerButton()), webchatState.isWebchatOpen && /*#__PURE__*/_react["default"].createElement(StyledWebchat // TODO: Distinguis between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`
|
|
1025
|
-
, {
|
|
1026
|
-
role: _constants.ROLES.WEBCHAT,
|
|
1027
|
-
id: _constants.WEBCHAT.DEFAULTS.ID,
|
|
1028
|
-
width: webchatState.width,
|
|
1029
|
-
height: webchatState.height,
|
|
1030
|
-
style: _objectSpread(_objectSpread({}, webchatState.theme.style), mobileStyle)
|
|
1031
|
-
}, /*#__PURE__*/_react["default"].createElement(_header.StyledWebchatHeader, {
|
|
1032
|
-
onCloseClick: function onCloseClick() {
|
|
1033
|
-
_toggleWebchat(false);
|
|
1034
|
-
}
|
|
1035
|
-
}), webchatState.error.message && /*#__PURE__*/_react["default"].createElement(ErrorMessageContainer, null, /*#__PURE__*/_react["default"].createElement(ErrorMessage, null, webchatState.error.message)), webchatMessageList(), webchatState.replies && Object.keys(webchatState.replies).length > 0 && webchatReplies(), webchatState.isPersistentMenuOpen && /*#__PURE__*/_react["default"].createElement(DarkenBackground, {
|
|
1036
|
-
component: persistentMenu()
|
|
1037
|
-
}), !webchatState.handoff && userInputArea(), webchatState.webview && webchatWebview(), webchatState.isCoverComponentOpen && coverComponent()));
|
|
1038
|
-
|
|
1039
|
-
return props.shadowDOM ? /*#__PURE__*/_react["default"].createElement(_styledComponents.StyleSheetManager, {
|
|
1040
|
-
target: host
|
|
1041
|
-
}, WebchatComponent) : WebchatComponent;
|
|
1042
|
-
});
|
|
1043
|
-
exports.Webchat = Webchat;
|
|
1044
|
-
//# sourceMappingURL=webchat.js.map
|