@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,353 +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.Message = void 0;
|
|
11
|
-
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
-
|
|
18
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
19
|
-
|
|
20
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
21
|
-
|
|
22
|
-
var _core = require("@botonic/core");
|
|
23
|
-
|
|
24
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
25
|
-
|
|
26
|
-
var _Fade = _interopRequireDefault(require("react-reveal/Fade"));
|
|
27
|
-
|
|
28
|
-
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
29
|
-
|
|
30
|
-
var _uuid = require("uuid");
|
|
31
|
-
|
|
32
|
-
var _button = require("../../components/button");
|
|
33
|
-
|
|
34
|
-
var _buttonsDisabler = require("../../components/buttons-disabler");
|
|
35
|
-
|
|
36
|
-
var _reply = require("../../components/reply");
|
|
37
|
-
|
|
38
|
-
var _timestamps = require("../../components/timestamps");
|
|
39
|
-
|
|
40
|
-
var _constants = require("../../constants");
|
|
41
|
-
|
|
42
|
-
var _contexts = require("../../contexts");
|
|
43
|
-
|
|
44
|
-
var _environment = require("../../util/environment");
|
|
45
|
-
|
|
46
|
-
var _react2 = require("../../util/react");
|
|
47
|
-
|
|
48
|
-
var _markdown = require("./markdown");
|
|
49
|
-
|
|
50
|
-
var _excluded = ["type", "blob", "from", "delay", "typing", "children", "enabletimestamps", "json", "style", "imagestyle"],
|
|
51
|
-
_excluded2 = ["blob", "json"];
|
|
52
|
-
|
|
53
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
54
|
-
|
|
55
|
-
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); }
|
|
56
|
-
|
|
57
|
-
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; }
|
|
58
|
-
|
|
59
|
-
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; }
|
|
60
|
-
|
|
61
|
-
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; }
|
|
62
|
-
|
|
63
|
-
var MessageContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: ", ";\n position: relative;\n padding: 0px 6px;\n"])), function (props) {
|
|
64
|
-
return props.isfromuser ? 'flex-end' : 'flex-start';
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
var BotMessageImageContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 28px;\n padding: 12px 4px;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
|
|
68
|
-
|
|
69
|
-
var Blob = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin: 8px;\n border-radius: 8px;\n background-color: ", ";\n color: ", ";\n max-width: ", ";\n"])), function (props) {
|
|
70
|
-
return props.bgcolor;
|
|
71
|
-
}, function (props) {
|
|
72
|
-
return props.color;
|
|
73
|
-
}, function (props) {
|
|
74
|
-
return props.blob ? props.blobwidth ? props.blobwidth : '60%' : 'calc(100% - 16px)';
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
var BlobText = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: ", ";\n display: flex;\n flex-direction: column;\n white-space: pre-line;\n ", "\n"])), function (props) {
|
|
78
|
-
return props.blob ? '8px 12px' : '0px';
|
|
79
|
-
}, function (props) {
|
|
80
|
-
return props.markdownstyle;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
var BlobTickContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n padding: 18px 0px 18px 0px;\n display: flex;\n top: 0;\n align-items: center;\n"])));
|
|
84
|
-
|
|
85
|
-
var BlobTick = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin: -", "px 0px;\n border: ", "px solid ", ";\n"])), function (props) {
|
|
86
|
-
return props.pointerSize;
|
|
87
|
-
}, function (props) {
|
|
88
|
-
return props.pointerSize;
|
|
89
|
-
}, _constants.COLORS.TRANSPARENT);
|
|
90
|
-
|
|
91
|
-
var Message = function Message(props) {
|
|
92
|
-
var _useContext = (0, _react.useContext)(_contexts.RequestContext),
|
|
93
|
-
defaultTyping = _useContext.defaultTyping,
|
|
94
|
-
defaultDelay = _useContext.defaultDelay;
|
|
95
|
-
|
|
96
|
-
var _props$type = props.type,
|
|
97
|
-
type = _props$type === void 0 ? '' : _props$type,
|
|
98
|
-
_props$blob = props.blob,
|
|
99
|
-
blob = _props$blob === void 0 ? true : _props$blob,
|
|
100
|
-
_props$from = props.from,
|
|
101
|
-
from = _props$from === void 0 ? _constants.SENDERS.bot : _props$from,
|
|
102
|
-
_props$delay = props.delay,
|
|
103
|
-
delay = _props$delay === void 0 ? defaultDelay : _props$delay,
|
|
104
|
-
_props$typing = props.typing,
|
|
105
|
-
typing = _props$typing === void 0 ? defaultTyping : _props$typing,
|
|
106
|
-
children = props.children,
|
|
107
|
-
_props$enabletimestam = props.enabletimestamps,
|
|
108
|
-
enabletimestamps = _props$enabletimestam === void 0 ? props.enabletimestamps || props.enableTimestamps : _props$enabletimestam,
|
|
109
|
-
json = props.json,
|
|
110
|
-
style = props.style,
|
|
111
|
-
_props$imagestyle = props.imagestyle,
|
|
112
|
-
imagestyle = _props$imagestyle === void 0 ? props.imagestyle || props.imageStyle : _props$imagestyle,
|
|
113
|
-
otherProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
114
|
-
var isFromUser = from === _constants.SENDERS.user;
|
|
115
|
-
var isFromBot = from === _constants.SENDERS.bot;
|
|
116
|
-
var markdown = props.markdown;
|
|
117
|
-
|
|
118
|
-
var _useContext2 = (0, _react.useContext)(_contexts.WebchatContext),
|
|
119
|
-
webchatState = _useContext2.webchatState,
|
|
120
|
-
addMessage = _useContext2.addMessage,
|
|
121
|
-
updateReplies = _useContext2.updateReplies,
|
|
122
|
-
getThemeProperty = _useContext2.getThemeProperty;
|
|
123
|
-
|
|
124
|
-
var _useState = (0, _react.useState)({
|
|
125
|
-
id: props.id || (0, _uuid.v4)()
|
|
126
|
-
}),
|
|
127
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
128
|
-
state = _useState2[0],
|
|
129
|
-
setState = _useState2[1];
|
|
130
|
-
|
|
131
|
-
var _useState3 = (0, _react.useState)(false),
|
|
132
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
133
|
-
disabled = _useState4[0],
|
|
134
|
-
setDisabled = _useState4[1];
|
|
135
|
-
|
|
136
|
-
children = _buttonsDisabler.ButtonsDisabler.updateChildrenButtons(children, {
|
|
137
|
-
parentId: state.id,
|
|
138
|
-
disabled: disabled,
|
|
139
|
-
setDisabled: setDisabled
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
var childrenWithoutButtonsNorReplies = _react["default"].Children.toArray(children).filter(function (e) {
|
|
143
|
-
return ![_button.Button, _reply.Reply].includes(e.type);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
var textChildren = childrenWithoutButtonsNorReplies.filter(function (e) {
|
|
147
|
-
return typeof e === 'string';
|
|
148
|
-
}).join('');
|
|
149
|
-
|
|
150
|
-
var replies = _react["default"].Children.toArray(children).filter(function (e) {
|
|
151
|
-
return e.type === _reply.Reply;
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
var buttons = _react["default"].Children.toArray(children).filter(function (e) {
|
|
155
|
-
return e.type === _button.Button;
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
var _resolveMessageTimest = (0, _timestamps.resolveMessageTimestamps)(getThemeProperty, enabletimestamps),
|
|
159
|
-
timestampsEnabled = _resolveMessageTimest.timestampsEnabled,
|
|
160
|
-
getFormattedTimestamp = _resolveMessageTimest.getFormattedTimestamp,
|
|
161
|
-
timestampStyle = _resolveMessageTimest.timestampStyle;
|
|
162
|
-
|
|
163
|
-
var getEnvAck = function getEnvAck() {
|
|
164
|
-
if (_environment.isDev) return 1;
|
|
165
|
-
if (!isFromUser) return 1;
|
|
166
|
-
if (props.ack !== undefined) return props.ack;
|
|
167
|
-
return 0;
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
var ack = getEnvAck();
|
|
171
|
-
|
|
172
|
-
if ((0, _core.isBrowser)()) {
|
|
173
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
174
|
-
(0, _react.useEffect)(function () {
|
|
175
|
-
var decomposedChildren = json;
|
|
176
|
-
var message = {
|
|
177
|
-
id: state.id,
|
|
178
|
-
type: type,
|
|
179
|
-
// data: decomposedChildren ? decomposedChildren : textChildren,
|
|
180
|
-
text: props.text || textChildren || undefined,
|
|
181
|
-
src: props.src,
|
|
182
|
-
lat: props.lat,
|
|
183
|
-
"long": props["long"],
|
|
184
|
-
timestamp: props.timestamp || getFormattedTimestamp,
|
|
185
|
-
markdown: markdown,
|
|
186
|
-
from: from,
|
|
187
|
-
buttons: buttons.map(function (b) {
|
|
188
|
-
return _objectSpread({
|
|
189
|
-
parentId: b.props.parentId,
|
|
190
|
-
payload: b.props.payload,
|
|
191
|
-
path: b.props.path,
|
|
192
|
-
url: b.props.url,
|
|
193
|
-
target: b.props.target,
|
|
194
|
-
webview: b.props.webview && String(b.props.webview),
|
|
195
|
-
title: b.props.children
|
|
196
|
-
}, _buttonsDisabler.ButtonsDisabler.withDisabledProps(b.props));
|
|
197
|
-
}),
|
|
198
|
-
delay: delay,
|
|
199
|
-
typing: typing,
|
|
200
|
-
replies: replies.map(function (r) {
|
|
201
|
-
return {
|
|
202
|
-
payload: r.props.payload,
|
|
203
|
-
path: r.props.path,
|
|
204
|
-
title: r.props.children
|
|
205
|
-
};
|
|
206
|
-
}),
|
|
207
|
-
elements: props.elements,
|
|
208
|
-
display: delay + typing == 0,
|
|
209
|
-
customTypeName: decomposedChildren.customTypeName,
|
|
210
|
-
ack: ack
|
|
211
|
-
};
|
|
212
|
-
addMessage(message);
|
|
213
|
-
}, []); // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
214
|
-
|
|
215
|
-
(0, _react.useEffect)(function () {
|
|
216
|
-
var msg = webchatState.messagesJSON.find(function (m) {
|
|
217
|
-
return m.id === state.id;
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
if (msg && msg.display && webchatState.messagesJSON.filter(function (m) {
|
|
221
|
-
return !m.display;
|
|
222
|
-
}).length == 0) {
|
|
223
|
-
updateReplies(replies);
|
|
224
|
-
}
|
|
225
|
-
}, [webchatState.messagesJSON]);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
var brandColor = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.brandColor, _constants.COLORS.BOTONIC_BLUE);
|
|
229
|
-
|
|
230
|
-
var getBgColor = function getBgColor() {
|
|
231
|
-
if (!blob) return _constants.COLORS.TRANSPARENT;
|
|
232
|
-
|
|
233
|
-
if (isFromUser) {
|
|
234
|
-
return getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userMessageBackground, brandColor);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.botMessageBackground, _constants.COLORS.SEASHELL_WHITE);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
var getMessageStyle = function getMessageStyle() {
|
|
241
|
-
return isFromBot ? getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.botMessageStyle) : getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.userMessageStyle);
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
var hasBlobTick = function hasBlobTick() {
|
|
245
|
-
return getThemeProperty("message.".concat(from, ".blobTick"), true);
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
var renderBrowser = function renderBrowser() {
|
|
249
|
-
var m = webchatState.messagesJSON.find(function (m) {
|
|
250
|
-
return m.id === state.id;
|
|
251
|
-
});
|
|
252
|
-
if (!m || !m.display) return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null);
|
|
253
|
-
|
|
254
|
-
var getBlobTick = function getBlobTick(pointerSize) {
|
|
255
|
-
// to add a border to the blobTick we need to create two triangles and overlap them
|
|
256
|
-
// that is why the color depends on the pointerSize
|
|
257
|
-
// https://developpaper.com/realization-code-of-css-drawing-triangle-border-method/
|
|
258
|
-
var color = pointerSize == 5 ? getBgColor() : getThemeProperty("message.".concat(from, ".style.borderColor"), _constants.COLORS.TRANSPARENT);
|
|
259
|
-
|
|
260
|
-
var containerStyle = _objectSpread({}, getThemeProperty("message.".concat(from, ".blobTickStyle")));
|
|
261
|
-
|
|
262
|
-
var blobTickStyle = {};
|
|
263
|
-
|
|
264
|
-
if (isFromUser) {
|
|
265
|
-
containerStyle.right = 0;
|
|
266
|
-
containerStyle.marginRight = -pointerSize;
|
|
267
|
-
blobTickStyle.borderRight = 0;
|
|
268
|
-
blobTickStyle.borderLeftColor = color;
|
|
269
|
-
} else {
|
|
270
|
-
containerStyle.left = 0;
|
|
271
|
-
containerStyle.marginLeft = -pointerSize;
|
|
272
|
-
blobTickStyle.borderLeft = 0;
|
|
273
|
-
blobTickStyle.borderRightColor = color;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
return /*#__PURE__*/_react["default"].createElement(BlobTickContainer, {
|
|
277
|
-
style: containerStyle
|
|
278
|
-
}, /*#__PURE__*/_react["default"].createElement(BlobTick, {
|
|
279
|
-
pointerSize: pointerSize,
|
|
280
|
-
style: blobTickStyle
|
|
281
|
-
}));
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
var BotMessageImage = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.botMessageImage, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.brandImage, _constants.WEBCHAT.DEFAULTS.LOGO));
|
|
285
|
-
var animationsEnabled = getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.enableAnimations, true);
|
|
286
|
-
|
|
287
|
-
var resolveCustomTypeName = function resolveCustomTypeName() {
|
|
288
|
-
return isFromBot && type === _core.INPUT.CUSTOM ? " ".concat(m.customTypeName) : '';
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
var className = "".concat(type, "-").concat(from).concat(resolveCustomTypeName());
|
|
292
|
-
return /*#__PURE__*/_react["default"].createElement(_react2.ConditionalWrapper, {
|
|
293
|
-
condition: animationsEnabled,
|
|
294
|
-
wrapper: function wrapper(children) {
|
|
295
|
-
return /*#__PURE__*/_react["default"].createElement(_Fade["default"], null, children);
|
|
296
|
-
}
|
|
297
|
-
}, /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(MessageContainer, {
|
|
298
|
-
isfromuser: isFromUser,
|
|
299
|
-
style: _objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.messageStyle))
|
|
300
|
-
}, isFromBot && BotMessageImage && /*#__PURE__*/_react["default"].createElement(BotMessageImageContainer, {
|
|
301
|
-
style: _objectSpread(_objectSpread({}, getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.botMessageImageStyle)), imagestyle)
|
|
302
|
-
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
303
|
-
style: {
|
|
304
|
-
width: '100%'
|
|
305
|
-
},
|
|
306
|
-
src: (0, _environment.resolveImage)(BotMessageImage)
|
|
307
|
-
})), /*#__PURE__*/_react["default"].createElement(Blob, (0, _extends2["default"])({
|
|
308
|
-
className: className,
|
|
309
|
-
bgcolor: getBgColor(),
|
|
310
|
-
color: isFromUser ? _constants.COLORS.SOLID_WHITE : _constants.COLORS.SOLID_BLACK,
|
|
311
|
-
blobwidth: getThemeProperty(_constants.WEBCHAT.CUSTOM_PROPERTIES.botMessageBlobWidth),
|
|
312
|
-
blob: blob,
|
|
313
|
-
style: _objectSpread(_objectSpread(_objectSpread({}, getMessageStyle()), style), {
|
|
314
|
-
opacity: ack === 0 ? 0.6 : 1
|
|
315
|
-
})
|
|
316
|
-
}, otherProps), markdown ? /*#__PURE__*/_react["default"].createElement(BlobText, {
|
|
317
|
-
blob: blob,
|
|
318
|
-
dangerouslySetInnerHTML: {
|
|
319
|
-
__html: (0, _markdown.renderMarkdown)(isFromUser ? (0, _markdown.renderLinks)(textChildren) : textChildren)
|
|
320
|
-
},
|
|
321
|
-
markdownstyle: (0, _markdown.getMarkdownStyle)(getThemeProperty, isFromUser ? _constants.COLORS.SEASHELL_WHITE : brandColor)
|
|
322
|
-
}) : /*#__PURE__*/_react["default"].createElement(BlobText, {
|
|
323
|
-
blob: blob
|
|
324
|
-
}, childrenWithoutButtonsNorReplies), buttons, Boolean(blob) && hasBlobTick() && getBlobTick(6), Boolean(blob) && hasBlobTick() && getBlobTick(5))), timestampsEnabled && /*#__PURE__*/_react["default"].createElement(_timestamps.MessageTimestamp, {
|
|
325
|
-
timestamp: m.timestamp,
|
|
326
|
-
style: timestampStyle,
|
|
327
|
-
isfromuser: isFromUser
|
|
328
|
-
})));
|
|
329
|
-
};
|
|
330
|
-
|
|
331
|
-
var _blob = props.blob,
|
|
332
|
-
_json = props.json,
|
|
333
|
-
nodeProps = (0, _objectWithoutProperties2["default"])(props, _excluded2);
|
|
334
|
-
|
|
335
|
-
var renderNode = function renderNode() {
|
|
336
|
-
return type === _core.INPUT.CUSTOM ? /*#__PURE__*/_react["default"].createElement("message", (0, _extends2["default"])({
|
|
337
|
-
json: JSON.stringify(_json),
|
|
338
|
-
typing: typing,
|
|
339
|
-
delay: delay
|
|
340
|
-
}, nodeProps)) : /*#__PURE__*/_react["default"].createElement("message", (0, _extends2["default"])({
|
|
341
|
-
typing: typing,
|
|
342
|
-
delay: delay
|
|
343
|
-
}, nodeProps), children);
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
return (0, _react2.renderComponent)({
|
|
347
|
-
renderBrowser: renderBrowser,
|
|
348
|
-
renderNode: renderNode
|
|
349
|
-
});
|
|
350
|
-
};
|
|
351
|
-
|
|
352
|
-
exports.Message = Message;
|
|
353
|
-
//# sourceMappingURL=message.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/experimental/components/message.jsx"],"names":["MessageContainer","styled","div","props","isfromuser","BotMessageImageContainer","Blob","bgcolor","color","blob","blobwidth","BlobText","markdownstyle","BlobTickContainer","BlobTick","pointerSize","COLORS","TRANSPARENT","Message","RequestContext","defaultTyping","defaultDelay","type","from","SENDERS","bot","delay","typing","children","enabletimestamps","enableTimestamps","json","style","imagestyle","imageStyle","otherProps","isFromUser","user","isFromBot","markdown","WebchatContext","webchatState","addMessage","updateReplies","getThemeProperty","id","state","setState","disabled","setDisabled","ButtonsDisabler","updateChildrenButtons","parentId","childrenWithoutButtonsNorReplies","React","Children","toArray","filter","e","Button","Reply","includes","textChildren","join","replies","buttons","timestampsEnabled","getFormattedTimestamp","timestampStyle","getEnvAck","isDev","ack","undefined","decomposedChildren","message","text","src","lat","timestamp","map","b","payload","path","url","target","webview","String","title","withDisabledProps","r","elements","display","customTypeName","msg","messagesJSON","find","m","length","brandColor","WEBCHAT","CUSTOM_PROPERTIES","BOTONIC_BLUE","getBgColor","userMessageBackground","botMessageBackground","SEASHELL_WHITE","getMessageStyle","botMessageStyle","userMessageStyle","hasBlobTick","renderBrowser","getBlobTick","containerStyle","blobTickStyle","right","marginRight","borderRight","borderLeftColor","left","marginLeft","borderLeft","borderRightColor","BotMessageImage","botMessageImage","brandImage","DEFAULTS","LOGO","animationsEnabled","enableAnimations","resolveCustomTypeName","INPUT","CUSTOM","className","messageStyle","botMessageImageStyle","width","SOLID_WHITE","SOLID_BLACK","botMessageBlobWidth","opacity","__html","Boolean","_blob","_json","nodeProps","renderNode","JSON","stringify"],"mappings":"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","sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport React, { useContext, useEffect, useState } from 'react'\nimport Fade from 'react-reveal/Fade'\nimport styled from 'styled-components'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '../../components/button'\nimport { ButtonsDisabler } from '../../components/buttons-disabler'\nimport { Reply } from '../../components/reply'\nimport {\n MessageTimestamp,\n resolveMessageTimestamps,\n} from '../../components/timestamps'\nimport { COLORS, SENDERS, WEBCHAT } from '../../constants'\nimport { RequestContext, WebchatContext } from '../../contexts'\nimport { isDev, resolveImage } from '../../util/environment'\nimport { ConditionalWrapper, renderComponent } from '../../util/react'\n// Experimental\nimport { getMarkdownStyle, renderLinks, renderMarkdown } from './markdown'\n\nconst MessageContainer = styled.div`\n display: flex;\n justify-content: ${props => (props.isfromuser ? 'flex-end' : 'flex-start')};\n position: relative;\n padding: 0px 6px;\n`\n\nconst BotMessageImageContainer = styled.div`\n width: 28px;\n padding: 12px 4px;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst Blob = styled.div`\n position: relative;\n margin: 8px;\n border-radius: 8px;\n background-color: ${props => props.bgcolor};\n color: ${props => props.color};\n max-width: ${props =>\n props.blob\n ? props.blobwidth\n ? props.blobwidth\n : '60%'\n : 'calc(100% - 16px)'};\n`\n\nconst BlobText = styled.div`\n padding: ${props => (props.blob ? '8px 12px' : '0px')};\n display: flex;\n flex-direction: column;\n white-space: pre-line;\n ${props => props.markdownstyle}\n`\n\nconst BlobTickContainer = styled.div`\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n padding: 18px 0px 18px 0px;\n display: flex;\n top: 0;\n align-items: center;\n`\nconst BlobTick = styled.div`\n position: relative;\n margin: -${props => props.pointerSize}px 0px;\n border: ${props => props.pointerSize}px solid ${COLORS.TRANSPARENT};\n`\n\nexport const Message = props => {\n const { defaultTyping, defaultDelay } = useContext(RequestContext)\n let {\n type = '',\n blob = true,\n from = SENDERS.bot,\n delay = defaultDelay,\n typing = defaultTyping,\n children,\n enabletimestamps = props.enabletimestamps || props.enableTimestamps,\n json,\n style,\n imagestyle = props.imagestyle || props.imageStyle,\n ...otherProps\n } = props\n\n const isFromUser = from === SENDERS.user\n const isFromBot = from === SENDERS.bot\n const markdown = props.markdown\n const {\n webchatState,\n addMessage,\n updateReplies,\n getThemeProperty,\n } = useContext(WebchatContext)\n const [state, setState] = useState({\n id: props.id || uuidv4(),\n })\n\n const [disabled, setDisabled] = useState(false)\n children = ButtonsDisabler.updateChildrenButtons(children, {\n parentId: state.id,\n disabled,\n setDisabled,\n })\n\n const childrenWithoutButtonsNorReplies = React.Children.toArray(\n children\n ).filter(e => ![Button, Reply].includes(e.type))\n\n const textChildren = childrenWithoutButtonsNorReplies\n .filter(e => typeof e === 'string')\n .join('')\n\n const replies = React.Children.toArray(children).filter(e => e.type === Reply)\n const buttons = React.Children.toArray(children).filter(\n e => e.type === Button\n )\n\n const {\n timestampsEnabled,\n getFormattedTimestamp,\n timestampStyle,\n } = resolveMessageTimestamps(getThemeProperty, enabletimestamps)\n\n const getEnvAck = () => {\n if (isDev) return 1\n if (!isFromUser) return 1\n if (props.ack !== undefined) return props.ack\n return 0\n }\n\n const ack = getEnvAck()\n\n if (isBrowser()) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const decomposedChildren = json\n const message = {\n id: state.id,\n type,\n // data: decomposedChildren ? decomposedChildren : textChildren,\n text: props.text || textChildren || undefined,\n src: props.src,\n lat: props.lat,\n long: props.long,\n timestamp: props.timestamp || getFormattedTimestamp,\n markdown,\n from,\n buttons: buttons.map(b => ({\n parentId: b.props.parentId,\n payload: b.props.payload,\n path: b.props.path,\n url: b.props.url,\n target: b.props.target,\n webview: b.props.webview && String(b.props.webview),\n title: b.props.children,\n ...ButtonsDisabler.withDisabledProps(b.props),\n })),\n delay,\n typing,\n replies: replies.map(r => ({\n payload: r.props.payload,\n path: r.props.path,\n title: r.props.children,\n })),\n elements: props.elements,\n display: delay + typing == 0,\n customTypeName: decomposedChildren.customTypeName,\n ack: ack,\n }\n addMessage(message)\n }, [])\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const msg = webchatState.messagesJSON.find(m => m.id === state.id)\n if (\n msg &&\n msg.display &&\n webchatState.messagesJSON.filter(m => !m.display).length == 0\n ) {\n updateReplies(replies)\n }\n }, [webchatState.messagesJSON])\n }\n\n const brandColor = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.brandColor,\n COLORS.BOTONIC_BLUE\n )\n\n const getBgColor = () => {\n if (!blob) return COLORS.TRANSPARENT\n if (isFromUser) {\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.userMessageBackground,\n brandColor\n )\n }\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageBackground,\n COLORS.SEASHELL_WHITE\n )\n }\n\n const getMessageStyle = () =>\n isFromBot\n ? getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.botMessageStyle)\n : getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.userMessageStyle)\n\n const hasBlobTick = () => getThemeProperty(`message.${from}.blobTick`, true)\n\n const renderBrowser = () => {\n const m = webchatState.messagesJSON.find(m => m.id === state.id)\n if (!m || !m.display) return <></>\n\n const getBlobTick = pointerSize => {\n // to add a border to the blobTick we need to create two triangles and overlap them\n // that is why the color depends on the pointerSize\n // https://developpaper.com/realization-code-of-css-drawing-triangle-border-method/\n const color =\n pointerSize == 5\n ? getBgColor()\n : getThemeProperty(\n `message.${from}.style.borderColor`,\n COLORS.TRANSPARENT\n )\n const containerStyle = {\n ...getThemeProperty(`message.${from}.blobTickStyle`),\n }\n const blobTickStyle = {}\n if (isFromUser) {\n containerStyle.right = 0\n containerStyle.marginRight = -pointerSize\n blobTickStyle.borderRight = 0\n blobTickStyle.borderLeftColor = color\n } else {\n containerStyle.left = 0\n containerStyle.marginLeft = -pointerSize\n blobTickStyle.borderLeft = 0\n blobTickStyle.borderRightColor = color\n }\n return (\n <BlobTickContainer style={containerStyle}>\n <BlobTick pointerSize={pointerSize} style={blobTickStyle} />\n </BlobTickContainer>\n )\n }\n\n const BotMessageImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageImage,\n getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.brandImage,\n WEBCHAT.DEFAULTS.LOGO\n )\n )\n const animationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAnimations,\n true\n )\n\n const resolveCustomTypeName = () =>\n isFromBot && type === INPUT.CUSTOM ? ` ${m.customTypeName}` : ''\n\n const className = `${type}-${from}${resolveCustomTypeName()}`\n return (\n <ConditionalWrapper\n condition={animationsEnabled}\n wrapper={children => <Fade>{children}</Fade>}\n >\n <>\n <MessageContainer\n isfromuser={isFromUser}\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.messageStyle),\n }}\n >\n {isFromBot && BotMessageImage && (\n <BotMessageImageContainer\n style={{\n ...getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageImageStyle\n ),\n ...imagestyle,\n }}\n >\n <img\n style={{ width: '100%' }}\n src={resolveImage(BotMessageImage)}\n />\n </BotMessageImageContainer>\n )}\n <Blob\n className={className}\n bgcolor={getBgColor()}\n color={isFromUser ? COLORS.SOLID_WHITE : COLORS.SOLID_BLACK}\n blobwidth={getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageBlobWidth\n )}\n blob={blob}\n style={{\n ...getMessageStyle(),\n ...style,\n ...{ opacity: ack === 0 ? 0.6 : 1 },\n }}\n {...otherProps}\n >\n {markdown ? (\n <BlobText\n blob={blob}\n dangerouslySetInnerHTML={{\n __html: renderMarkdown(\n isFromUser ? renderLinks(textChildren) : textChildren\n ),\n }}\n markdownstyle={getMarkdownStyle(\n getThemeProperty,\n isFromUser ? COLORS.SEASHELL_WHITE : brandColor\n )}\n />\n ) : (\n <BlobText blob={blob}>\n {childrenWithoutButtonsNorReplies}\n </BlobText>\n )}\n {buttons}\n {Boolean(blob) && hasBlobTick() && getBlobTick(6)}\n {Boolean(blob) && hasBlobTick() && getBlobTick(5)}\n </Blob>\n </MessageContainer>\n {timestampsEnabled && (\n <MessageTimestamp\n timestamp={m.timestamp}\n style={timestampStyle}\n isfromuser={isFromUser}\n />\n )}\n </>\n </ConditionalWrapper>\n )\n }\n\n const { blob: _blob, json: _json, ...nodeProps } = props\n const renderNode = () =>\n type === INPUT.CUSTOM ? (\n <message\n json={JSON.stringify(_json)}\n typing={typing}\n delay={delay}\n {...nodeProps}\n />\n ) : (\n <message typing={typing} delay={delay} {...nodeProps}>\n {children}\n </message>\n )\n\n return renderComponent({ renderBrowser, renderNode })\n}\n"],"file":"message.js"}
|
|
@@ -1,80 +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.Text = void 0;
|
|
11
|
-
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
|
-
var _core = require("@botonic/core");
|
|
17
|
-
|
|
18
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
|
-
var _react2 = require("../../util/react");
|
|
21
|
-
|
|
22
|
-
var _markdown = require("./markdown");
|
|
23
|
-
|
|
24
|
-
var _message = require("./message");
|
|
25
|
-
|
|
26
|
-
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); }
|
|
27
|
-
|
|
28
|
-
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; }
|
|
29
|
-
|
|
30
|
-
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; }
|
|
31
|
-
|
|
32
|
-
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; }
|
|
33
|
-
|
|
34
|
-
var serializeText = function serializeText(children) {
|
|
35
|
-
children = Array.isArray(children) ? children : [children];
|
|
36
|
-
var text = children.filter(function (e) {
|
|
37
|
-
return !e.type;
|
|
38
|
-
}).map(function (e) {
|
|
39
|
-
if (Array.isArray(e)) return serializeText(e);else return String(e);
|
|
40
|
-
}).join('');
|
|
41
|
-
return text;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
var serialize = function serialize(textProps) {
|
|
45
|
-
if (!textProps.markdown) return {
|
|
46
|
-
text: serializeText(textProps.children)
|
|
47
|
-
};
|
|
48
|
-
return {
|
|
49
|
-
text: (0, _markdown.serializeMarkdown)(textProps.children)
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
* @param {TextProps} props
|
|
55
|
-
* @returns {JSX.Element}
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var Text = function Text(props) {
|
|
60
|
-
var defaultTextProps = {
|
|
61
|
-
markdown: props.markdown === undefined ? true : props.markdown
|
|
62
|
-
};
|
|
63
|
-
var textProps = (0, _react2.mapObjectNonBooleanValues)(_objectSpread(_objectSpread(_objectSpread({}, props), defaultTextProps), {
|
|
64
|
-
children: _react.Children.toArray(props.children)
|
|
65
|
-
}));
|
|
66
|
-
if (!textProps.markdown) return /*#__PURE__*/_react["default"].createElement(_message.Message, (0, _extends2["default"])({
|
|
67
|
-
json: serialize(textProps)
|
|
68
|
-
}, textProps, {
|
|
69
|
-
type: _core.INPUT.TEXT
|
|
70
|
-
}), textProps.children);
|
|
71
|
-
return /*#__PURE__*/_react["default"].createElement(_message.Message, (0, _extends2["default"])({
|
|
72
|
-
json: serialize(textProps)
|
|
73
|
-
}, textProps, {
|
|
74
|
-
type: _core.INPUT.TEXT
|
|
75
|
-
}), (0, _markdown.toMarkdownChildren)(textProps.children));
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
exports.Text = Text;
|
|
79
|
-
Text.serialize = serialize;
|
|
80
|
-
//# sourceMappingURL=text.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/experimental/components/text.jsx"],"names":["serializeText","children","Array","isArray","text","filter","e","type","map","String","join","serialize","textProps","markdown","Text","props","defaultTextProps","undefined","Children","toArray","INPUT","TEXT"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAAC,QAAQ,EAAI;AAChCA,EAAAA,QAAQ,GAAGC,KAAK,CAACC,OAAN,CAAcF,QAAd,IAA0BA,QAA1B,GAAqC,CAACA,QAAD,CAAhD;AACA,MAAMG,IAAI,GAAGH,QAAQ,CAClBI,MADU,CACH,UAAAC,CAAC;AAAA,WAAI,CAACA,CAAC,CAACC,IAAP;AAAA,GADE,EAEVC,GAFU,CAEN,UAAAF,CAAC,EAAI;AACR,QAAIJ,KAAK,CAACC,OAAN,CAAcG,CAAd,CAAJ,EAAsB,OAAON,aAAa,CAACM,CAAD,CAApB,CAAtB,KACK,OAAOG,MAAM,CAACH,CAAD,CAAb;AACN,GALU,EAMVI,IANU,CAML,EANK,CAAb;AAOA,SAAON,IAAP;AACD,CAVD;;AAYA,IAAMO,SAAS,GAAG,SAAZA,SAAY,CAAAC,SAAS,EAAI;AAC7B,MAAI,CAACA,SAAS,CAACC,QAAf,EACE,OAAO;AACLT,IAAAA,IAAI,EAAEJ,aAAa,CAACY,SAAS,CAACX,QAAX;AADd,GAAP;AAGF,SAAO;AAAEG,IAAAA,IAAI,EAAE,iCAAkBQ,SAAS,CAACX,QAA5B;AAAR,GAAP;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACO,IAAMa,IAAI,GAAG,SAAPA,IAAO,CAAAC,KAAK,EAAI;AAC3B,MAAMC,gBAAgB,GAAG;AACvBH,IAAAA,QAAQ,EAAEE,KAAK,CAACF,QAAN,KAAmBI,SAAnB,GAA+B,IAA/B,GAAsCF,KAAK,CAACF;AAD/B,GAAzB;AAGA,MAAMD,SAAS,GAAG,qFACbG,KADa,GAEbC,gBAFa,GAGb;AAAEf,IAAAA,QAAQ,EAAEiB,gBAASC,OAAT,CAAiBJ,KAAK,CAACd,QAAvB;AAAZ,GAHa,EAAlB;AAKA,MAAI,CAACW,SAAS,CAACC,QAAf,EACE,oBACE,gCAAC,gBAAD;AAAS,IAAA,IAAI,EAAEF,SAAS,CAACC,SAAD;AAAxB,KAAyCA,SAAzC;AAAoD,IAAA,IAAI,EAAEQ,YAAMC;AAAhE,MACGT,SAAS,CAACX,QADb,CADF;AAKF,sBACE,gCAAC,gBAAD;AAAS,IAAA,IAAI,EAAEU,SAAS,CAACC,SAAD;AAAxB,KAAyCA,SAAzC;AAAoD,IAAA,IAAI,EAAEQ,YAAMC;AAAhE,MACG,kCAAmBT,SAAS,CAACX,QAA7B,CADH,CADF;AAKD,CApBM;;;AAsBPa,IAAI,CAACH,SAAL,GAAiBA,SAAjB","sourcesContent":["import { INPUT } from '@botonic/core'\nimport React, { Children } from 'react'\n\nimport { mapObjectNonBooleanValues } from '../../util/react'\nimport { serializeMarkdown, toMarkdownChildren } from './markdown'\nimport { Message } from './message'\n\nconst serializeText = children => {\n children = Array.isArray(children) ? children : [children]\n const text = children\n .filter(e => !e.type)\n .map(e => {\n if (Array.isArray(e)) return serializeText(e)\n else return String(e)\n })\n .join('')\n return text\n}\n\nconst serialize = textProps => {\n if (!textProps.markdown)\n return {\n text: serializeText(textProps.children),\n }\n return { text: serializeMarkdown(textProps.children) }\n}\n\n/**\n *\n * @param {TextProps} props\n * @returns {JSX.Element}\n */\nexport const Text = props => {\n const defaultTextProps = {\n markdown: props.markdown === undefined ? true : props.markdown,\n }\n const textProps = mapObjectNonBooleanValues({\n ...props,\n ...defaultTextProps,\n ...{ children: Children.toArray(props.children) },\n })\n if (!textProps.markdown)\n return (\n <Message json={serialize(textProps)} {...textProps} type={INPUT.TEXT}>\n {textProps.children}\n </Message>\n )\n return (\n <Message json={serialize(textProps)} {...textProps} type={INPUT.TEXT}>\n {toMarkdownChildren(textProps.children)}\n </Message>\n )\n}\n\nText.serialize = serialize\n"],"file":"text.js"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.Video = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
-
|
|
14
|
-
var _core = require("@botonic/core");
|
|
15
|
-
|
|
16
|
-
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
|
-
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
|
-
|
|
20
|
-
var _constants = require("../../constants");
|
|
21
|
-
|
|
22
|
-
var _message = require("./message");
|
|
23
|
-
|
|
24
|
-
var _templateObject;
|
|
25
|
-
|
|
26
|
-
var StyledVideo = _styledComponents["default"].video(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n border-radius: 8px;\n max-height: 180px;\n max-width: 300px;\n margin: 10px;\n"])), _constants.COLORS.SOLID_BLACK_ALPHA_0_5);
|
|
27
|
-
|
|
28
|
-
var serialize = function serialize(videoProps) {
|
|
29
|
-
return {
|
|
30
|
-
src: videoProps.src
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
var Video = function Video(props) {
|
|
35
|
-
return /*#__PURE__*/_react["default"].createElement(_message.Message, (0, _extends2["default"])({
|
|
36
|
-
role: _constants.ROLES.VIDEO_MESSAGE,
|
|
37
|
-
json: serialize(props)
|
|
38
|
-
}, props, {
|
|
39
|
-
type: _core.INPUT.VIDEO
|
|
40
|
-
}), (0, _core.isBrowser)() && /*#__PURE__*/_react["default"].createElement(StyledVideo, {
|
|
41
|
-
controls: true
|
|
42
|
-
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
43
|
-
src: props.src
|
|
44
|
-
})), props.children);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
exports.Video = Video;
|
|
48
|
-
Video.serialize = serialize;
|
|
49
|
-
//# sourceMappingURL=video.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/experimental/components/video.jsx"],"names":["StyledVideo","styled","video","COLORS","SOLID_BLACK_ALPHA_0_5","serialize","videoProps","src","Video","props","ROLES","VIDEO_MESSAGE","INPUT","VIDEO","children"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;AAEA,IAAMA,WAAW,GAAGC,6BAAOC,KAAV,uMACKC,kBAAOC,qBADZ,CAAjB;;AAQA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAAC,UAAU,EAAI;AAC9B,SAAO;AAAEC,IAAAA,GAAG,EAAED,UAAU,CAACC;AAAlB,GAAP;AACD,CAFD;;AAIO,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAAAC,KAAK;AAAA,sBACxB,gCAAC,gBAAD;AACE,IAAA,IAAI,EAAEC,iBAAMC,aADd;AAEE,IAAA,IAAI,EAAEN,SAAS,CAACI,KAAD;AAFjB,KAGMA,KAHN;AAIE,IAAA,IAAI,EAAEG,YAAMC;AAJd,MAMG,uCACC,gCAAC,WAAD;AAAa,IAAA,QAAQ;AAArB,kBACE;AAAQ,IAAA,GAAG,EAAEJ,KAAK,CAACF;AAAnB,IADF,CAPJ,EAWGE,KAAK,CAACK,QAXT,CADwB;AAAA,CAAnB;;;AAgBPN,KAAK,CAACH,SAAN,GAAkBA,SAAlB","sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { COLORS, ROLES } from '../../constants'\nimport { Message } from './message'\n\nconst StyledVideo = styled.video`\n background-color: ${COLORS.SOLID_BLACK_ALPHA_0_5};\n border-radius: 8px;\n max-height: 180px;\n max-width: 300px;\n margin: 10px;\n`\n\nconst serialize = videoProps => {\n return { src: videoProps.src }\n}\n\nexport const Video = props => (\n <Message\n role={ROLES.VIDEO_MESSAGE}\n json={serialize(props)}\n {...props}\n type={INPUT.VIDEO}\n >\n {isBrowser() && (\n <StyledVideo controls>\n <source src={props.src} />\n </StyledVideo>\n )}\n {props.children}\n </Message>\n)\n\nVideo.serialize = serialize\n"],"file":"video.js"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.WhatsappTemplate = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _core = require("@botonic/core");
|
|
13
|
-
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
|
|
16
|
-
var _react2 = require("../../util/react");
|
|
17
|
-
|
|
18
|
-
var _message = require("./message");
|
|
19
|
-
|
|
20
|
-
var serialize = function serialize(whatsappTemplateProps) {
|
|
21
|
-
return {
|
|
22
|
-
text: whatsappTemplateProps
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
var WhatsappTemplate = function WhatsappTemplate(props) {
|
|
27
|
-
var renderBrowser = function renderBrowser() {
|
|
28
|
-
// Return a dummy message for browser
|
|
29
|
-
var message = "Template ".concat(props.name, " with namespace ").concat(props.namespace, " would be sent to the user.");
|
|
30
|
-
return /*#__PURE__*/_react["default"].createElement(_message.Message, (0, _extends2["default"])({
|
|
31
|
-
json: serialize(message)
|
|
32
|
-
}, props, {
|
|
33
|
-
type: _core.INPUT.TEXT
|
|
34
|
-
}), message);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
var renderNode = function renderNode() {
|
|
38
|
-
return /*#__PURE__*/_react["default"].createElement("message", (0, _extends2["default"])({}, props, {
|
|
39
|
-
header: props.header && JSON.stringify(props.header),
|
|
40
|
-
body: props.body && JSON.stringify(props.body),
|
|
41
|
-
footer: props.footer && JSON.stringify(props.footer),
|
|
42
|
-
type: _core.INPUT.WHATSAPP_TEMPLATE
|
|
43
|
-
}));
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
return (0, _react2.renderComponent)({
|
|
47
|
-
renderBrowser: renderBrowser,
|
|
48
|
-
renderNode: renderNode
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
exports.WhatsappTemplate = WhatsappTemplate;
|
|
53
|
-
//# sourceMappingURL=whatsapp-template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/experimental/components/whatsapp-template.jsx"],"names":["serialize","whatsappTemplateProps","text","WhatsappTemplate","props","renderBrowser","message","name","namespace","INPUT","TEXT","renderNode","header","JSON","stringify","body","footer","WHATSAPP_TEMPLATE"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAAAC,qBAAqB,EAAI;AACzC,SAAO;AAAEC,IAAAA,IAAI,EAAED;AAAR,GAAP;AACD,CAFD;;AAIO,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAC,KAAK,EAAI;AACvC,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B;AACA,QAAMC,OAAO,sBAAeF,KAAK,CAACG,IAArB,6BAA4CH,KAAK,CAACI,SAAlD,gCAAb;AACA,wBACE,gCAAC,gBAAD;AAAS,MAAA,IAAI,EAAER,SAAS,CAACM,OAAD;AAAxB,OAAuCF,KAAvC;AAA8C,MAAA,IAAI,EAAEK,YAAMC;AAA1D,QACGJ,OADH,CADF;AAKD,GARD;;AAUA,MAAMK,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,wBACE,yEACMP,KADN;AAEE,MAAA,MAAM,EAAEA,KAAK,CAACQ,MAAN,IAAgBC,IAAI,CAACC,SAAL,CAAeV,KAAK,CAACQ,MAArB,CAF1B;AAGE,MAAA,IAAI,EAAER,KAAK,CAACW,IAAN,IAAcF,IAAI,CAACC,SAAL,CAAeV,KAAK,CAACW,IAArB,CAHtB;AAIE,MAAA,MAAM,EAAEX,KAAK,CAACY,MAAN,IAAgBH,IAAI,CAACC,SAAL,CAAeV,KAAK,CAACY,MAArB,CAJ1B;AAKE,MAAA,IAAI,EAAEP,YAAMQ;AALd,OADF;AASD,GAVD;;AAYA,SAAO,6BAAgB;AAAEZ,IAAAA,aAAa,EAAbA,aAAF;AAAiBM,IAAAA,UAAU,EAAVA;AAAjB,GAAhB,CAAP;AACD,CAxBM","sourcesContent":["import { INPUT } from '@botonic/core'\nimport React from 'react'\n\nimport { renderComponent } from '../../util/react'\nimport { Message } from './message'\n\nconst serialize = whatsappTemplateProps => {\n return { text: whatsappTemplateProps }\n}\n\nexport const WhatsappTemplate = props => {\n const renderBrowser = () => {\n // Return a dummy message for browser\n const message = `Template ${props.name} with namespace ${props.namespace} would be sent to the user.`\n return (\n <Message json={serialize(message)} {...props} type={INPUT.TEXT}>\n {message}\n </Message>\n )\n }\n\n const renderNode = () => {\n return (\n <message\n {...props}\n header={props.header && JSON.stringify(props.header)}\n body={props.body && JSON.stringify(props.body)}\n footer={props.footer && JSON.stringify(props.footer)}\n type={INPUT.WHATSAPP_TEMPLATE}\n />\n )\n }\n\n return renderComponent({ renderBrowser, renderNode })\n}\n"],"file":"whatsapp-template.js"}
|