@bigbinary/neeto-integrations-frontend 2.1.1 → 2.2.0-beta1

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/dist/index.cjs.js CHANGED
@@ -2,14 +2,39 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var IntegrationCard = require('@bigbinary/neeto-molecules/IntegrationCard');
6
+ var DisconnectAlert = require('@bigbinary/neeto-molecules/IntegrationDisconnectAlert');
7
+ var WalkthroughModal = require('@bigbinary/neeto-molecules/IntegrationWalkthroughModal');
5
8
  var React = require('react');
6
9
  var classnames = require('classnames');
7
- var pure = require('@bigbinary/neeto-commons-frontend/pure');
10
+ var neetoCist = require('@bigbinary/neeto-cist');
11
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
12
+ var neetoIcons = require('@bigbinary/neeto-icons');
13
+ var Button = require('@bigbinary/neetoui/Button');
14
+ var Tooltip = require('@bigbinary/neetoui/Tooltip');
15
+ var Typography = require('@bigbinary/neetoui/Typography');
16
+ var reactI18next = require('react-i18next');
17
+ var i18next = require('i18next');
18
+ var reactQuery = require('@tanstack/react-query');
19
+ var constants = require('@bigbinary/neeto-commons-frontend/constants');
20
+ var axios = require('axios');
21
+ var Container = require('@bigbinary/neeto-molecules/Container');
22
+ var Header = require('@bigbinary/neeto-molecules/Header');
23
+ var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
24
+ var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
25
+ var Input = require('@bigbinary/neetoui/formik/Input');
26
+ var FormikForm = require('@bigbinary/neetoui/formik/Form');
27
+ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
28
+ var reactRouterDom = require('react-router-dom');
29
+ var jsxRuntime = require('react/jsx-runtime');
8
30
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
9
- var neetoui = require('@bigbinary/neetoui');
31
+ var misc = require('@bigbinary/neeto-icons/misc');
32
+ var Callout = require('@bigbinary/neetoui/Callout');
10
33
  var ramda = require('ramda');
11
- var reactI18next = require('react-i18next');
12
- var neetoIcons = require('@bigbinary/neeto-icons');
34
+ var Select = require('@bigbinary/neetoui/formik/Select');
35
+ var yup = require('yup');
36
+ var NeetoUIModal = require('@bigbinary/neetoui/Modal');
37
+ var CopyToClipboardButton = require('@bigbinary/neeto-molecules/CopyToClipboardButton');
13
38
 
14
39
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
40
 
@@ -31,91 +56,323 @@ function _interopNamespace(e) {
31
56
  return Object.freeze(n);
32
57
  }
33
58
 
59
+ var IntegrationCard__default = /*#__PURE__*/_interopDefaultLegacy(IntegrationCard);
60
+ var DisconnectAlert__default = /*#__PURE__*/_interopDefaultLegacy(DisconnectAlert);
61
+ var WalkthroughModal__default = /*#__PURE__*/_interopDefaultLegacy(WalkthroughModal);
34
62
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
35
63
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
64
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
65
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
66
+ var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
67
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
68
+ var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
69
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
70
+ var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
71
+ var Header__default = /*#__PURE__*/_interopDefaultLegacy(Header);
72
+ var HelpPopover__default = /*#__PURE__*/_interopDefaultLegacy(HelpPopover);
73
+ var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
74
+ var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
75
+ var FormikForm__default = /*#__PURE__*/_interopDefaultLegacy(FormikForm);
76
+ var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
77
+ var Callout__default = /*#__PURE__*/_interopDefaultLegacy(Callout);
78
+ var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
79
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
80
+ var NeetoUIModal__default = /*#__PURE__*/_interopDefaultLegacy(NeetoUIModal);
81
+ var CopyToClipboardButton__default = /*#__PURE__*/_interopDefaultLegacy(CopyToClipboardButton);
37
82
 
38
- function _extends$1() {
39
- _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
40
- for (var i = 1; i < arguments.length; i++) {
41
- var source = arguments[i];
42
- for (var key in source) {
43
- if (Object.prototype.hasOwnProperty.call(source, key)) {
44
- target[key] = source[key];
45
- }
46
- }
47
- }
48
- return target;
49
- };
50
- return _extends$1.apply(this, arguments);
51
- }
83
+ function _typeof(o) {
84
+ "@babel/helpers - typeof";
52
85
 
53
- var renderDataCy = function renderDataCy(label, suffix) {
54
- return "".concat(label.replace(/\./g, "").toLowerCase(), "-").concat(suffix);
55
- };
86
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
87
+ return typeof o;
88
+ } : function (o) {
89
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
90
+ }, _typeof(o);
91
+ }
56
92
 
57
- var Menu = neetoui.Dropdown.Menu,
58
- MenuItem = neetoui.Dropdown.MenuItem;
59
- var Dropdown = function Dropdown(_ref) {
60
- var _ref$customDropDown = _ref.customDropDown,
61
- CustomDropdown = _ref$customDropDown === void 0 ? {} : _ref$customDropDown,
62
- _ref$handleManage = _ref.handleManage,
63
- handleManage = _ref$handleManage === void 0 ? pure.noop : _ref$handleManage,
64
- _ref$hideDisconnect = _ref.hideDisconnect,
65
- hideDisconnect = _ref$hideDisconnect === void 0 ? false : _ref$hideDisconnect,
66
- _ref$onDisconnect = _ref.onDisconnect,
67
- onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect;
68
- var _useTranslation = reactI18next.useTranslation(),
69
- t = _useTranslation.t;
70
- var isManageable = ramda.isNotNil(handleManage);
71
- if (ramda.isNotNil(CustomDropdown)) {
72
- return CustomDropdown;
93
+ function _toPrimitive(input, hint) {
94
+ if (_typeof(input) !== "object" || input === null) return input;
95
+ var prim = input[Symbol.toPrimitive];
96
+ if (prim !== undefined) {
97
+ var res = prim.call(input, hint || "default");
98
+ if (_typeof(res) !== "object") return res;
99
+ throw new TypeError("@@toPrimitive must return a primitive value.");
73
100
  }
74
- if (!isManageable && hideDisconnect) {
75
- return null;
101
+ return (hint === "string" ? String : Number)(input);
102
+ }
103
+
104
+ function _toPropertyKey(arg) {
105
+ var key = _toPrimitive(arg, "string");
106
+ return _typeof(key) === "symbol" ? key : String(key);
107
+ }
108
+
109
+ function _defineProperty(obj, key, value) {
110
+ key = _toPropertyKey(key);
111
+ if (key in obj) {
112
+ Object.defineProperty(obj, key, {
113
+ value: value,
114
+ enumerable: true,
115
+ configurable: true,
116
+ writable: true
117
+ });
118
+ } else {
119
+ obj[key] = value;
76
120
  }
77
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
78
- buttonProps: {
79
- onClick: function onClick(e) {
80
- return e.stopPropagation();
81
- }
82
- },
83
- buttonStyle: "text",
84
- dropdownProps: {
85
- onClick: function onClick(e) {
86
- return e.stopPropagation();
87
- }
88
- },
89
- icon: neetoIcons.MenuVertical
90
- }, /*#__PURE__*/React__default["default"].createElement(Menu, null, isManageable && /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
91
- onClick: function onClick() {
92
- return handleManage();
93
- }
94
- }, t("neetoIntegrations.common.manage")), !hideDisconnect && /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
95
- onClick: function onClick() {
96
- return onDisconnect();
97
- }
98
- }, t("neetoIntegrations.common.disconnect"))));
121
+ return obj;
122
+ }
123
+
124
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
125
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
126
+ var Manage$1 = reactUtils.withT(function (_ref) {
127
+ var t = _ref.t,
128
+ _ref$title = _ref.title,
129
+ title = _ref$title === void 0 ? "" : _ref$title,
130
+ _ref$description = _ref.description,
131
+ description = _ref$description === void 0 ? "" : _ref$description,
132
+ _ref$integration = _ref.integration,
133
+ integration = _ref$integration === void 0 ? "" : _ref$integration,
134
+ _ref$isDisconnectAler = _ref.isDisconnectAlertOpen,
135
+ isDisconnectAlertOpen = _ref$isDisconnectAler === void 0 ? false : _ref$isDisconnectAler,
136
+ _ref$setIsDisconnectA = _ref.setIsDisconnectAlertOpen,
137
+ setIsDisconnectAlertOpen = _ref$setIsDisconnectA === void 0 ? neetoCist.noop : _ref$setIsDisconnectA,
138
+ _ref$isDisconnecting = _ref.isDisconnecting,
139
+ isDisconnecting = _ref$isDisconnecting === void 0 ? false : _ref$isDisconnecting,
140
+ _ref$onConnect = _ref.onConnect,
141
+ onConnect = _ref$onConnect === void 0 ? undefined : _ref$onConnect,
142
+ _ref$onDisconnect = _ref.onDisconnect,
143
+ onDisconnect = _ref$onDisconnect === void 0 ? undefined : _ref$onDisconnect,
144
+ _ref$onClose = _ref.onClose,
145
+ onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose,
146
+ _ref$Icon = _ref.Icon,
147
+ Icon = _ref$Icon === void 0 ? null : _ref$Icon,
148
+ _ref$isConnected = _ref.isConnected,
149
+ isConnected = _ref$isConnected === void 0 ? false : _ref$isConnected,
150
+ _ref$connectPath = _ref.connectPath,
151
+ connectPath = _ref$connectPath === void 0 ? "" : _ref$connectPath,
152
+ _ref$connectUrl = _ref.connectUrl,
153
+ connectUrl = _ref$connectUrl === void 0 ? "" : _ref$connectUrl,
154
+ _ref$helpDocUrl = _ref.helpDocUrl,
155
+ helpDocUrl = _ref$helpDocUrl === void 0 ? "" : _ref$helpDocUrl,
156
+ _ref$managePath = _ref.managePath,
157
+ managePath = _ref$managePath === void 0 ? "" : _ref$managePath,
158
+ _ref$manageUrl = _ref.manageUrl,
159
+ manageUrl = _ref$manageUrl === void 0 ? "" : _ref$manageUrl,
160
+ _ref$integrationName = _ref.integrationName,
161
+ integrationName = _ref$integrationName === void 0 ? "" : _ref$integrationName,
162
+ _ref$disconnectMessag = _ref.disconnectMessage,
163
+ disconnectMessage = _ref$disconnectMessag === void 0 ? "" : _ref$disconnectMessag,
164
+ _ref$disconnectTitle = _ref.disconnectTitle,
165
+ disconnectTitle = _ref$disconnectTitle === void 0 ? "" : _ref$disconnectTitle,
166
+ _ref$isConnectDisable = _ref.isConnectDisabled,
167
+ isConnectDisabled = _ref$isConnectDisable === void 0 ? false : _ref$isConnectDisable,
168
+ _ref$connectTooltipPr = _ref.connectTooltipProps,
169
+ connectTooltipProps = _ref$connectTooltipPr === void 0 ? null : _ref$connectTooltipPr;
170
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
171
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
172
+ className: "mx-auto w-full max-w-3xl",
173
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
174
+ className: "neeto-ui-border-gray-300 neeto-ui-rounded-xl mt-10 w-full space-y-4 border p-6",
175
+ children: [Icon && /*#__PURE__*/jsxRuntime.jsx(Icon, {
176
+ className: "neeto-ui-text-gray-600",
177
+ size: 48
178
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
179
+ className: "space-y-2",
180
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
181
+ className: "flex items-center space-x-4",
182
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
183
+ className: "neeto-ui-text-gray-800 mb-0.5",
184
+ style: "h2",
185
+ weight: "semibold",
186
+ children: title
187
+ }), isConnected && /*#__PURE__*/jsxRuntime.jsx("div", {
188
+ className: "neeto-ui-bg-success-500 neeto-ui-text-white neeto-ui-rounded-full flex items-center justify-center p-1",
189
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoIcons.Check, {
190
+ size: 24
191
+ })
192
+ })]
193
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
194
+ style: "body1",
195
+ weight: "normal",
196
+ className: classnames__default["default"]("neeto-ui-text-gray-800", {
197
+ "break-all": isConnected
198
+ }),
199
+ children: description
200
+ }), helpDocUrl && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
201
+ className: "neeto-ui-text-gray-800",
202
+ style: "body2",
203
+ weight: "normal",
204
+ children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
205
+ i18nKey: "neetoIntegrations.common.helpDocUrl",
206
+ components: {
207
+ helpLink: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
208
+ href: helpDocUrl,
209
+ style: "link",
210
+ target: "_blank"
211
+ })
212
+ },
213
+ values: {
214
+ integration: integrationName || neetoCist.humanize(integration)
215
+ }
216
+ })
217
+ })]
218
+ }), isConnected ? /*#__PURE__*/jsxRuntime.jsxs("div", {
219
+ className: "space-x-2",
220
+ children: [(managePath || manageUrl) && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
221
+ "data-cy": "manage-button",
222
+ href: manageUrl,
223
+ target: manageUrl ? "_blank" : "_self",
224
+ to: managePath,
225
+ label: t("neetoIntegrations.common.manageIntegration", {
226
+ integration: integrationName || neetoCist.humanize(integration)
227
+ })
228
+ }), onDisconnect && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
229
+ "data-cy": "disconnect-button",
230
+ style: "secondary",
231
+ label: t("neetoIntegrations.common.disconnectIntegration", {
232
+ integration: integrationName || neetoCist.humanize(integration)
233
+ }),
234
+ onClick: function onClick() {
235
+ return setIsDisconnectAlertOpen(true);
236
+ }
237
+ })]
238
+ }) : /*#__PURE__*/jsxRuntime.jsx("div", {
239
+ children: /*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], _objectSpread$8(_objectSpread$8({
240
+ disabled: !isConnectDisabled
241
+ }, connectTooltipProps), {}, {
242
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
243
+ children: (connectPath || connectUrl || onConnect) && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
244
+ "data-cy": "connect-button",
245
+ disabled: isConnectDisabled,
246
+ href: connectUrl,
247
+ to: connectPath,
248
+ label: t("neetoIntegrations.common.connectIntegration", {
249
+ integration: integrationName || neetoCist.humanize(integration)
250
+ }),
251
+ onClick: onConnect
252
+ })
253
+ })
254
+ }))
255
+ })]
256
+ })
257
+ }), /*#__PURE__*/jsxRuntime.jsx(DisconnectAlert__default["default"], {
258
+ isDisconnecting: isDisconnecting,
259
+ onClose: onClose,
260
+ onDisconnect: onDisconnect,
261
+ isOpen: isDisconnectAlertOpen,
262
+ message: disconnectMessage || t("settings.integrations.".concat(integration, ".disconnect.message")),
263
+ title: disconnectTitle || t("settings.integrations.".concat(integration, ".disconnect.title"))
264
+ })]
265
+ });
266
+ });
267
+
268
+ var INTEGRATIONS_ENGINE_BASE_URL = "/neeto_integrations";
269
+ var TWILIO_CONFIGURATION_BASE_URL = "".concat(INTEGRATIONS_ENGINE_BASE_URL, "/twilio/sms_configurations");
270
+ var INTEGRATIONS_ENGINE_DAILY_URL = "".concat(INTEGRATIONS_ENGINE_BASE_URL, "/daily");
271
+ var INTEGRATIONS_ENGINE_ZOOM_URL = "".concat(INTEGRATIONS_ENGINE_BASE_URL, "/zoom");
272
+ var INTEGRATION_DETAILS_URL = "".concat(INTEGRATIONS_ENGINE_BASE_URL, "/status");
273
+
274
+ var create = function create(payload) {
275
+ return axios__default["default"].post(INTEGRATIONS_ENGINE_DAILY_URL, {
276
+ daily: payload
277
+ });
278
+ };
279
+ var show$1 = function show() {
280
+ return axios__default["default"].get(INTEGRATIONS_ENGINE_DAILY_URL);
281
+ };
282
+ var destroy$1 = function destroy() {
283
+ return axios__default["default"]["delete"](INTEGRATIONS_ENGINE_DAILY_URL);
284
+ };
285
+ var dailiesApi = {
286
+ create: create,
287
+ show: show$1,
288
+ destroy: destroy$1
99
289
  };
100
290
 
101
- var Status = function Status(_ref) {
102
- var isExpired = _ref.isExpired;
103
- var _useTranslation = reactI18next.useTranslation(),
104
- t = _useTranslation.t;
105
- var tagProps = isExpired ? {
106
- icon: neetoIcons.Warning,
107
- label: t("neetoIntegrations.tags.expired"),
108
- style: "warning"
109
- } : {
110
- icon: neetoIcons.Check,
111
- label: t("neetoIntegrations.tags.connected"),
112
- style: "success"
113
- };
114
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, _extends$1({
115
- className: "flex-row-reverse"
116
- }, tagProps));
291
+ var QUERY_KEYS = {
292
+ TWILIO_SMS_CONFIGURATION: "twilio-sms-configuration",
293
+ TWILIO_PHONE_NUMBERS: "twilio-phone-numbers",
294
+ DAILY_CO_DETAILS: "daily-co-details",
295
+ ZOOM_DETAILS: "zoom-details"
117
296
  };
118
297
 
298
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
299
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
300
+ var useCreateDaily = function useCreateDaily() {
301
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
302
+ return reactUtils.useMutationWithInvalidation(dailiesApi.create, _objectSpread$7({
303
+ keysToInvalidate: [QUERY_KEYS.DAILY_CO_DETAILS]
304
+ }, options));
305
+ };
306
+ var useFetchDaily = function useFetchDaily() {
307
+ return reactQuery.useQuery({
308
+ queryKey: [QUERY_KEYS.DAILY_CO_DETAILS],
309
+ queryFn: dailiesApi.show,
310
+ staleTime: constants.DEFAULT_STALE_TIME
311
+ });
312
+ };
313
+ var useDestroyDaily = function useDestroyDaily(_ref) {
314
+ var onSuccess = _ref.onSuccess;
315
+ return reactUtils.useMutationWithInvalidation(dailiesApi.destroy, {
316
+ keysToInvalidate: [QUERY_KEYS.DAILY_CO_DETAILS],
317
+ onSuccess: onSuccess
318
+ });
319
+ };
320
+
321
+ function _arrayWithHoles(arr) {
322
+ if (Array.isArray(arr)) return arr;
323
+ }
324
+
325
+ function _iterableToArrayLimit(r, l) {
326
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
327
+ if (null != t) {
328
+ var e,
329
+ n,
330
+ i,
331
+ u,
332
+ a = [],
333
+ f = !0,
334
+ o = !1;
335
+ try {
336
+ if (i = (t = t.call(r)).next, 0 === l) {
337
+ if (Object(t) !== t) return;
338
+ f = !1;
339
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
340
+ } catch (r) {
341
+ o = !0, n = r;
342
+ } finally {
343
+ try {
344
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
345
+ } finally {
346
+ if (o) throw n;
347
+ }
348
+ }
349
+ return a;
350
+ }
351
+ }
352
+
353
+ function _arrayLikeToArray(arr, len) {
354
+ if (len == null || len > arr.length) len = arr.length;
355
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
356
+ return arr2;
357
+ }
358
+
359
+ function _unsupportedIterableToArray(o, minLen) {
360
+ if (!o) return;
361
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
362
+ var n = Object.prototype.toString.call(o).slice(8, -1);
363
+ if (n === "Object" && o.constructor) n = o.constructor.name;
364
+ if (n === "Map" || n === "Set") return Array.from(o);
365
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
366
+ }
367
+
368
+ function _nonIterableRest() {
369
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
370
+ }
371
+
372
+ function _slicedToArray(arr, i) {
373
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
374
+ }
375
+
119
376
  function _objectWithoutPropertiesLoose(source, excluded) {
120
377
  if (source == null) return {};
121
378
  var target = {};
@@ -145,154 +402,706 @@ function _objectWithoutProperties(source, excluded) {
145
402
  return target;
146
403
  }
147
404
 
148
- var _excluded$1 = ["disabled", "children"];
149
- var TooltipWrapper = function TooltipWrapper(_ref) {
150
- var disabled = _ref.disabled,
151
- children = _ref.children,
152
- tooltipProps = _objectWithoutProperties(_ref, _excluded$1);
153
- return disabled ? /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, tooltipProps, children) : children;
405
+ var _excluded = ["className", "children"];
406
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
407
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
408
+ var ExternalLink = function ExternalLink(_ref) {
409
+ var _ref$className = _ref.className,
410
+ className = _ref$className === void 0 ? "" : _ref$className,
411
+ _ref$children = _ref.children,
412
+ children = _ref$children === void 0 ? null : _ref$children,
413
+ props = _objectWithoutProperties(_ref, _excluded);
414
+ return /*#__PURE__*/jsxRuntime.jsx("a", _objectSpread$6(_objectSpread$6({
415
+ className: classnames__default["default"](["neeto-ui-text-primary-800 hover:neeto-ui-text-primary-800 visited:neeto-ui-text-primary-600 font-medium", className])
416
+ }, props), {}, {
417
+ children: children
418
+ }));
419
+ };
420
+ var ExternalLink$1 = /*#__PURE__*/React__default["default"].memo(ExternalLink);
421
+
422
+ var MANAGE_DAILY_CO_FORM_INITIAL_VALUES = {
423
+ apiKey: ""
424
+ };
425
+ var DAILY_CO_VALIDATION_SCHEMA = yup__namespace.object().shape({
426
+ apiKey: yup__namespace.string().trim().required(i18next.t("neetoIntegrations.errors.required", {
427
+ entity: i18next.t("neetoIntegrations.daily.apiKey")
428
+ }))
429
+ });
430
+
431
+ var Form = function Form(_ref) {
432
+ var helpDocUrl = _ref.helpDocUrl,
433
+ videoUrl = _ref.videoUrl,
434
+ onConnect = _ref.onConnect,
435
+ breadcrumbs = _ref.breadcrumbs;
436
+ var _useTranslation = reactI18next.useTranslation(),
437
+ t = _useTranslation.t;
438
+ var history = reactRouterDom.useHistory();
439
+ var _useState = React.useState(false),
440
+ _useState2 = _slicedToArray(_useState, 2),
441
+ isDemoModalOpen = _useState2[0],
442
+ setIsDemoModalOpen = _useState2[1];
443
+ var _useCreateDaily = useCreateDaily({
444
+ onSuccess: function onSuccess() {
445
+ return onConnect === null || onConnect === void 0 ? void 0 : onConnect();
446
+ }
447
+ }),
448
+ createDaily = _useCreateDaily.mutate,
449
+ isConnecting = _useCreateDaily.isPending;
450
+ var handleSubmit = function handleSubmit(payload) {
451
+ return createDaily(payload);
452
+ };
453
+ if (isConnecting) {
454
+ return /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {});
455
+ }
456
+ return /*#__PURE__*/jsxRuntime.jsxs(Container__default["default"], {
457
+ isHeaderFixed: true,
458
+ children: [/*#__PURE__*/jsxRuntime.jsx(Header__default["default"], {
459
+ breadcrumbs: breadcrumbs,
460
+ title: /*#__PURE__*/jsxRuntime.jsxs("span", {
461
+ className: "flex items-center gap-2",
462
+ children: [t("neetoIntegrations.daily.connect.title"), /*#__PURE__*/jsxRuntime.jsx(HelpPopover__default["default"], {
463
+ title: t("neetoIntegrations.daily.connect.title"),
464
+ description: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
465
+ i18nKey: "neetoIntegrations.daily.helpDoc",
466
+ components: {
467
+ externalLink: /*#__PURE__*/jsxRuntime.jsx(ExternalLink$1, {
468
+ "data-cy": "api-key-help-doc-link",
469
+ href: helpDocUrl,
470
+ rel: "noreferrer",
471
+ target: "_blank"
472
+ })
473
+ }
474
+ }),
475
+ helpLinkProps: {
476
+ label: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
477
+ className: "mt-8",
478
+ label: t("neetoIntegrations.daily.walkthroughText"),
479
+ style: "link",
480
+ onClick: function onClick() {
481
+ return setIsDemoModalOpen(true);
482
+ }
483
+ })
484
+ }
485
+ })]
486
+ })
487
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
488
+ className: "mx-auto w-full max-w-md",
489
+ children: [/*#__PURE__*/jsxRuntime.jsx(FormikForm__default["default"], {
490
+ formikProps: {
491
+ initialValues: MANAGE_DAILY_CO_FORM_INITIAL_VALUES,
492
+ validationSchema: DAILY_CO_VALIDATION_SCHEMA,
493
+ onSubmit: handleSubmit
494
+ },
495
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
496
+ className: "mt-14 w-full space-y-2",
497
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
498
+ className: "block min-h-20",
499
+ children: /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
500
+ autoFocus: true,
501
+ required: true,
502
+ label: t("neetoIntegrations.daily.apiKey"),
503
+ name: "apiKey"
504
+ })
505
+ }), /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
506
+ cancelButtonProps: {
507
+ onClick: function onClick() {
508
+ return history.goBack();
509
+ }
510
+ },
511
+ isSubmitting: isConnecting,
512
+ submitButtonProps: {
513
+ label: t("neetoIntegrations.common.connect")
514
+ }
515
+ })]
516
+ })
517
+ }), /*#__PURE__*/jsxRuntime.jsx(WalkthroughModal__default["default"], {
518
+ videoUrl: videoUrl,
519
+ isOpen: isDemoModalOpen,
520
+ onClose: function onClose() {
521
+ return setIsDemoModalOpen(false);
522
+ }
523
+ })]
524
+ })]
525
+ });
526
+ };
527
+ var Form$1 = reactUtils.withTitle(Form, i18next__default["default"].t("neetoIntegrations.browserTitles.integrations.dailyco"));
528
+
529
+ var Manage = function Manage(_ref) {
530
+ var description = _ref.description,
531
+ onDisconnect = _ref.onDisconnect;
532
+ var _useState = React.useState(false),
533
+ _useState2 = _slicedToArray(_useState, 2),
534
+ isDisconnectAlertOpen = _useState2[0],
535
+ setIsDisconnectAlertOpen = _useState2[1];
536
+ var _useFetchDaily = useFetchDaily(),
537
+ _useFetchDaily$data = _useFetchDaily.data,
538
+ _useFetchDaily$data2 = _useFetchDaily$data === void 0 ? {} : _useFetchDaily$data,
539
+ _useFetchDaily$data2$ = _useFetchDaily$data2.metadata,
540
+ metadata = _useFetchDaily$data2$ === void 0 ? {} : _useFetchDaily$data2$,
541
+ isFetching = _useFetchDaily.isFetching;
542
+ var _ref2 = metadata || {},
543
+ _ref2$apiKey = _ref2.apiKey,
544
+ apiKey = _ref2$apiKey === void 0 ? null : _ref2$apiKey;
545
+ var _useTranslation = reactI18next.useTranslation(),
546
+ t = _useTranslation.t;
547
+ var _useDestroyDaily = useDestroyDaily({
548
+ onSuccess: function onSuccess() {
549
+ setIsDisconnectAlertOpen(false);
550
+ onDisconnect === null || onDisconnect === void 0 || onDisconnect();
551
+ }
552
+ }),
553
+ destroyIntegration = _useDestroyDaily.mutate,
554
+ isDisconnecting = _useDestroyDaily.isPending;
555
+ var isConnected = neetoCist.isPresent(apiKey);
556
+ var handleDisconnect = function handleDisconnect() {
557
+ return destroyIntegration("daily");
558
+ };
559
+ if (isFetching || isDisconnecting) return /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {});
560
+ return /*#__PURE__*/jsxRuntime.jsx(Manage$1, {
561
+ isConnected: isConnected,
562
+ isDisconnectAlertOpen: isDisconnectAlertOpen,
563
+ isDisconnecting: isDisconnecting,
564
+ setIsDisconnectAlertOpen: setIsDisconnectAlertOpen,
565
+ Icon: misc.Daily,
566
+ connectPath: utils.buildUrl(window.location.pathname, {
567
+ connect: true
568
+ }),
569
+ integration: "daily",
570
+ description: isConnected ? /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
571
+ i18nKey: "neetoIntegrations.daily.yourApiKey",
572
+ values: {
573
+ apiKey: apiKey
574
+ },
575
+ components: {
576
+ wrapper: /*#__PURE__*/jsxRuntime.jsx("div", {
577
+ className: "neeto-ui-rounded-md mt-2 flex items-center justify-between gap-x-3 border px-3 py-2"
578
+ }),
579
+ span: /*#__PURE__*/jsxRuntime.jsx("span", {
580
+ className: "break-all text-sm"
581
+ }),
582
+ copy: /*#__PURE__*/jsxRuntime.jsx(CopyToClipboardButton__default["default"], {
583
+ className: "flex-shrink-0 self-start",
584
+ style: "text",
585
+ value: apiKey
586
+ })
587
+ }
588
+ }) : description,
589
+ title: isConnected ? t("neetoIntegrations.daily.connected") : t("neetoIntegrations.daily.connect.account"),
590
+ onClose: function onClose() {
591
+ return setIsDisconnectAlertOpen(false);
592
+ },
593
+ onDisconnect: handleDisconnect
594
+ });
154
595
  };
155
596
 
156
- var Card = function Card(_ref) {
157
- var Icon = _ref.icon,
158
- _ref$subIcons = _ref.subIcons,
159
- subIcons = _ref$subIcons === void 0 ? [] : _ref$subIcons,
160
- _ref$label = _ref.label,
161
- label = _ref$label === void 0 ? "" : _ref$label,
597
+ var Daily = function Daily(_ref) {
598
+ var _ref$isOnboarding = _ref.isOnboarding,
599
+ isOnboarding = _ref$isOnboarding === void 0 ? false : _ref$isOnboarding,
600
+ _ref$helpDocUrl = _ref.helpDocUrl,
601
+ helpDocUrl = _ref$helpDocUrl === void 0 ? "" : _ref$helpDocUrl,
602
+ _ref$videoUrl = _ref.videoUrl,
603
+ videoUrl = _ref$videoUrl === void 0 ? "" : _ref$videoUrl,
162
604
  _ref$description = _ref.description,
163
605
  description = _ref$description === void 0 ? "" : _ref$description,
164
- _ref$className = _ref.className,
165
- className = _ref$className === void 0 ? "" : _ref$className,
166
606
  _ref$onConnect = _ref.onConnect,
167
- onConnect = _ref$onConnect === void 0 ? pure.noop : _ref$onConnect,
607
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect,
168
608
  _ref$onDisconnect = _ref.onDisconnect,
169
- onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect,
170
- _ref$onManage = _ref.onManage,
171
- onManage = _ref$onManage === void 0 ? undefined : _ref$onManage,
172
- _ref$isLoading = _ref.isLoading,
173
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
174
- _ref$isConnected = _ref.isConnected,
175
- isConnected = _ref$isConnected === void 0 ? false : _ref$isConnected,
176
- _ref$isFailed = _ref.isFailed,
177
- isFailed = _ref$isFailed === void 0 ? false : _ref$isFailed,
178
- _ref$isExpired = _ref.isExpired,
179
- isExpired = _ref$isExpired === void 0 ? false : _ref$isExpired,
180
- _ref$disabled = _ref.disabled,
181
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
182
- _ref$hidden = _ref.hidden,
183
- hidden = _ref$hidden === void 0 ? false : _ref$hidden,
184
- _ref$hideDisconnect = _ref.hideDisconnect,
185
- hideDisconnect = _ref$hideDisconnect === void 0 ? false : _ref$hideDisconnect,
186
- _ref$onClick = _ref.onClick,
187
- onCardClick = _ref$onClick === void 0 ? undefined : _ref$onClick,
188
- _ref$tooltipProps = _ref.tooltipProps,
189
- tooltipProps = _ref$tooltipProps === void 0 ? {} : _ref$tooltipProps,
190
- _ref$customDropDown = _ref.customDropDown,
191
- customDropDown = _ref$customDropDown === void 0 ? null : _ref$customDropDown,
192
- children = _ref.children;
609
+ onDisconnect = _ref$onDisconnect === void 0 ? neetoCist.noop : _ref$onDisconnect;
610
+ var _useQueryParams = reactUtils.useQueryParams(),
611
+ connect = _useQueryParams.connect;
612
+ var _useFetchDaily = useFetchDaily(),
613
+ _useFetchDaily$data = _useFetchDaily.data,
614
+ _useFetchDaily$data2 = _useFetchDaily$data === void 0 ? {} : _useFetchDaily$data,
615
+ _useFetchDaily$data2$ = _useFetchDaily$data2.metadata,
616
+ metadata = _useFetchDaily$data2$ === void 0 ? {} : _useFetchDaily$data2$;
617
+ var _ref2 = metadata || {},
618
+ _ref2$apiKey = _ref2.apiKey,
619
+ apiKey = _ref2$apiKey === void 0 ? null : _ref2$apiKey;
620
+ if (neetoCist.isPresent(apiKey) && !isOnboarding || !connect) {
621
+ return /*#__PURE__*/jsxRuntime.jsx(Manage, {
622
+ description: description,
623
+ onDisconnect: onDisconnect
624
+ });
625
+ }
626
+ return /*#__PURE__*/jsxRuntime.jsx(Form$1, {
627
+ helpDocUrl: helpDocUrl,
628
+ onConnect: onConnect,
629
+ videoUrl: videoUrl
630
+ });
631
+ };
632
+ var index = reactUtils.withTitle(Daily, i18next__default["default"].t("neetoIntegrations.browserTitles.integrations.dailyco"));
633
+
634
+ function _arrayWithoutHoles(arr) {
635
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
636
+ }
637
+
638
+ function _iterableToArray(iter) {
639
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
640
+ }
641
+
642
+ function _nonIterableSpread() {
643
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
644
+ }
645
+
646
+ function _toConsumableArray(arr) {
647
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
648
+ }
649
+
650
+ var INTEGRATION_STEPS = [{
651
+ step: "1",
652
+ label: i18next.t("neetoIntegrations.common.connect"),
653
+ isActive: true,
654
+ isCompleted: false
655
+ }, {
656
+ step: "2",
657
+ label: i18next.t("neetoIntegrations.common.finish"),
658
+ isActive: false,
659
+ isCompleted: false
660
+ }];
661
+ var STEPS = {
662
+ connect: i18next.t("neetoIntegrations.common.connect"),
663
+ finish: i18next.t("neetoIntegrations.common.finish")
664
+ };
665
+
666
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
667
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
668
+ var GoogleCalendar = function GoogleCalendar(_ref) {
669
+ var permissionImage = _ref.permissionImage,
670
+ fetchAuthorizationUrl = _ref.fetchAuthorizationUrl,
671
+ handleClose = _ref.handleClose,
672
+ handleRedirect = _ref.handleRedirect;
193
673
  var _useTranslation = reactI18next.useTranslation(),
194
674
  t = _useTranslation.t;
195
- var cardProps = function cardProps() {
196
- return isConnected && ramda.isNotNil(onCardClick) ? {
197
- onClick: onCardClick
198
- } : {};
199
- };
200
- return /*#__PURE__*/React__default["default"].createElement(TooltipWrapper, _extends$1({
201
- disabled: disabled,
202
- position: "top",
203
- content: disabled && t("neetoIntegrations.tooltip.integrationNotAvailable")
204
- }, tooltipProps), /*#__PURE__*/React__default["default"].createElement("div", _extends$1({
205
- className: classnames__default["default"]("outline-none neeto-ui-border-gray-300 neeto-ui-shadow-xs hover:neeto-ui-border-gray-500 focus:neeto-ui-border-gray-500 neeto-ui-rounded-lg flex flex-col border p-6 no-underline transition-colors", {
206
- "hover:neeto-ui-bg-100 cursor-not-allowed opacity-50": disabled,
207
- "cursor-pointer": isConnected && ramda.isNotNil(onCardClick),
208
- hidden: hidden
209
- }, className)
210
- }, cardProps()), /*#__PURE__*/React__default["default"].createElement("div", {
211
- className: "flex flex-grow justify-between",
212
- "data-cy": "integration-tabs"
213
- }, /*#__PURE__*/React__default["default"].createElement("div", {
214
- className: "flex min-w-0 flex-col justify-end"
215
- }, /*#__PURE__*/React__default["default"].createElement("div", {
216
- className: "relative mb-4 flex h-8"
217
- }, Icon && /*#__PURE__*/React__default["default"].createElement(Icon, {
218
- className: "neeto-ui-text-gray-600",
219
- size: 32
220
- })), /*#__PURE__*/React__default["default"].createElement("div", {
221
- className: "my-auto"
222
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
223
- className: "mb-2",
224
- "data-cy": renderDataCy(label, "integration-card-label"),
225
- style: "h4",
226
- weight: "semibold"
227
- }, label), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
228
- className: "break-words",
229
- "data-cy": "".concat(utils.joinHyphenCase(label), "-integration-description"),
230
- style: "body2"
231
- }, description), children)), pure.isNotEmpty(subIcons) && /*#__PURE__*/React__default["default"].createElement("div", {
232
- className: "flex h-24 flex-col gap-2"
233
- }, subIcons.map(function (Icon) {
234
- return /*#__PURE__*/React__default["default"].createElement(Icon, {
235
- className: "neeto-ui-text-gray-600",
236
- key: Icon,
237
- size: 24
675
+ var _useState = React.useState(INTEGRATION_STEPS),
676
+ _useState2 = _slicedToArray(_useState, 2),
677
+ steps = _useState2[0],
678
+ setSteps = _useState2[1];
679
+ var _getQueryParams = utils.getQueryParams(),
680
+ status = _getQueryParams.status;
681
+ var activeTab = neetoCist.isPresent(status) ? STEPS.finish : STEPS.connect;
682
+ React.useEffect(function () {
683
+ setSteps(function () {
684
+ var stepsClone = _toConsumableArray(steps);
685
+ stepsClone[0] = _objectSpread$5(_objectSpread$5({}, steps[0]), {}, {
686
+ isActive: activeTab === STEPS.connect,
687
+ isCompleted: activeTab !== STEPS.connect
688
+ });
689
+ stepsClone[1] = _objectSpread$5(_objectSpread$5({}, steps[1]), {}, {
690
+ isActive: activeTab === STEPS.finish,
691
+ isCompleted: activeTab === STEPS.finish
692
+ });
693
+ return stepsClone;
238
694
  });
239
- }))), /*#__PURE__*/React__default["default"].createElement("div", {
240
- className: "neeto-ui-border-gray-300 mt-4 w-full border-t pt-2"
241
- }, isLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
242
- className: "mt-3 flex items-center justify-start"
243
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)) : /*#__PURE__*/React__default["default"].createElement("div", {
244
- className: "flex h-8 items-center justify-between"
245
- }, isConnected && /*#__PURE__*/React__default["default"].createElement(Status, {
246
- isExpired: isExpired
247
- }), isFailed && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
248
- className: "neeto-ui-text-warning-500",
249
- "data-cy": renderDataCy(label, "connect-button"),
250
- disabled: disabled || isLoading,
251
- label: t("neetoIntegrations.common.tryAgain"),
252
- style: "link",
253
- onClick: onConnect
254
- }), !isConnected && !isFailed && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
255
- "data-cy": renderDataCy(label, "connect-button"),
256
- disabled: disabled || isLoading,
257
- label: t("neetoIntegrations.common.connect"),
258
- style: "link",
259
- onClick: onConnect
260
- }), (isConnected || isFailed) && /*#__PURE__*/React__default["default"].createElement(Dropdown, {
261
- customDropDown: customDropDown,
262
- handleManage: onManage,
263
- hideDisconnect: hideDisconnect,
264
- onDisconnect: onDisconnect
265
- })))));
266
- };
267
-
268
- var _excluded = ["isOpen", "isDisconnecting", "title", "message", "onClose", "onDisconnect"];
269
- var DisconnectAlert = function DisconnectAlert(_ref) {
270
- var _ref$isOpen = _ref.isOpen,
271
- isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
272
- _ref$isDisconnecting = _ref.isDisconnecting,
273
- isDisconnecting = _ref$isDisconnecting === void 0 ? false : _ref$isDisconnecting,
274
- _ref$title = _ref.title,
275
- title = _ref$title === void 0 ? "" : _ref$title,
276
- _ref$message = _ref.message,
277
- message = _ref$message === void 0 ? "" : _ref$message,
695
+ }, [activeTab]);
696
+ return /*#__PURE__*/jsxRuntime.jsxs(Modal, {
697
+ steps: steps,
698
+ isOpen: true,
699
+ onClose: handleClose,
700
+ children: [activeTab === STEPS.connect && /*#__PURE__*/jsxRuntime.jsxs("div", {
701
+ className: "mx-auto w-full max-w-3xl",
702
+ children: [/*#__PURE__*/jsxRuntime.jsx(misc.GoogleCalendar, {
703
+ size: 48
704
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
705
+ className: "mb-4 mt-2",
706
+ style: "h2",
707
+ children: t("neetoIntegrations.google.connect.title")
708
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
709
+ className: "flex w-full flex-col items-start",
710
+ children: [/*#__PURE__*/jsxRuntime.jsx(Callout__default["default"], {
711
+ className: "block leading-5",
712
+ children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
713
+ components: {
714
+ bold: /*#__PURE__*/jsxRuntime.jsx("strong", {})
715
+ },
716
+ i18nKey: "neetoIntegrations.google.connect.reminderToAcceptPermissions",
717
+ values: {
718
+ selectCheckbox: t("neetoIntegrations.google.connect.selectCheckbox")
719
+ }
720
+ })
721
+ }), permissionImage && /*#__PURE__*/jsxRuntime.jsx("div", {
722
+ className: "neeto-ui-border-gray-300 neeto-ui-rounded-md my-4 overflow-hidden border",
723
+ children: /*#__PURE__*/jsxRuntime.jsx("img", {
724
+ src: permissionImage
725
+ })
726
+ })]
727
+ }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
728
+ icon: misc.Google,
729
+ label: t("neetoIntegrations.google.connect.signIn"),
730
+ onClick: fetchAuthorizationUrl
731
+ })]
732
+ }), activeTab === STEPS.finish && /*#__PURE__*/jsxRuntime.jsx(Finish, {
733
+ title: t("neetoIntegrations.google.finish.title"),
734
+ onClick: handleRedirect
735
+ })]
736
+ });
737
+ };
738
+
739
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
740
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
741
+ var ConfigurationForm = function ConfigurationForm(_ref) {
742
+ var _errors$twilioPhoneNu;
743
+ var phoneNumberOptions = _ref.phoneNumberOptions,
744
+ _ref$selectedPhoneNum = _ref.selectedPhoneNumber,
745
+ selectedPhoneNumber = _ref$selectedPhoneNum === void 0 ? null : _ref$selectedPhoneNum,
746
+ _ref$initialFocusRef = _ref.initialFocusRef,
747
+ initialFocusRef = _ref$initialFocusRef === void 0 ? null : _ref$initialFocusRef,
748
+ _ref$isUsingOverlay = _ref.isUsingOverlay,
749
+ isUsingOverlay = _ref$isUsingOverlay === void 0 ? false : _ref$isUsingOverlay,
750
+ _ref$formikProps = _ref.formikProps,
751
+ formikProps = _ref$formikProps === void 0 ? {} : _ref$formikProps;
752
+ var _useTranslation = reactI18next.useTranslation(),
753
+ t = _useTranslation.t;
754
+ var setFieldValue = formikProps.setFieldValue,
755
+ setValues = formikProps.setValues,
756
+ errors = formikProps.errors,
757
+ values = formikProps.values,
758
+ initialValues = formikProps.initialValues;
759
+ React.useEffect(function () {
760
+ selectedPhoneNumber && setFieldValue("twilioPhoneNumber", selectedPhoneNumber);
761
+ }, [selectedPhoneNumber, initialValues]);
762
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
763
+ className: "flex w-full flex-col gap-y-4",
764
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
765
+ className: "flex w-full",
766
+ children: /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
767
+ required: true,
768
+ autoFocus: !isUsingOverlay,
769
+ "data-testid": "integrations-twilio-sid",
770
+ label: t("neetoIntegrations.twilio.sid"),
771
+ name: "twilioSid",
772
+ ref: initialFocusRef
773
+ })
774
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
775
+ className: "flex w-full",
776
+ children: /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
777
+ required: true,
778
+ "data-testid": "integrations-twilio-auth-token",
779
+ label: t("neetoIntegrations.twilio.authToken"),
780
+ name: "twilioAuthToken"
781
+ })
782
+ }), phoneNumberOptions && /*#__PURE__*/jsxRuntime.jsx("div", {
783
+ className: "flex w-full",
784
+ children: /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
785
+ error: (_errors$twilioPhoneNu = errors.twilioPhoneNumber) === null || _errors$twilioPhoneNu === void 0 ? void 0 : _errors$twilioPhoneNu.value,
786
+ label: t("neetoIntegrations.common.phNo"),
787
+ name: "twilioPhoneNumber",
788
+ options: phoneNumberOptions,
789
+ size: "large",
790
+ onChange: function onChange(selected) {
791
+ return setValues(_objectSpread$4(_objectSpread$4({}, values), {}, {
792
+ twilioPhoneNumber: selected
793
+ }));
794
+ }
795
+ })
796
+ })]
797
+ });
798
+ };
799
+
800
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
801
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
802
+ var fetchTwilioSmsConfiguration = function fetchTwilioSmsConfiguration(integrable) {
803
+ return axios__default["default"].get(TWILIO_CONFIGURATION_BASE_URL, {
804
+ params: integrable
805
+ });
806
+ };
807
+ var removeTwilioConfiguration = function removeTwilioConfiguration() {
808
+ return axios__default["default"]["delete"](TWILIO_CONFIGURATION_BASE_URL);
809
+ };
810
+ var getTwilioPhoneNumbers = function getTwilioPhoneNumbers(data) {
811
+ return axios__default["default"].get("".concat(TWILIO_CONFIGURATION_BASE_URL, "/new"), {
812
+ params: data
813
+ });
814
+ };
815
+ var createTwilioConfiguration = function createTwilioConfiguration(payload, integrable) {
816
+ return axios__default["default"].post(TWILIO_CONFIGURATION_BASE_URL, _objectSpread$3(_objectSpread$3({}, payload), integrable));
817
+ };
818
+ var twilioApi = {
819
+ fetchTwilioSmsConfiguration: fetchTwilioSmsConfiguration,
820
+ removeTwilioConfiguration: removeTwilioConfiguration,
821
+ getTwilioPhoneNumbers: getTwilioPhoneNumbers,
822
+ createTwilioConfiguration: createTwilioConfiguration
823
+ };
824
+
825
+ var useFetchTwilioSmsConfiguration = function useFetchTwilioSmsConfiguration(_ref) {
826
+ var integrable = _ref.integrable;
827
+ return reactQuery.useQuery({
828
+ queryKey: [QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId],
829
+ queryFn: function queryFn() {
830
+ return twilioApi.fetchTwilioSmsConfiguration(integrable);
831
+ },
832
+ select: function select(response) {
833
+ var _smsConfiguration$twi, _smsConfiguration$twi2, _smsConfiguration$twi3;
834
+ var smsConfiguration = response.smsConfiguration;
835
+ return {
836
+ twilioSid: (_smsConfiguration$twi = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioSid) !== null && _smsConfiguration$twi !== void 0 ? _smsConfiguration$twi : "",
837
+ twilioAuthToken: (_smsConfiguration$twi2 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioAuthToken) !== null && _smsConfiguration$twi2 !== void 0 ? _smsConfiguration$twi2 : "",
838
+ twilioPhoneNumber: (_smsConfiguration$twi3 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioPhoneNumber) !== null && _smsConfiguration$twi3 !== void 0 ? _smsConfiguration$twi3 : ""
839
+ };
840
+ }
841
+ });
842
+ };
843
+ var useFetchTwilioPhoneNumbers = function useFetchTwilioPhoneNumbers(_ref2) {
844
+ var _formRef$current, _formRef$current2;
845
+ var credentials = _ref2.credentials,
846
+ formRef = _ref2.formRef;
847
+ return reactQuery.useQuery({
848
+ queryKey: [QUERY_KEYS.TWILIO_PHONE_NUMBERS, {
849
+ credentials: credentials
850
+ }],
851
+ queryFn: function queryFn() {
852
+ return twilioApi.getTwilioPhoneNumbers(neetoCist.keysToSnakeCase(credentials));
853
+ },
854
+ enabled: !!(credentials !== null && credentials !== void 0 && credentials.twilio_sid) || !!(credentials !== null && credentials !== void 0 && credentials.twilioSid) || !!(formRef !== null && formRef !== void 0 && (_formRef$current = formRef.current) !== null && _formRef$current !== void 0 && (_formRef$current = _formRef$current.values) !== null && _formRef$current !== void 0 && _formRef$current.twilioSid) || !!(formRef !== null && formRef !== void 0 && (_formRef$current2 = formRef.current) !== null && _formRef$current2 !== void 0 && (_formRef$current2 = _formRef$current2.values) !== null && _formRef$current2 !== void 0 && _formRef$current2.twilioAuthToken),
855
+ select: ramda.prop("phoneNumbers"),
856
+ retry: false
857
+ });
858
+ };
859
+ var useCreateTwilioConfiguration = function useCreateTwilioConfiguration(_ref3) {
860
+ var integrable = _ref3.integrable;
861
+ return reactUtils.useMutationWithInvalidation(function (payload) {
862
+ return twilioApi.createTwilioConfiguration(payload, integrable);
863
+ }, {
864
+ keysToInvalidate: [QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId]
865
+ });
866
+ };
867
+
868
+ var useTwilio = function useTwilio(_ref) {
869
+ var _ref$onConnect = _ref.onConnect,
870
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect,
871
+ _ref$formRef = _ref.formRef,
872
+ formRef = _ref$formRef === void 0 ? null : _ref$formRef,
873
+ _ref$integrable = _ref.integrable,
874
+ integrable = _ref$integrable === void 0 ? null : _ref$integrable;
875
+ var _useFetchTwilioSmsCon = useFetchTwilioSmsConfiguration({
876
+ integrable: integrable
877
+ }),
878
+ _useFetchTwilioSmsCon2 = _useFetchTwilioSmsCon.data,
879
+ configuration = _useFetchTwilioSmsCon2 === void 0 ? {} : _useFetchTwilioSmsCon2,
880
+ isConfigurationLoading = _useFetchTwilioSmsCon.isLoading;
881
+ var _useStateWithDependen = reactUtils.useStateWithDependency(configuration),
882
+ _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
883
+ credentials = _useStateWithDependen2[0],
884
+ setCredentials = _useStateWithDependen2[1];
885
+ var _useFetchTwilioPhoneN = useFetchTwilioPhoneNumbers({
886
+ credentials: credentials,
887
+ formRef: formRef
888
+ }),
889
+ phoneNumbers = _useFetchTwilioPhoneN.data,
890
+ isPhoneNumbersLoading = _useFetchTwilioPhoneN.isLoading;
891
+ var _useCreateTwilioConfi = useCreateTwilioConfiguration({
892
+ integrable: integrable
893
+ }),
894
+ saveConfiguration = _useCreateTwilioConfi.mutate,
895
+ isSubmitting = _useCreateTwilioConfi.isPending;
896
+ var handleSubmit = function handleSubmit(values) {
897
+ var _values$twilioPhoneNu;
898
+ var payload = {
899
+ twilio_sid: values.twilioSid,
900
+ twilio_auth_token: values.twilioAuthToken,
901
+ twilio_phone_number_sid: (_values$twilioPhoneNu = values.twilioPhoneNumber) === null || _values$twilioPhoneNu === void 0 ? void 0 : _values$twilioPhoneNu.value
902
+ };
903
+ if (!phoneNumbers && !(configuration !== null && configuration !== void 0 && configuration.twilioPhoneNumber)) {
904
+ setCredentials(payload);
905
+ return;
906
+ }
907
+ saveConfiguration(payload, {
908
+ onSuccess: onConnect
909
+ });
910
+ };
911
+ return {
912
+ handleSubmit: handleSubmit,
913
+ phoneNumbers: phoneNumbers,
914
+ isConfigurationLoading: isConfigurationLoading,
915
+ isPhoneNumbersLoading: isPhoneNumbersLoading,
916
+ isSubmitting: isSubmitting,
917
+ configuration: configuration
918
+ };
919
+ };
920
+
921
+ var buildTwilioConfigurationValidationSchema = function buildTwilioConfigurationValidationSchema(isTwilioPhoneRequired) {
922
+ return yup__namespace.object().shape({
923
+ twilioSid: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.sidReq")),
924
+ twilioAuthToken: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.authTokenReq")),
925
+ twilioPhoneNumber: isTwilioPhoneRequired ? yup__namespace.object().shape({
926
+ label: yup__namespace.string(),
927
+ value: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.phNumReq"))
928
+ }) : null
929
+ });
930
+ };
931
+ var buildPhoneNumberOptions = function buildPhoneNumberOptions(phoneNumbers) {
932
+ return phoneNumbers === null || phoneNumbers === void 0 ? void 0 : phoneNumbers.map(function (_ref) {
933
+ var phoneNumber = _ref.phoneNumber,
934
+ sid = _ref.sid;
935
+ return {
936
+ label: phoneNumber,
937
+ value: sid
938
+ };
939
+ });
940
+ };
941
+
942
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
943
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
944
+ var Twilio = function Twilio(_ref) {
945
+ var _ref$integrable = _ref.integrable,
946
+ integrable = _ref$integrable === void 0 ? null : _ref$integrable,
278
947
  _ref$onClose = _ref.onClose,
279
- onClose = _ref$onClose === void 0 ? pure.noop : _ref$onClose,
948
+ onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose,
949
+ _ref$onConnect = _ref.onConnect,
950
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect;
951
+ var _useTranslation = reactI18next.useTranslation(),
952
+ t = _useTranslation.t;
953
+ var initialFocusRef = React.useRef();
954
+ var formRef = React.useRef();
955
+ var _useTwilio = useTwilio({
956
+ onConnect: onConnect,
957
+ formRef: formRef,
958
+ integrable: integrable
959
+ }),
960
+ handleSubmit = _useTwilio.handleSubmit,
961
+ phoneNumbers = _useTwilio.phoneNumbers,
962
+ isConfigurationLoading = _useTwilio.isConfigurationLoading,
963
+ isPhoneNumbersLoading = _useTwilio.isPhoneNumbersLoading,
964
+ isSubmitting = _useTwilio.isSubmitting,
965
+ configuration = _useTwilio.configuration;
966
+ var phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);
967
+ var selectedPhoneNumber = neetoCist._findBy({
968
+ label: configuration === null || configuration === void 0 ? void 0 : configuration.twilioPhoneNumber
969
+ }, phoneNumberOptions);
970
+ var isLoading = isPhoneNumbersLoading || isConfigurationLoading;
971
+ var isSubmitDisabled = function isSubmitDisabled(values) {
972
+ return ramda.equals(_objectSpread$2(_objectSpread$2({}, configuration), {}, {
973
+ twilioPhoneNumber: selectedPhoneNumber
974
+ }), values) || isLoading;
975
+ };
976
+ return /*#__PURE__*/jsxRuntime.jsx(FormikForm__default["default"], {
977
+ className: "mx-auto flex w-full max-w-md flex-col p-5",
978
+ formikProps: {
979
+ enableReinitialize: true,
980
+ validationSchema: buildTwilioConfigurationValidationSchema(!!phoneNumbers),
981
+ initialValues: configuration,
982
+ innerRef: formRef,
983
+ onSubmit: handleSubmit
984
+ },
985
+ children: function children(formikProps) {
986
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
987
+ children: [/*#__PURE__*/jsxRuntime.jsx(ConfigurationForm, {
988
+ formikProps: formikProps,
989
+ initialFocusRef: initialFocusRef,
990
+ phoneNumberOptions: phoneNumberOptions,
991
+ selectedPhoneNumber: selectedPhoneNumber
992
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
993
+ className: "mt-8",
994
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
995
+ isSubmitting: isSubmitting,
996
+ cancelButtonProps: {
997
+ onClick: onClose
998
+ },
999
+ submitButtonProps: {
1000
+ label: phoneNumberOptions ? t("neetoIntegrations.common.saveChanges") : t("neetoIntegrations.common.verify"),
1001
+ disabled: isSubmitDisabled(formikProps.values) || isSubmitting,
1002
+ loading: isSubmitting || isPhoneNumbersLoading && !(configuration !== null && configuration !== void 0 && configuration.twilioAuthToken)
1003
+ }
1004
+ })
1005
+ })]
1006
+ });
1007
+ }
1008
+ });
1009
+ };
1010
+
1011
+ var show = function show() {
1012
+ return axios__default["default"].get(INTEGRATION_DETAILS_URL, {
1013
+ params: {
1014
+ serviceName: "Zoom",
1015
+ integrableType: "User"
1016
+ }
1017
+ });
1018
+ };
1019
+ var destroy = function destroy() {
1020
+ return axios__default["default"]["delete"]("".concat(INTEGRATIONS_ENGINE_ZOOM_URL, "/oauth"));
1021
+ };
1022
+ var zoomApi = {
1023
+ show: show,
1024
+ destroy: destroy
1025
+ };
1026
+
1027
+ var useShowZoom = function useShowZoom() {
1028
+ return reactQuery.useQuery({
1029
+ queryKey: [QUERY_KEYS.ZOOM_DETAILS],
1030
+ queryFn: zoomApi.show,
1031
+ staleTime: constants.DEFAULT_STALE_TIME
1032
+ });
1033
+ };
1034
+ var useDestroyZoom = function useDestroyZoom(_ref) {
1035
+ var _onSuccess = _ref.onSuccess;
1036
+ return reactUtils.useMutationWithInvalidation(zoomApi.destroy, {
1037
+ keysToInvalidate: [QUERY_KEYS.ZOOM_DETAILS],
1038
+ onSuccess: function onSuccess() {
1039
+ return _onSuccess === null || _onSuccess === void 0 ? void 0 : _onSuccess();
1040
+ }
1041
+ });
1042
+ };
1043
+
1044
+ var Zoom = function Zoom(_ref) {
1045
+ var _ref$connectUrl = _ref.connectUrl,
1046
+ connectUrl = _ref$connectUrl === void 0 ? "" : _ref$connectUrl,
1047
+ _ref$description = _ref.description,
1048
+ description = _ref$description === void 0 ? "" : _ref$description,
280
1049
  _ref$onDisconnect = _ref.onDisconnect,
281
- onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect,
282
- otherProps = _objectWithoutProperties(_ref, _excluded);
1050
+ onDisconnect = _ref$onDisconnect === void 0 ? neetoCist.noop : _ref$onDisconnect;
283
1051
  var _useTranslation = reactI18next.useTranslation(),
284
1052
  t = _useTranslation.t;
285
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Alert, _extends$1({
286
- closeOnEsc: true,
287
- closeOnOutsideClick: true,
288
- isOpen: isOpen,
289
- isSubmitting: isDisconnecting,
290
- message: message,
291
- submitButtonLabel: t("neetoIntegrations.common.disconnect"),
292
- title: title,
293
- onClose: onClose,
294
- onSubmit: onDisconnect
295
- }, otherProps));
1053
+ var _useState = React.useState(false),
1054
+ _useState2 = _slicedToArray(_useState, 2),
1055
+ isDisconnectAlertOpen = _useState2[0],
1056
+ setIsDisconnectAlertOpen = _useState2[1];
1057
+ var _useShowZoom = useShowZoom(),
1058
+ _useShowZoom$data = _useShowZoom.data,
1059
+ _useShowZoom$data2 = _useShowZoom$data === void 0 ? {} : _useShowZoom$data,
1060
+ _useShowZoom$data2$me = _useShowZoom$data2.metadata,
1061
+ _useShowZoom$data2$me2 = _useShowZoom$data2$me === void 0 ? {} : _useShowZoom$data2$me,
1062
+ _useShowZoom$data2$me3 = _useShowZoom$data2$me2.email,
1063
+ email = _useShowZoom$data2$me3 === void 0 ? "" : _useShowZoom$data2$me3,
1064
+ isLoading = _useShowZoom.isLoading;
1065
+ var _useDestroyZoom = useDestroyZoom({
1066
+ onSuccess: function onSuccess() {
1067
+ setIsDisconnectAlertOpen(false);
1068
+ onDisconnect === null || onDisconnect === void 0 || onDisconnect();
1069
+ }
1070
+ }),
1071
+ destroyIntegration = _useDestroyZoom.mutate,
1072
+ isDisconnecting = _useDestroyZoom.isPending;
1073
+ var isConnected = neetoCist.isPresent(email);
1074
+ var handleDisconnect = function handleDisconnect() {
1075
+ return destroyIntegration("zoom");
1076
+ };
1077
+ if (isLoading) return /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {});
1078
+ return /*#__PURE__*/jsxRuntime.jsx(Manage$1, {
1079
+ connectUrl: connectUrl,
1080
+ isConnected: isConnected,
1081
+ isDisconnectAlertOpen: isDisconnectAlertOpen,
1082
+ isDisconnecting: isDisconnecting,
1083
+ setIsDisconnectAlertOpen: setIsDisconnectAlertOpen,
1084
+ Icon: misc.Zoom,
1085
+ integration: "zoom",
1086
+ description: isConnected ? /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
1087
+ components: {
1088
+ underline: /*#__PURE__*/jsxRuntime.jsx("u", {
1089
+ className: "font-medium"
1090
+ })
1091
+ },
1092
+ i18nKey: "neetoIntegrations.zoom.account",
1093
+ values: {
1094
+ email: email
1095
+ }
1096
+ }) : description,
1097
+ title: isConnected ? t("neetoIntegrations.zoom.connected") : t("neetoIntegrations.zoom.connect"),
1098
+ onClose: function onClose() {
1099
+ return setIsDisconnectAlertOpen(false);
1100
+ },
1101
+ onDisconnect: function onDisconnect() {
1102
+ return handleDisconnect();
1103
+ }
1104
+ });
296
1105
  };
297
1106
 
298
1107
  var Stepper = function Stepper(_ref) {
@@ -301,66 +1110,80 @@ var Stepper = function Stepper(_ref) {
301
1110
  var isActiveOrCompleted = function isActiveOrCompleted(activeStatus, completedStatus) {
302
1111
  return activeStatus || completedStatus;
303
1112
  };
304
- return /*#__PURE__*/React__default["default"].createElement("ul", {
305
- className: "flex gap-4"
306
- }, steps === null || steps === void 0 ? void 0 : steps.map(function (_ref2) {
307
- var step = _ref2.step,
308
- label = _ref2.label,
309
- isActive = _ref2.isActive,
310
- isCompleted = _ref2.isCompleted;
311
- return /*#__PURE__*/React__default["default"].createElement("li", {
312
- className: "flex items-center gap-4",
313
- key: step
314
- }, step !== "1" && /*#__PURE__*/React__default["default"].createElement("div", {
315
- className: classnames__default["default"]("w-10 border-b", {
316
- "neeto-ui-border-gray-800": isActiveOrCompleted(isActive, isCompleted),
317
- "neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
318
- })
319
- }), /*#__PURE__*/React__default["default"].createElement("div", {
320
- className: "flex items-center gap-2"
321
- }, /*#__PURE__*/React__default["default"].createElement("div", {
322
- className: classnames__default["default"]("neeto-ui-rounded-full neeto-ui-gray-600 flex h-6 w-6 items-center justify-center border", {
323
- "neeto-ui-bg-success-600 neeto-ui-border-success-600 neeto-ui-text-white": isActive,
324
- "neeto-ui-bg-primary-600 neeto-ui-border-primary-600 neeto-ui-text-white": isCompleted,
325
- "neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
326
- })
327
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
328
- component: "span",
329
- style: "body2",
330
- weight: "normal"
331
- }, step)), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
332
- style: "body2",
333
- weight: "normal",
334
- className: classnames__default["default"]({
335
- "neeto-ui-text-gray-800": isActiveOrCompleted(isActive, isCompleted),
336
- "neeto-ui-text-gray-600": !isActiveOrCompleted(isActive, isCompleted)
337
- })
338
- }, label)));
339
- }));
1113
+ return /*#__PURE__*/jsxRuntime.jsx("ul", {
1114
+ className: "flex gap-4",
1115
+ children: steps === null || steps === void 0 ? void 0 : steps.map(function (_ref2) {
1116
+ var step = _ref2.step,
1117
+ label = _ref2.label,
1118
+ isActive = _ref2.isActive,
1119
+ isCompleted = _ref2.isCompleted;
1120
+ return /*#__PURE__*/jsxRuntime.jsxs("li", {
1121
+ className: "flex items-center gap-4",
1122
+ children: [step !== "1" && /*#__PURE__*/jsxRuntime.jsx("div", {
1123
+ className: classnames__default["default"]("w-10 border-b", {
1124
+ "neeto-ui-border-gray-800": isActiveOrCompleted(isActive, isCompleted),
1125
+ "neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
1126
+ })
1127
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1128
+ className: "flex items-center gap-2",
1129
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
1130
+ className: classnames__default["default"]("neeto-ui-rounded-full neeto-ui-gray-600 flex h-6 w-6 items-center justify-center border", {
1131
+ "neeto-ui-bg-success-600 neeto-ui-border-success-600 neeto-ui-text-white": isActive,
1132
+ "neeto-ui-bg-primary-600 neeto-ui-border-primary-600 neeto-ui-text-white": isCompleted,
1133
+ "neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
1134
+ }),
1135
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1136
+ component: "span",
1137
+ style: "body2",
1138
+ weight: "normal",
1139
+ children: step
1140
+ })
1141
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1142
+ style: "body2",
1143
+ weight: "normal",
1144
+ className: classnames__default["default"]({
1145
+ "neeto-ui-text-gray-800": isActiveOrCompleted(isActive, isCompleted),
1146
+ "neeto-ui-text-gray-600": !isActiveOrCompleted(isActive, isCompleted)
1147
+ }),
1148
+ children: label
1149
+ })]
1150
+ })]
1151
+ }, step);
1152
+ })
1153
+ });
340
1154
  };
341
1155
 
342
1156
  var Modal = function Modal(_ref) {
343
1157
  var _ref$isOpen = _ref.isOpen,
344
- isOpen = _ref$isOpen === void 0 ? pure.noop : _ref$isOpen,
1158
+ isOpen = _ref$isOpen === void 0 ? neetoCist.noop : _ref$isOpen,
345
1159
  _ref$onClose = _ref.onClose,
346
- onClose = _ref$onClose === void 0 ? pure.noop : _ref$onClose,
1160
+ onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose,
347
1161
  _ref$steps = _ref.steps,
348
1162
  steps = _ref$steps === void 0 ? {} : _ref$steps,
349
1163
  children = _ref.children;
350
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Modal, {
351
- className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-transform-none w-screen overflow-y-auto",
1164
+ return /*#__PURE__*/jsxRuntime.jsxs(NeetoUIModal__default["default"], {
352
1165
  isOpen: isOpen,
1166
+ onClose: onClose,
1167
+ className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-transform-none w-screen overflow-y-auto",
353
1168
  size: "fullScreen",
354
- onClose: onClose
355
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Header, null, /*#__PURE__*/React__default["default"].createElement(Stepper, {
356
- steps: steps
357
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Body, {
358
- className: "neeto-ui-flex neeto-ui-justify-center neeto-ui-items-center neeto-ui-flex-grow"
359
- }, /*#__PURE__*/React__default["default"].createElement("div", {
360
- className: "neeto-ui-w-full py-10"
361
- }, children)));
1169
+ children: [/*#__PURE__*/jsxRuntime.jsx(NeetoUIModal__default["default"].Header, {
1170
+ children: /*#__PURE__*/jsxRuntime.jsx(Stepper, {
1171
+ steps: steps
1172
+ })
1173
+ }), /*#__PURE__*/jsxRuntime.jsx(NeetoUIModal__default["default"].Body, {
1174
+ className: "neeto-ui-flex neeto-ui-justify-center neeto-ui-flex-grow",
1175
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
1176
+ className: "neeto-ui-w-full py-10",
1177
+ children: children
1178
+ })
1179
+ })]
1180
+ });
362
1181
  };
363
1182
 
1183
+ function getDefaultExportFromCjs (x) {
1184
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
1185
+ }
1186
+
364
1187
  var propTypes = {exports: {}};
365
1188
 
366
1189
  /**
@@ -436,9 +1259,14 @@ var factoryWithThrowingShims = function factoryWithThrowingShims() {
436
1259
  // http://fb.me/prop-types-in-prod
437
1260
  propTypes.exports = factoryWithThrowingShims();
438
1261
  }
1262
+ var propTypesExports = propTypes.exports;
1263
+ var PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);
439
1264
 
440
- var Connect = function Connect(_ref) {
441
- var Icon = _ref.Icon,
1265
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1266
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1267
+ var Connect = reactUtils.withT(function (_ref) {
1268
+ var t = _ref.t,
1269
+ Icon = _ref.Icon,
442
1270
  _ref$title = _ref.title,
443
1271
  title = _ref$title === void 0 ? "" : _ref$title,
444
1272
  _ref$description = _ref.description,
@@ -446,141 +1274,176 @@ var Connect = function Connect(_ref) {
446
1274
  _ref$buttonProps = _ref.buttonProps,
447
1275
  buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
448
1276
  _ref$onConnect = _ref.onConnect,
449
- onConnect = _ref$onConnect === void 0 ? pure.noop : _ref$onConnect,
450
- children = _ref.children;
451
- var _useTranslation = reactI18next.useTranslation(),
452
- t = _useTranslation.t;
453
- return /*#__PURE__*/React__default["default"].createElement("div", {
454
- className: "mx-auto w-full max-w-lg"
455
- }, /*#__PURE__*/React__default["default"].createElement(Icon, {
456
- size: 48
457
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
458
- className: "neeto-ui-text-gray-800 mb-0.5 mt-6",
459
- style: "h2",
460
- weight: "semibold"
461
- }, title), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
462
- className: "neeto-ui-text-gray-700 mb-8",
463
- style: "body1",
464
- weight: "normal"
465
- }, description), children, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends$1({
466
- label: t("neetoIntegrations.common.connect"),
467
- onClick: onConnect
468
- }, buttonProps)));
469
- };
1277
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect,
1278
+ children = _ref.children,
1279
+ secondaryButtonProps = _ref.secondaryButtonProps;
1280
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
1281
+ className: "mx-auto w-full max-w-3xl",
1282
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
1283
+ className: "mb-6 flex flex-col gap-y-2",
1284
+ children: [/*#__PURE__*/jsxRuntime.jsx(Icon, {
1285
+ size: 48
1286
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1287
+ className: "flex flex-col gap-y-1",
1288
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1289
+ style: "h2",
1290
+ children: title
1291
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1292
+ style: "body2",
1293
+ children: description
1294
+ })]
1295
+ })]
1296
+ }), children, /*#__PURE__*/jsxRuntime.jsxs("div", {
1297
+ className: "flex w-full items-center gap-x-3",
1298
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread$1({
1299
+ label: t("neetoIntegrations.common.connect"),
1300
+ onClick: onConnect
1301
+ }, buttonProps)), secondaryButtonProps && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread$1({
1302
+ style: "secondary"
1303
+ }, secondaryButtonProps))]
1304
+ })]
1305
+ });
1306
+ });
470
1307
  Connect.prototypes = {
471
1308
  /**
472
1309
  * To specify the Icon to be shown
473
1310
  */
474
- Icon: propTypes.exports.PropTypes.node,
1311
+ Icon: PropTypes.node,
475
1312
  /**
476
1313
  * To specify the title of the connect component
477
1314
  */
478
- title: propTypes.exports.PropTypes.string,
1315
+ title: PropTypes.string,
479
1316
  /**
480
1317
  * To specify the description for connect component
481
1318
  */
482
- description: propTypes.exports.PropTypes.string,
1319
+ description: PropTypes.string,
483
1320
  /**
484
1321
  * To specify the props for the connect button
485
1322
  */
486
- buttonProps: propTypes.exports.PropTypes.object,
1323
+ buttonProps: PropTypes.object,
487
1324
  /**
488
1325
  * Handler function that is triggered when the connect button is clicked.
489
1326
  */
490
- onConnect: propTypes.exports.PropTypes.func
1327
+ onConnect: PropTypes.func
491
1328
  };
492
1329
 
493
1330
  var isYouTubeLink = function isYouTubeLink(videoUrl) {
494
1331
  var youtubeRegex = /^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.be)\//;
495
1332
  return youtubeRegex.test(videoUrl);
496
1333
  };
1334
+ var renderText = function renderText(text, fallbackTranslation) {
1335
+ return ramda.isEmpty(text) ? fallbackTranslation : text;
1336
+ };
497
1337
 
498
1338
  var Demo = function Demo(_ref) {
499
- var _ref$onClose = _ref.onClose,
500
- onClose = _ref$onClose === void 0 ? pure.noop : _ref$onClose,
1339
+ var _ref$title = _ref.title,
1340
+ title = _ref$title === void 0 ? "" : _ref$title,
1341
+ _ref$subtitle = _ref.subtitle,
1342
+ subtitle = _ref$subtitle === void 0 ? "" : _ref$subtitle,
1343
+ _ref$iframeTitle = _ref.iframeTitle,
1344
+ iframeTitle = _ref$iframeTitle === void 0 ? "" : _ref$iframeTitle,
1345
+ _ref$onClose = _ref.onClose,
1346
+ onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose,
501
1347
  _ref$videoUrl = _ref.videoUrl,
502
1348
  videoUrl = _ref$videoUrl === void 0 ? "" : _ref$videoUrl,
503
1349
  children = _ref.children;
504
1350
  var _useTranslation = reactI18next.useTranslation(),
505
1351
  t = _useTranslation.t;
506
1352
  var renderVideo = function renderVideo(videoUrl) {
507
- return isYouTubeLink(videoUrl) ? /*#__PURE__*/React__default["default"].createElement("div", {
508
- className: "intrinsic-container intrinsic-container-16x9"
509
- }, /*#__PURE__*/React__default["default"].createElement("iframe", {
510
- className: "border-none",
1353
+ return isYouTubeLink(videoUrl) ? /*#__PURE__*/jsxRuntime.jsx("iframe", {
1354
+ allowFullScreen: true,
1355
+ className: "aspect-video border-none",
511
1356
  frameBorder: "0",
512
1357
  id: "ytplayer",
513
1358
  src: videoUrl,
514
- title: t("neetoIntegrations.demo.iFrameTitle"),
1359
+ title: renderText(iframeTitle, t("neetoIntegrations.demo.iFrameTitle")),
515
1360
  type: "text/html"
516
- })) : /*#__PURE__*/React__default["default"].createElement("video", {
1361
+ }) : /*#__PURE__*/jsxRuntime.jsx("video", {
517
1362
  autoPlay: true,
518
1363
  controls: true,
519
1364
  muted: true,
520
- className: "max-w-3xl cursor-pointer md:max-w-xl",
521
- id: "walkthrough-video"
522
- }, /*#__PURE__*/React__default["default"].createElement("source", {
523
- src: videoUrl
524
- }));
1365
+ className: "neeto-ui-rounded-xl aspect-video w-full max-w-3xl cursor-pointer",
1366
+ id: "walkthrough-video",
1367
+ children: /*#__PURE__*/jsxRuntime.jsx("source", {
1368
+ src: videoUrl
1369
+ })
1370
+ });
525
1371
  };
526
- return /*#__PURE__*/React__default["default"].createElement("div", {
527
- className: "mx-auto max-w-3xl md:max-w-xl"
528
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
529
- className: "neeto-ui-text-gray-800 mt-4 py-2",
530
- style: "h2",
531
- weight: "semibold"
532
- }, t("neetoIntegrations.demo.title")), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
533
- style: "body2",
534
- weight: "light"
535
- }, t("neetoIntegrations.demo.subtitle")), children, videoUrl && /*#__PURE__*/React__default["default"].createElement("div", {
536
- className: "py-10"
537
- }, renderVideo(videoUrl)), /*#__PURE__*/React__default["default"].createElement("div", {
538
- className: "flex w-full items-start space-x-2"
539
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
540
- label: t("neetoIntegrations.common.finish"),
541
- onClick: onClose
542
- })));
1372
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
1373
+ className: "mx-auto w-full max-w-3xl",
1374
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
1375
+ className: "mb-6 flex flex-col gap-y-1",
1376
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1377
+ style: "h2",
1378
+ children: renderText(title, t("neetoIntegrations.demo.title"))
1379
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1380
+ style: "body2",
1381
+ children: renderText(subtitle, t("neetoIntegrations.demo.subtitle"))
1382
+ })]
1383
+ }), children, videoUrl && /*#__PURE__*/jsxRuntime.jsx("div", {
1384
+ className: "mb-8",
1385
+ children: renderVideo(videoUrl)
1386
+ }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
1387
+ label: t("neetoIntegrations.common.finish"),
1388
+ onClick: onClose
1389
+ })]
1390
+ });
543
1391
  };
544
1392
  Demo.prototypes = {
545
1393
  /**
546
1394
  * To specify whether the integration modal should be opened or closed.
547
1395
  */
548
- onClose: propTypes.exports.func,
1396
+ onClose: PropTypes.func,
549
1397
  /**
550
1398
  * To specify the walkthrough video link
551
1399
  */
552
- videoUrl: propTypes.exports.string
1400
+ videoUrl: PropTypes.string,
1401
+ /**
1402
+ * To specify the title of the demo component
1403
+ */
1404
+ title: PropTypes.string,
1405
+ /**
1406
+ * To specify the subtitle of the demo component
1407
+ */
1408
+ subtitle: PropTypes.string,
1409
+ /**
1410
+ * To specify the title of the video in the iframe
1411
+ */
1412
+ iframeTitle: PropTypes.string
553
1413
  };
554
1414
 
555
1415
  var _path, _defs;
556
1416
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
557
1417
  const SvgSuccess = props => /*#__PURE__*/React__namespace.createElement("svg", _extends({
1418
+ xmlns: "http://www.w3.org/2000/svg",
1419
+ xmlnsXlink: "http://www.w3.org/1999/xlink",
558
1420
  width: 72,
559
1421
  height: 72,
560
- fill: "none",
561
- xmlns: "http://www.w3.org/2000/svg",
562
- xmlnsXlink: "http://www.w3.org/1999/xlink"
1422
+ fill: "none"
563
1423
  }, props), _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
564
1424
  fill: "url(#success_svg__a)",
565
1425
  d: "M0 0h72v72H0z"
566
1426
  })), _defs || (_defs = /*#__PURE__*/React__namespace.createElement("defs", null, /*#__PURE__*/React__namespace.createElement("pattern", {
567
1427
  id: "success_svg__a",
568
- patternContentUnits: "objectBoundingBox",
569
1428
  width: 1,
570
- height: 1
1429
+ height: 1,
1430
+ patternContentUnits: "objectBoundingBox"
571
1431
  }, /*#__PURE__*/React__namespace.createElement("use", {
572
1432
  xlinkHref: "#success_svg__b",
573
1433
  transform: "scale(.0029)"
574
1434
  })), /*#__PURE__*/React__namespace.createElement("image", {
1435
+ xlinkHref: "data:image/png;base64,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WkH/ssvowWQz/YBFlR9ZwAICIBBXAqH1YL0OD+gniPJkO18J3kBp9lTfTfSi+yrepx+Li6hNPxZpEACBeBIIrcB6MXogzynR+Y4q6k0zkpIv/0/E5X8eVtgFArElEMoQgU/hAbz4L7ZfEzQcBEojEEoP1sPwAES1tPMKuUAABJhAKAXW5fAARBVfDRAAASMEQhcicCk8AFE1cjqhEBAAgWwCofNgDYYHIKrZZwLWQQAEjBMIncA6DA9AVI2fQigQBEAgF4FQhQjkMurTXkEbuDGVuRrUzXaIajdQsAkEQMB9AqHyYNvK6Tz+RShEXCGq7p87qAEEQKAHAqES2B7CAxDVHjobu0EABLwlEJoQQY7wAETV2/MFtYEACBRBIDQebFZ4AKJaRAfjUBAAAf8IhEZgyaKUSNO4suG0RE0F6B8y1AwCIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAAC7hD4/8l256QQPdLRAAAAAElFTkSuQmCC",
575
1436
  id: "success_svg__b",
576
1437
  width: 344,
577
- height: 344,
578
- xlinkHref: "data:image/png;base64,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WkH/ssvowWQz/YBFlR9ZwAICIBBXAqH1YL0OD+gniPJkO18J3kBp9lTfTfSi+yrepx+Li6hNPxZpEACBeBIIrcB6MXogzynR+Y4q6k0zkpIv/0/E5X8eVtgFArElEMoQgU/hAbz4L7ZfEzQcBEojEEoP1sPwAES1tPMKuUAABJhAKAXW5fAARBVfDRAAASMEQhcicCk8AFE1cjqhEBAAgWwCofNgDYYHIKrZZwLWQQAEjBMIncA6DA9AVI2fQigQBEAgF4FQhQjkMurTXkEbuDGVuRrUzXaIajdQsAkEQMB9AqHyYNvK6Tz+RShEXCGq7p87qAEEQKAHAqES2B7CAxDVHjobu0EABLwlEJoQQY7wAETV2/MFtYEACBRBIDQebFZ4AKJaRAfjUBAAAf8IhEZgyaKUSNO4suG0RE0F6B8y1AwCIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAAC7hD4/8l256QQPdLRAAAAAElFTkSuQmCC"
1438
+ height: 344
579
1439
  }))));
580
1440
 
581
- var Finish = function Finish(_ref) {
582
- var _ref$onClick = _ref.onClick,
583
- onClick = _ref$onClick === void 0 ? pure.noop : _ref$onClick,
1441
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1442
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1443
+ var Finish = reactUtils.withT(function (_ref) {
1444
+ var t = _ref.t,
1445
+ _ref$onClick = _ref.onClick,
1446
+ onClick = _ref$onClick === void 0 ? neetoCist.noop : _ref$onClick,
584
1447
  _ref$title = _ref.title,
585
1448
  title = _ref$title === void 0 ? "" : _ref$title,
586
1449
  _ref$buttonProps = _ref.buttonProps,
@@ -588,73 +1451,41 @@ var Finish = function Finish(_ref) {
588
1451
  _ref$secondaryButtonP = _ref.secondaryButtonProps,
589
1452
  secondaryButtonProps = _ref$secondaryButtonP === void 0 ? {} : _ref$secondaryButtonP,
590
1453
  children = _ref.children;
591
- var _useTranslation = reactI18next.useTranslation(),
592
- t = _useTranslation.t;
593
- return /*#__PURE__*/React__default["default"].createElement("div", {
594
- className: "neeto-ui-w-full mx-auto max-w-lg"
595
- }, /*#__PURE__*/React__default["default"].createElement(SvgSuccess, null), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
596
- className: "neeto-ui-text-gray-800 mb-8 mt-4",
597
- style: "h2",
598
- weight: "semibold"
599
- }, title), children, /*#__PURE__*/React__default["default"].createElement("div", {
600
- className: "flex w-full items-start space-x-2"
601
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends$1({
602
- label: t("neetoIntegrations.common.continue"),
603
- onClick: onClick
604
- }, buttonProps)), pure.isNotEmpty(secondaryButtonProps) && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends$1({
605
- style: "secondary"
606
- }, secondaryButtonProps))));
607
- };
1454
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
1455
+ className: "mx-auto w-full max-w-3xl",
1456
+ children: [/*#__PURE__*/jsxRuntime.jsx(SvgSuccess, {}), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
1457
+ className: "mb-6 mt-4",
1458
+ style: "h2",
1459
+ weight: "semibold",
1460
+ children: title
1461
+ }), children, /*#__PURE__*/jsxRuntime.jsxs("div", {
1462
+ className: "flex w-full items-center gap-x-2",
1463
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread({
1464
+ onClick: onClick,
1465
+ label: t("neetoIntegrations.common.continue")
1466
+ }, buttonProps)), neetoCist.isNotEmpty(secondaryButtonProps) && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread({
1467
+ style: "secondary"
1468
+ }, secondaryButtonProps))]
1469
+ })]
1470
+ });
1471
+ });
608
1472
  Finish.prototypes = {
609
1473
  /**
610
1474
  * To specify whether the integration modal should be opened or closed.
611
1475
  */
612
- onClick: propTypes.exports.func,
1476
+ onClick: PropTypes.func,
613
1477
  /**
614
1478
  * To show the title of the Finish component
615
1479
  */
616
- title: propTypes.exports.string,
1480
+ title: PropTypes.string,
617
1481
  /**
618
1482
  * To specify props for primary button
619
1483
  */
620
- buttonProps: propTypes.exports.object,
1484
+ buttonProps: PropTypes.object,
621
1485
  /**
622
1486
  * To specify props for secondary button
623
1487
  */
624
- secondaryButtonProps: propTypes.exports.object
625
- };
626
-
627
- var WalkthroughModal = function WalkthroughModal(_ref) {
628
- var _ref$isOpen = _ref.isOpen,
629
- isOpen = _ref$isOpen === void 0 ? pure.noop : _ref$isOpen,
630
- _ref$onClose = _ref.onClose,
631
- onClose = _ref$onClose === void 0 ? pure.noop : _ref$onClose,
632
- _ref$videoUrl = _ref.videoUrl,
633
- videoUrl = _ref$videoUrl === void 0 ? "" : _ref$videoUrl,
634
- children = _ref.children;
635
- var _useTranslation = reactI18next.useTranslation(),
636
- t = _useTranslation.t;
637
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Modal, {
638
- isOpen: isOpen,
639
- size: "large",
640
- onClose: onClose
641
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
642
- style: "h2",
643
- weight: "semibold"
644
- }, t("neetoIntegrations.walkthroughModal.header"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
645
- className: "w-full py-10"
646
- }, /*#__PURE__*/React__default["default"].createElement("video", {
647
- autoPlay: true,
648
- controls: true,
649
- muted: true,
650
- className: "cursor-pointer",
651
- id: "walkthrough-video"
652
- }, /*#__PURE__*/React__default["default"].createElement("source", {
653
- src: videoUrl
654
- })), children)), /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Footer, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
655
- label: t("neetoIntegrations.walkthroughModal.continue"),
656
- onClick: onClose
657
- })));
1488
+ secondaryButtonProps: PropTypes.object
658
1489
  };
659
1490
 
660
1491
  var e = [],
@@ -682,11 +1513,26 @@ function n(n, r) {
682
1513
  var css = ".intrinsic-container{height:0;overflow:hidden;position:relative}.intrinsic-container-16x9{padding-bottom:56.25%}.intrinsic-container-4x3{padding-bottom:75%}.intrinsic-container iframe{height:100%;left:0;position:absolute;top:0;width:100%}";
683
1514
  n(css,{});
684
1515
 
685
- exports.Card = Card;
1516
+ Object.defineProperty(exports, 'Card', {
1517
+ enumerable: true,
1518
+ get: function () { return IntegrationCard__default["default"]; }
1519
+ });
1520
+ Object.defineProperty(exports, 'DisconnectAlert', {
1521
+ enumerable: true,
1522
+ get: function () { return DisconnectAlert__default["default"]; }
1523
+ });
1524
+ Object.defineProperty(exports, 'WalkthroughModal', {
1525
+ enumerable: true,
1526
+ get: function () { return WalkthroughModal__default["default"]; }
1527
+ });
686
1528
  exports.Connect = Connect;
1529
+ exports.Daily = index;
1530
+ exports.DailyForm = Form$1;
687
1531
  exports.Demo = Demo;
688
- exports.DisconnectAlert = DisconnectAlert;
689
1532
  exports.Finish = Finish;
1533
+ exports.GoogleCalendar = GoogleCalendar;
1534
+ exports.Manage = Manage$1;
690
1535
  exports.Modal = Modal;
691
- exports.WalkthroughModal = WalkthroughModal;
1536
+ exports.Twilio = Twilio;
1537
+ exports.Zoom = Zoom;
692
1538
  //# sourceMappingURL=index.cjs.js.map