@bigbinary/neeto-slack-frontend 2.3.0-beta1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +326 -279
  2. package/dist/Configure.js +110 -0
  3. package/dist/Configure.js.map +1 -0
  4. package/dist/Connect.js +34 -0
  5. package/dist/Connect.js.map +1 -0
  6. package/dist/Field-07124b6f.js +26 -0
  7. package/dist/Field-07124b6f.js.map +1 -0
  8. package/dist/Field-3be7830d.js +32 -0
  9. package/dist/Field-3be7830d.js.map +1 -0
  10. package/dist/Finish.js +96 -0
  11. package/dist/Finish.js.map +1 -0
  12. package/dist/Settings.js +185 -0
  13. package/dist/Settings.js.map +1 -0
  14. package/dist/SlackRefreshChannelListButton-84bf0344.js +102 -0
  15. package/dist/SlackRefreshChannelListButton-84bf0344.js.map +1 -0
  16. package/dist/SlackRefreshChannelListButton-95756902.js +72 -0
  17. package/dist/SlackRefreshChannelListButton-95756902.js.map +1 -0
  18. package/dist/cjs/Configure.js +120 -0
  19. package/dist/cjs/Configure.js.map +1 -0
  20. package/dist/cjs/Connect.js +42 -0
  21. package/dist/cjs/Connect.js.map +1 -0
  22. package/dist/{index.cjs.js → cjs/Finish.js} +51 -494
  23. package/dist/cjs/Finish.js.map +1 -0
  24. package/dist/cjs/Settings.js +199 -0
  25. package/dist/cjs/Settings.js.map +1 -0
  26. package/dist/cjs/hooks.js +13 -0
  27. package/dist/cjs/hooks.js.map +1 -0
  28. package/dist/cjs/index.js +43 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/defineProperty-e90a259c.js +43 -0
  31. package/dist/defineProperty-e90a259c.js.map +1 -0
  32. package/dist/defineProperty-f3094d6c.js +45 -0
  33. package/dist/defineProperty-f3094d6c.js.map +1 -0
  34. package/dist/hooks.js +5 -0
  35. package/dist/hooks.js.map +1 -0
  36. package/dist/index.js +30 -532
  37. package/dist/index.js.map +1 -1
  38. package/dist/inject-css-80a5faa3.js +6 -0
  39. package/dist/inject-css-80a5faa3.js.map +1 -0
  40. package/dist/inject-css-c86de496.js +4 -0
  41. package/dist/inject-css-c86de496.js.map +1 -0
  42. package/dist/useSlackStatusApi-24367316.js +85 -0
  43. package/dist/useSlackStatusApi-24367316.js.map +1 -0
  44. package/dist/useSlackStatusApi-c2dfe381.js +79 -0
  45. package/dist/useSlackStatusApi-c2dfe381.js.map +1 -0
  46. package/package.json +15 -2
  47. package/dist/index.cjs.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,533 +1,31 @@
1
- import * as React from 'react';
2
- import React__default from 'react';
3
- import { noop, isNotEmpty } from '@bigbinary/neeto-cist';
4
- import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
5
- import { Check } from '@bigbinary/neeto-icons';
6
- import { Slack } from '@bigbinary/neeto-icons/misc';
7
- import { Typography, Toastr, Button, Pane, Label } from '@bigbinary/neetoui';
8
- import { isEmpty, is } from 'ramda';
9
- import { useTranslation, Trans } from 'react-i18next';
10
- import { t as t$1 } from 'i18next';
11
- import * as yup from 'yup';
12
- import { Form, Select, ActionBlock } from '@bigbinary/neetoui/formik';
13
- import classNames from 'classnames';
14
- import { useQuery } from '@tanstack/react-query';
15
- import axios from 'axios';
16
-
17
- var Field = function Field(_ref) {
18
- var name = _ref.name,
19
- value = _ref.value,
20
- _ref$className = _ref.className,
21
- className = _ref$className === void 0 ? "" : _ref$className;
22
- return /*#__PURE__*/React__default.createElement("div", {
23
- className: "neeto-ui-mb-3 neeto-ui-w-full ".concat(className)
24
- }, /*#__PURE__*/React__default.createElement(Typography, {
25
- className: "neeto-ui-text-gray-800 neeto-ui-mb-1",
26
- style: "h5",
27
- weight: "semibold"
28
- }, name), /*#__PURE__*/React__default.createElement(Typography, {
29
- className: "neeto-ui-text-gray-700",
30
- style: "body2",
31
- weight: "normal"
32
- }, value));
33
- };
34
-
35
- function _typeof(o) {
36
- "@babel/helpers - typeof";
37
-
38
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
39
- return typeof o;
40
- } : function (o) {
41
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
42
- }, _typeof(o);
43
- }
44
-
45
- function _toPrimitive(input, hint) {
46
- if (_typeof(input) !== "object" || input === null) return input;
47
- var prim = input[Symbol.toPrimitive];
48
- if (prim !== undefined) {
49
- var res = prim.call(input, hint || "default");
50
- if (_typeof(res) !== "object") return res;
51
- throw new TypeError("@@toPrimitive must return a primitive value.");
52
- }
53
- return (hint === "string" ? String : Number)(input);
54
- }
55
-
56
- function _toPropertyKey(arg) {
57
- var key = _toPrimitive(arg, "string");
58
- return _typeof(key) === "symbol" ? key : String(key);
59
- }
60
-
61
- function _defineProperty(obj, key, value) {
62
- key = _toPropertyKey(key);
63
- if (key in obj) {
64
- Object.defineProperty(obj, key, {
65
- value: value,
66
- enumerable: true,
67
- configurable: true,
68
- writable: true
69
- });
70
- } else {
71
- obj[key] = value;
72
- }
73
- return obj;
74
- }
75
-
76
- var CHANNEL_NAME_VALIDAITON_SCHEMA = {
77
- selectedChannel: yup.object().shape({
78
- label: yup.mixed().nullable(),
79
- value: yup.string().required(t$1("neetoSlack.common.required", {
80
- entity: t$1("neetoSlack.slack.channelName")
81
- }))
82
- }).required().nullable()
83
- };
84
-
85
- 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; }
86
- 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; }
87
- var buildValidationSchema = function buildValidationSchema(customValidationSchema) {
88
- return yup.object().shape(_objectSpread$2(_objectSpread$2({}, customValidationSchema), CHANNEL_NAME_VALIDAITON_SCHEMA));
89
- };
90
- var toSlackUrl = function toSlackUrl(teamName) {
91
- return "https://".concat(teamName === null || teamName === void 0 ? void 0 : teamName.replace(/\s/g, "").toLowerCase(), ".slack.com");
92
- };
93
- var slackChannelRefresh = function slackChannelRefresh(channelRefreshHandler) {
94
- channelRefreshHandler();
95
- Toastr.success(t$1("neetoSlack.slack.channelListRefreshToastr"));
96
- };
97
-
98
- function _extends$1() {
99
- _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
100
- for (var i = 1; i < arguments.length; i++) {
101
- var source = arguments[i];
102
- for (var key in source) {
103
- if (Object.prototype.hasOwnProperty.call(source, key)) {
104
- target[key] = source[key];
105
- }
106
- }
107
- }
108
- return target;
109
- };
110
- return _extends$1.apply(this, arguments);
111
- }
112
-
113
- var ChannelSelectOption = function ChannelSelectOption(_ref) {
114
- var label = _ref.label,
115
- isPrivate = _ref.isPrivate;
116
- return /*#__PURE__*/React__default.createElement("div", {
117
- className: "flex items-center justify-between"
118
- }, /*#__PURE__*/React__default.createElement("span", null, label), /*#__PURE__*/React__default.createElement(Typography, {
119
- className: "neeto-ui-text-gray-500 italic",
120
- style: "body3"
121
- }, isPrivate ? "private" : ""));
122
- };
123
-
124
- var SlackRefreshChannelListButton = withT(function (_ref) {
125
- var t = _ref.t,
126
- channelRefreshHandler = _ref.channelRefreshHandler,
127
- _ref$className = _ref.className,
128
- className = _ref$className === void 0 ? "pl-1" : _ref$className;
129
- return /*#__PURE__*/React__default.createElement("div", {
130
- className: "relative top-0 flex justify-center"
131
- }, /*#__PURE__*/React__default.createElement(Button, {
132
- className: className,
133
- label: t("neetoSlack.slack.channelListRefreshButton"),
134
- style: "link",
135
- onClick: function onClick() {
136
- return slackChannelRefresh(channelRefreshHandler);
137
- }
138
- }));
139
- });
140
- var SlackRefreshChannelListButton$1 = /*#__PURE__*/React__default.memo(SlackRefreshChannelListButton);
141
-
142
- 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; }
143
- 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; }
144
- var EditPane = function EditPane(_ref) {
145
- var _ref$isPaneOpen = _ref.isPaneOpen,
146
- isPaneOpen = _ref$isPaneOpen === void 0 ? false : _ref$isPaneOpen,
147
- _ref$onClose = _ref.onClose,
148
- onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
149
- _ref$title = _ref.title,
150
- title = _ref$title === void 0 ? "" : _ref$title,
151
- children = _ref.children,
152
- _ref$initialFormValue = _ref.initialFormValues,
153
- initialFormValues = _ref$initialFormValue === void 0 ? {} : _ref$initialFormValue,
154
- _ref$handleSubmit = _ref.handleSubmit,
155
- handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
156
- _ref$isSubmitting = _ref.isSubmitting,
157
- isSubmitting = _ref$isSubmitting === void 0 ? false : _ref$isSubmitting,
158
- _ref$validationSchema = _ref.validationSchema,
159
- validationSchema = _ref$validationSchema === void 0 ? {} : _ref$validationSchema,
160
- _ref$channelRefreshHa = _ref.channelRefreshHandler,
161
- channelRefreshHandler = _ref$channelRefreshHa === void 0 ? noop : _ref$channelRefreshHa,
162
- _ref$paneProps = _ref.paneProps,
163
- paneProps = _ref$paneProps === void 0 ? {} : _ref$paneProps;
164
- var _useTranslation = useTranslation(),
165
- t = _useTranslation.t;
166
- var handleFormSubmit = function handleFormSubmit(values, formikBag) {
167
- handleSubmit(values, formikBag);
168
- };
169
- return /*#__PURE__*/React__default.createElement(Pane, _extends$1({
170
- onClose: onClose,
171
- isOpen: isPaneOpen
172
- }, paneProps), /*#__PURE__*/React__default.createElement(Pane.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
173
- style: "h2",
174
- weight: "semibold"
175
- }, isEmpty(title) ? t("neetoSlack.slack.editPane") : title)), /*#__PURE__*/React__default.createElement(Form, {
176
- className: "neeto-ui-w-full",
177
- formikProps: {
178
- enableReinitialize: true,
179
- initialValues: initialFormValues,
180
- onSubmit: handleFormSubmit,
181
- validationSchema: buildValidationSchema(validationSchema)
182
- }
183
- }, function (formikProps) {
184
- var _formikProps$errors;
185
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
186
- className: "neeto-ui-mb-4 neeto-ui-w-full"
187
- }, /*#__PURE__*/React__default.createElement(Label, null, /*#__PURE__*/React__default.createElement(Typography, {
188
- className: "neeto-ui-text-gray-700 neeto-ui-mb-2",
189
- style: "body2",
190
- weight: "bold"
191
- }, t("neetoSlack.slack.configure.sendToDescription"), /*#__PURE__*/React__default.createElement("sup", null, "*"))), /*#__PURE__*/React__default.createElement("div", {
192
- className: "relative flex flex-col items-start gap-y-3"
193
- }, /*#__PURE__*/React__default.createElement(Select, {
194
- isSearchable: true,
195
- required: true,
196
- className: "w-full",
197
- error: formikProps === null || formikProps === void 0 || (_formikProps$errors = formikProps.errors) === null || _formikProps$errors === void 0 ? void 0 : _formikProps$errors.selectedChannel,
198
- name: "selectedChannel",
199
- placeholder: t("neetoSlack.slack.placeholder"),
200
- size: "large",
201
- options: formikProps.values.channels.map(function (_ref2) {
202
- var label = _ref2.label,
203
- value = _ref2.value,
204
- isPrivate = _ref2.isPrivate;
205
- return {
206
- label: /*#__PURE__*/React__default.createElement(ChannelSelectOption, {
207
- isPrivate: isPrivate,
208
- label: label
209
- }),
210
- value: value
211
- };
212
- })
213
- }), /*#__PURE__*/React__default.createElement(SlackRefreshChannelListButton$1, {
214
- channelRefreshHandler: channelRefreshHandler
215
- }))), is(Function, children) ? children(_objectSpread$1({}, formikProps)) : children), /*#__PURE__*/React__default.createElement(Pane.Footer, null, /*#__PURE__*/React__default.createElement(ActionBlock, {
216
- cancelButtonProps: {
217
- onClick: onClose
218
- },
219
- isSubmitting: isSubmitting || formikProps.isSubmitting
220
- })));
221
- }));
222
- };
223
-
224
- var Settings = withT(function (_ref) {
225
- var t = _ref.t,
226
- children = _ref.children,
227
- _ref$teamName = _ref.teamName,
228
- teamName = _ref$teamName === void 0 ? "" : _ref$teamName,
229
- _ref$slackUrl = _ref.slackUrl,
230
- slackUrl = _ref$slackUrl === void 0 ? "" : _ref$slackUrl,
231
- _ref$fields = _ref.fields,
232
- fields = _ref$fields === void 0 ? [] : _ref$fields,
233
- _ref$onEdit = _ref.onEdit,
234
- onEdit = _ref$onEdit === void 0 ? noop : _ref$onEdit;
235
- return /*#__PURE__*/React__default.createElement("div", {
236
- className: "mx-auto w-full max-w-3xl"
237
- }, /*#__PURE__*/React__default.createElement("div", {
238
- className: "neeto-ui-border-gray-300 neeto-ui-rounded-xl mt-10 w-full border p-6"
239
- }, /*#__PURE__*/React__default.createElement("div", {
240
- className: "space-y-4"
241
- }, /*#__PURE__*/React__default.createElement(Slack, {
242
- className: "neeto-ui-text-gray-600",
243
- size: 48
244
- }), /*#__PURE__*/React__default.createElement("div", {
245
- className: "flex items-center space-x-4"
246
- }, /*#__PURE__*/React__default.createElement(Typography, {
247
- style: "h2"
248
- }, /*#__PURE__*/React__default.createElement(Trans, {
249
- i18nKey: "neetoSlack.slack.settings.title",
250
- values: {
251
- teamName: teamName
252
- },
253
- components: {
254
- a: /*#__PURE__*/React__default.createElement("a", {
255
- className: "neeto-ui-text-primary-800",
256
- href: isEmpty(slackUrl) ? toSlackUrl(teamName) : slackUrl
257
- })
258
- }
259
- })), /*#__PURE__*/React__default.createElement("div", {
260
- className: "neeto-ui-bg-success-500 neeto-ui-text-white neeto-ui-rounded-full flex items-center justify-center p-1"
261
- }, /*#__PURE__*/React__default.createElement(Check, {
262
- size: 24
263
- }))), fields.map(function (field) {
264
- return /*#__PURE__*/React__default.createElement(Field, {
265
- key: field.name,
266
- name: field.name,
267
- value: field.value
268
- });
269
- }), children), /*#__PURE__*/React__default.createElement(Button, {
270
- className: "mt-8",
271
- label: t("neetoSlack.common.edit"),
272
- onClick: onEdit
273
- })));
274
- });
275
- Settings.EditPane = EditPane;
276
-
277
- var Configure = withT(function (_ref) {
278
- var t = _ref.t,
279
- children = _ref.children,
280
- teamName = _ref.teamName,
281
- _ref$slackUrl = _ref.slackUrl,
282
- slackUrl = _ref$slackUrl === void 0 ? "" : _ref$slackUrl,
283
- initialFormValues = _ref.initialFormValues,
284
- handleSubmit = _ref.handleSubmit,
285
- isSubmitting = _ref.isSubmitting,
286
- className = _ref.className,
287
- validationSchema = _ref.validationSchema,
288
- channelRefreshHandler = _ref.channelRefreshHandler,
289
- _ref$channelSelectLab = _ref.channelSelectLabel,
290
- channelSelectLabel = _ref$channelSelectLab === void 0 ? "" : _ref$channelSelectLab;
291
- return /*#__PURE__*/React__default.createElement("div", {
292
- className: classNames("neeto-ui-w-full neeto-ui-space-y-6 mx-auto max-w-lg", className)
293
- }, /*#__PURE__*/React__default.createElement("div", {
294
- className: "neeto-ui-mb-6 neeto-ui-w-full"
295
- }, /*#__PURE__*/React__default.createElement(Typography, {
296
- style: "h3"
297
- }, /*#__PURE__*/React__default.createElement(Trans, {
298
- i18nKey: "neetoSlack.slack.configure.title",
299
- values: {
300
- teamName: teamName
301
- },
302
- components: {
303
- a: /*#__PURE__*/React__default.createElement("a", {
304
- className: "neeto-ui-text-primary-800",
305
- href: isEmpty(slackUrl) ? toSlackUrl(teamName) : slackUrl
306
- })
307
- }
308
- }))), /*#__PURE__*/React__default.createElement(Form, {
309
- className: "neeto-ui-w-full max-w-md",
310
- formikProps: {
311
- enableReinitialize: true,
312
- initialValues: initialFormValues,
313
- onSubmit: handleSubmit,
314
- validationSchema: buildValidationSchema(validationSchema)
315
- }
316
- }, function (formikProps) {
317
- var _formikProps$errors;
318
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
319
- className: "neeto-ui-mb-4 neeto-ui-w-full"
320
- }, /*#__PURE__*/React__default.createElement(Typography, {
321
- className: "neeto-ui-text-gray-700 neeto-ui-mb-3",
322
- style: "body2",
323
- weight: "normal"
324
- }, isEmpty(channelSelectLabel) ? t("neetoSlack.slack.configure.sendToDescription") : channelSelectLabel, /*#__PURE__*/React__default.createElement("sup", null, "*")), /*#__PURE__*/React__default.createElement("div", {
325
- className: "relative flex flex-col items-start gap-y-3"
326
- }, /*#__PURE__*/React__default.createElement(Select, {
327
- isSearchable: true,
328
- required: true,
329
- className: "w-full",
330
- error: formikProps === null || formikProps === void 0 || (_formikProps$errors = formikProps.errors) === null || _formikProps$errors === void 0 ? void 0 : _formikProps$errors.selectedChannel,
331
- name: "selectedChannel",
332
- placeholder: t("neetoSlack.slack.placeholder"),
333
- size: "large",
334
- options: formikProps.values.channels.map(function (_ref2) {
335
- var label = _ref2.label,
336
- value = _ref2.value,
337
- isPrivate = _ref2.isPrivate;
338
- return {
339
- label: /*#__PURE__*/React__default.createElement(ChannelSelectOption, {
340
- isPrivate: isPrivate,
341
- label: label
342
- }),
343
- value: value
344
- };
345
- })
346
- }), /*#__PURE__*/React__default.createElement(SlackRefreshChannelListButton$1, {
347
- channelRefreshHandler: channelRefreshHandler
348
- }))), is(Function, children) ? children(formikProps) : children, /*#__PURE__*/React__default.createElement(Button, {
349
- label: t("neetoSlack.common.continue"),
350
- loading: isSubmitting,
351
- type: "submit"
352
- }));
353
- }));
354
- });
355
-
356
- var Connect = withT(function (_ref) {
357
- var t = _ref.t,
358
- handleRedirectToSlack = _ref.handleRedirectToSlack,
359
- isAuthorizeUrlFetching = _ref.isAuthorizeUrlFetching;
360
- return /*#__PURE__*/React__default.createElement("div", {
361
- className: "neeto-ui-w-full mx-auto max-w-lg"
362
- }, /*#__PURE__*/React__default.createElement(Slack, {
363
- size: 32
364
- }), /*#__PURE__*/React__default.createElement(Typography, {
365
- className: "neeto-ui-text-gray-800 neeto-ui-mb-0.5 neeto-ui-mt-6",
366
- style: "h2",
367
- weight: "semibold"
368
- }, t("neetoSlack.slack.connect.title")), /*#__PURE__*/React__default.createElement(Typography, {
369
- className: "neeto-ui-text-gray-700 neeto-ui-mb-4",
370
- style: "body1",
371
- weight: "normal"
372
- }, t("neetoSlack.slack.connect.description")), /*#__PURE__*/React__default.createElement(Button, {
373
- label: t("neetoSlack.slack.connect.loginButton"),
374
- loading: isAuthorizeUrlFetching,
375
- onClick: handleRedirectToSlack
376
- }));
377
- });
378
-
379
- var _path, _defs;
380
- 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); }
381
- const SvgSuccess = props => /*#__PURE__*/React.createElement("svg", _extends({
382
- xmlns: "http://www.w3.org/2000/svg",
383
- xmlnsXlink: "http://www.w3.org/1999/xlink",
384
- width: 72,
385
- height: 72,
386
- fill: "none"
387
- }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
388
- fill: "url(#success_svg__a)",
389
- d: "M0 0h72v72H0z"
390
- })), _defs || (_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("pattern", {
391
- id: "success_svg__a",
392
- width: 1,
393
- height: 1,
394
- patternContentUnits: "objectBoundingBox"
395
- }, /*#__PURE__*/React.createElement("use", {
396
- xlinkHref: "#success_svg__b",
397
- transform: "scale(.0029)"
398
- })), /*#__PURE__*/React.createElement("image", {
399
- xlinkHref: "data:image/png;base64,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WkH/ssvowWQz/YBFlR9ZwAICIBBXAqH1YL0OD+gniPJkO18J3kBp9lTfTfSi+yrepx+Li6hNPxZpEACBeBIIrcB6MXogzynR+Y4q6k0zkpIv/0/E5X8eVtgFArElEMoQgU/hAbz4L7ZfEzQcBEojEEoP1sPwAES1tPMKuUAABJhAKAXW5fAARBVfDRAAASMEQhcicCk8AFE1cjqhEBAAgWwCofNgDYYHIKrZZwLWQQAEjBMIncA6DA9AVI2fQigQBEAgF4FQhQjkMurTXkEbuDGVuRrUzXaIajdQsAkEQMB9AqHyYNvK6Tz+RShEXCGq7p87qAEEQKAHAqES2B7CAxDVHjobu0EABLwlEJoQQY7wAETV2/MFtYEACBRBIDQebFZ4AKJaRAfjUBAAAf8IhEZgyaKUSNO4suG0RE0F6B8y1AwCIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAAC7hD4/8l256QQPdLRAAAAAElFTkSuQmCC",
400
- id: "success_svg__b",
401
- width: 344,
402
- height: 344
403
- }))));
404
-
405
- var Finish = withT(function (_ref) {
406
- var t = _ref.t,
407
- children = _ref.children,
408
- _ref$teamName = _ref.teamName,
409
- teamName = _ref$teamName === void 0 ? "" : _ref$teamName,
410
- _ref$fields = _ref.fields,
411
- fields = _ref$fields === void 0 ? [] : _ref$fields,
412
- _ref$onSuccess = _ref.onSuccess,
413
- onSuccess = _ref$onSuccess === void 0 ? noop : _ref$onSuccess,
414
- _ref$onBack = _ref.onBack,
415
- onBack = _ref$onBack === void 0 ? noop : _ref$onBack,
416
- _ref$buttonProps = _ref.buttonProps,
417
- buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
418
- _ref$secondaryButtonP = _ref.secondaryButtonProps,
419
- secondaryButtonProps = _ref$secondaryButtonP === void 0 ? {} : _ref$secondaryButtonP;
420
- return /*#__PURE__*/React__default.createElement("div", {
421
- className: "neeto-ui-w-full mx-auto max-w-lg"
422
- }, /*#__PURE__*/React__default.createElement(SvgSuccess, null), /*#__PURE__*/React__default.createElement(Typography, {
423
- className: "neeto-ui-text-gray-800 neeto-ui-mb-6 neeto-ui-mt-4",
424
- style: "h3",
425
- weight: "bold"
426
- }, /*#__PURE__*/React__default.createElement(Trans, {
427
- i18nKey: "neetoSlack.slack.finish.title",
428
- values: {
429
- teamName: teamName
430
- }
431
- })), isNotEmpty(fields) && fields.map(function (field, index) {
432
- return /*#__PURE__*/React__default.createElement(Field, {
433
- key: field.name,
434
- name: field.name,
435
- value: field.value,
436
- className: classNames("neeto-ui-pt-3 neeto-ui-border-gray-300", {
437
- "border-t": index !== 0
438
- })
439
- });
440
- }), children, /*#__PURE__*/React__default.createElement("div", {
441
- className: "neeto-ui-flex neeto-ui-w-full neeto-ui-flex-row neeto-ui-mt-6"
442
- }, /*#__PURE__*/React__default.createElement(Button, _extends$1({
443
- className: "neeto-ui-my-1",
444
- label: t("neetoSlack.common.done"),
445
- onClick: onSuccess
446
- }, buttonProps)), isNotEmpty(secondaryButtonProps) && /*#__PURE__*/React__default.createElement(Button, _extends$1({
447
- className: "neeto-ui-my-1 neeto-ui-ml-2",
448
- label: t("neetoSlack.common.edit"),
449
- style: "secondary",
450
- onClick: onBack
451
- }, secondaryButtonProps))));
452
- });
453
-
454
- function _objectWithoutPropertiesLoose(source, excluded) {
455
- if (source == null) return {};
456
- var target = {};
457
- var sourceKeys = Object.keys(source);
458
- var key, i;
459
- for (i = 0; i < sourceKeys.length; i++) {
460
- key = sourceKeys[i];
461
- if (excluded.indexOf(key) >= 0) continue;
462
- target[key] = source[key];
463
- }
464
- return target;
465
- }
466
-
467
- function _objectWithoutProperties(source, excluded) {
468
- if (source == null) return {};
469
- var target = _objectWithoutPropertiesLoose(source, excluded);
470
- var key, i;
471
- if (Object.getOwnPropertySymbols) {
472
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
473
- for (i = 0; i < sourceSymbolKeys.length; i++) {
474
- key = sourceSymbolKeys[i];
475
- if (excluded.indexOf(key) >= 0) continue;
476
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
477
- target[key] = source[key];
478
- }
479
- }
480
- return target;
481
- }
482
-
483
- var SLACK_ENGINE_BASE_URL = "/integrations-slack/api/v1/slack";
484
- var DEFAULT_SLACK_SETTINGS_STALE_TIME = 120000; // 2 minutes
485
-
486
- var slackApi = {
487
- fetchSlackStatus: function fetchSlackStatus(payload) {
488
- return axios.get("".concat(SLACK_ENGINE_BASE_URL, "/integration_status"), {
489
- params: payload
490
- });
491
- }
492
- };
493
-
494
- var QUERY_KEYS = {
495
- SLACK_INTEGRATIONS_STATUS: "slack-integrations-status"
496
- };
497
-
498
- var _excluded = ["integrableId", "integrableType"];
499
- 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; }
500
- 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; }
501
- var useFetchSlackIntegrationsStatus = function useFetchSlackIntegrationsStatus(_ref) {
502
- var _ref$integrableId = _ref.integrableId,
503
- integrableId = _ref$integrableId === void 0 ? "" : _ref$integrableId,
504
- _ref$integrableType = _ref.integrableType,
505
- integrableType = _ref$integrableType === void 0 ? "" : _ref$integrableType,
506
- options = _objectWithoutProperties(_ref, _excluded);
507
- return useQuery(_objectSpread({
508
- queryKey: [QUERY_KEYS.SLACK_INTEGRATIONS_STATUS],
509
- queryFn: function queryFn() {
510
- return slackApi.fetchSlackStatus(_objectSpread(_objectSpread({}, integrableId && {
511
- integrableId: integrableId
512
- }), integrableType && {
513
- integrableType: integrableType
514
- }));
515
- },
516
- staleTime: DEFAULT_SLACK_SETTINGS_STALE_TIME,
517
- select: function select(data) {
518
- var _data$integrationStat, _data$integrationStat2, _data$integrationStat3;
519
- return {
520
- isSlackIntegrated: data === null || data === void 0 || (_data$integrationStat = data.integrationStatus) === null || _data$integrationStat === void 0 ? void 0 : _data$integrationStat.integrated,
521
- notificationChannel: (_data$integrationStat2 = data === null || data === void 0 || (_data$integrationStat3 = data.integrationStatus) === null || _data$integrationStat3 === void 0 ? void 0 : _data$integrationStat3.notificationChannel) !== null && _data$integrationStat2 !== void 0 ? _data$integrationStat2 : ""
522
- };
523
- }
524
- }, options));
525
- };
526
-
527
- var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
528
-
529
- var css = "@media (max-height:1000px){.neeto-ui-react-select__menu-list{max-height:calc(40vh - 50px)!important}}.border-t{border-top:1px solid}.border-gray-300{border-color:#d1d5db}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9iYXNlL19vdmVycmlkZXMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9tYWluLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvYmFzZS9fdXRpbGl0aWVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQ0Usa0NBQ0ksc0NDQ0osQ0FDRixDQ0pBLFVBQ0Usb0JETUYsQ0NKQSxpQkFDRSxvQkRPRiIsInNvdXJjZXNDb250ZW50IjpbIkBtZWRpYSAobWF4LWhlaWdodDogMTAwMHB4KSB7XG4gIC5uZWV0by11aS1yZWFjdC1zZWxlY3RfX21lbnUtbGlzdCB7XG4gICAgICBtYXgtaGVpZ2h0OiBjYWxjKDQwdmggLSA1MHB4KSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCJAbWVkaWEgKG1heC1oZWlnaHQ6IDEwMDBweCkge1xuICAubmVldG8tdWktcmVhY3Qtc2VsZWN0X19tZW51LWxpc3Qge1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoNDB2aCAtIDUwcHgpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5ib3JkZXItdCB7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweDtcbn1cblxuLmJvcmRlci1ncmF5LTMwMCB7XG4gIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcbn0iLCIuYm9yZGVyLXQge1xuICBib3JkZXItdG9wOiBzb2xpZCAxcHg7XG59XG4uYm9yZGVyLWdyYXktMzAwIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xufVxuIl19 */";
530
- n(css,{});
531
-
532
- export { Configure, Connect, Finish, Settings, useFetchSlackIntegrationsStatus };
1
+ export { default as Settings } from './Settings.js';
2
+ export { default as Configure } from './Configure.js';
3
+ export { default as Connect } from './Connect.js';
4
+ export { default as Finish } from './Finish.js';
5
+ export { u as useFetchSlackIntegrationsStatus } from './useSlackStatusApi-c2dfe381.js';
6
+ import '@bigbinary/neeto-cist';
7
+ import '@bigbinary/neeto-commons-frontend/react-utils';
8
+ import '@bigbinary/neeto-icons/Check';
9
+ import '@bigbinary/neeto-icons/misc/Slack';
10
+ import '@bigbinary/neetoui/Typography';
11
+ import '@bigbinary/neetoui/Button';
12
+ import 'ramda';
13
+ import 'react-i18next';
14
+ import './Field-07124b6f.js';
15
+ import 'react/jsx-runtime';
16
+ import './SlackRefreshChannelListButton-95756902.js';
17
+ import './inject-css-c86de496.js';
18
+ import 'react';
19
+ import './defineProperty-e90a259c.js';
20
+ import 'i18next';
21
+ import '@bigbinary/neetoui/Toastr';
22
+ import 'yup';
23
+ import '@bigbinary/neetoui/Pane';
24
+ import '@bigbinary/neetoui/Label';
25
+ import '@bigbinary/neetoui/formik/Select';
26
+ import '@bigbinary/neetoui/formik/Form';
27
+ import '@bigbinary/neetoui/formik/ActionBlock';
28
+ import 'classnames';
29
+ import '@tanstack/react-query';
30
+ import 'axios';
533
31
  //# sourceMappingURL=index.js.map