@bigbinary/neeto-molecules 3.4.2 → 3.6.0-beta-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.
@@ -0,0 +1,408 @@
1
+ 'use strict';
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var React = require('react');
5
+ var neetoCist = require('@bigbinary/neeto-cist');
6
+ var Down = require('@bigbinary/neeto-icons/Down');
7
+ var Up = require('@bigbinary/neeto-icons/Up');
8
+ var Button = require('@bigbinary/neetoui/Button');
9
+ var Spinner = require('@bigbinary/neetoui/Spinner');
10
+ var ramda = require('ramda');
11
+ var reactI18next = require('react-i18next');
12
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
13
+ var Typography = require('@bigbinary/neetoui/Typography');
14
+ var HelpPopover = require('./HelpPopover.js');
15
+ var classnames = require('classnames');
16
+ var useHotkeys = require('@bigbinary/neeto-hotkeys');
17
+ var Check = require('@bigbinary/neeto-icons/Check');
18
+ var Close = require('@bigbinary/neeto-icons/Close');
19
+ var Input = require('@bigbinary/neetoui/Input');
20
+ var Tooltip = require('@bigbinary/neetoui/Tooltip');
21
+ var CopyToClipboardButton = require('./CopyToClipboardButton.js');
22
+ require('@babel/runtime/helpers/objectWithoutProperties');
23
+ require('formik');
24
+ var phoneNumber = require('./phone-number-904b0a70.js');
25
+ var jsxRuntime = require('react/jsx-runtime');
26
+ require('i18next');
27
+ require('libphonenumber-js/min');
28
+ require('yup');
29
+ var TimeFormat = require('./TimeFormat.js');
30
+ var Computer = require('@bigbinary/neeto-icons/Computer');
31
+ var Email = require('@bigbinary/neeto-icons/Email');
32
+ var Location = require('@bigbinary/neeto-icons/Location');
33
+ var Mobile = require('@bigbinary/neeto-icons/Mobile');
34
+ var Phone = require('@bigbinary/neeto-icons/Phone');
35
+ var Subdomain = require('@bigbinary/neeto-icons/Subdomain');
36
+ var User = require('@bigbinary/neeto-icons/User');
37
+ var Apple = require('@bigbinary/neeto-icons/misc/Apple');
38
+ var Chrome = require('@bigbinary/neeto-icons/misc/Chrome');
39
+ var Edge = require('@bigbinary/neeto-icons/misc/Edge');
40
+ var Firefox = require('@bigbinary/neeto-icons/misc/Firefox');
41
+ var Safari = require('@bigbinary/neeto-icons/misc/Safari');
42
+ var Ubuntu = require('@bigbinary/neeto-icons/misc/Ubuntu');
43
+ var Windows = require('@bigbinary/neeto-icons/misc/Windows');
44
+ var injectCss = require('./inject-css-80a5faa3.js');
45
+ require('@bigbinary/neeto-icons/Help');
46
+ require('@bigbinary/neetoui/Popover');
47
+ require('@bigbinary/neeto-commons-frontend/utils/general');
48
+ require('@bigbinary/neeto-icons/Copy');
49
+ require('zustand/shallow');
50
+ require('@bigbinary/neetoui/Select');
51
+ require('./_commonjsHelpers-68cdf74f.js');
52
+ require('@tanstack/react-query');
53
+ require('axios');
54
+ require('@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions');
55
+ require('zustand');
56
+ require('zustand/middleware');
57
+ require('./DateFormat.js');
58
+ require('@bigbinary/neeto-commons-frontend/react-utils/useTimer');
59
+ require('@bigbinary/neeto-commons-frontend/utils/datetime');
60
+
61
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
62
+
63
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
64
+ var Down__default = /*#__PURE__*/_interopDefaultLegacy(Down);
65
+ var Up__default = /*#__PURE__*/_interopDefaultLegacy(Up);
66
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
67
+ var Spinner__default = /*#__PURE__*/_interopDefaultLegacy(Spinner);
68
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
69
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
70
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
71
+ var useHotkeys__default = /*#__PURE__*/_interopDefaultLegacy(useHotkeys);
72
+ var Check__default = /*#__PURE__*/_interopDefaultLegacy(Check);
73
+ var Close__default = /*#__PURE__*/_interopDefaultLegacy(Close);
74
+ var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
75
+ var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
76
+ var Computer__default = /*#__PURE__*/_interopDefaultLegacy(Computer);
77
+ var Email__default = /*#__PURE__*/_interopDefaultLegacy(Email);
78
+ var Location__default = /*#__PURE__*/_interopDefaultLegacy(Location);
79
+ var Mobile__default = /*#__PURE__*/_interopDefaultLegacy(Mobile);
80
+ var Phone__default = /*#__PURE__*/_interopDefaultLegacy(Phone);
81
+ var Subdomain__default = /*#__PURE__*/_interopDefaultLegacy(Subdomain);
82
+ var User__default = /*#__PURE__*/_interopDefaultLegacy(User);
83
+ var Apple__default = /*#__PURE__*/_interopDefaultLegacy(Apple);
84
+ var Chrome__default = /*#__PURE__*/_interopDefaultLegacy(Chrome);
85
+ var Edge__default = /*#__PURE__*/_interopDefaultLegacy(Edge);
86
+ var Firefox__default = /*#__PURE__*/_interopDefaultLegacy(Firefox);
87
+ var Safari__default = /*#__PURE__*/_interopDefaultLegacy(Safari);
88
+ var Ubuntu__default = /*#__PURE__*/_interopDefaultLegacy(Ubuntu);
89
+ var Windows__default = /*#__PURE__*/_interopDefaultLegacy(Windows);
90
+
91
+ var BOOLEAN_VALUES_MAP = {
92
+ "true": "Yes",
93
+ "false": "No"
94
+ };
95
+ var ENTER = "enter";
96
+ var ESCAPE = "escape";
97
+ var PHONE_NUMBER = "phone_number";
98
+ var INTEGER = "integer";
99
+ var ICONS_MAP = {
100
+ name: User__default["default"],
101
+ user: User__default["default"],
102
+ email: Email__default["default"],
103
+ phone_number: Phone__default["default"],
104
+ location: Location__default["default"],
105
+ timezone: Subdomain__default["default"],
106
+ chrome: Chrome__default["default"],
107
+ safari: Safari__default["default"],
108
+ firefox: Firefox__default["default"],
109
+ edge: Edge__default["default"],
110
+ ie: Edge__default["default"],
111
+ windows: Windows__default["default"],
112
+ mac_os: Apple__default["default"],
113
+ linux: Ubuntu__default["default"],
114
+ mobile: Mobile__default["default"],
115
+ desktop: Computer__default["default"]
116
+ };
117
+
118
+ var getInputType = function getInputType(_ref) {
119
+ var name = _ref.name,
120
+ kind = _ref.kind;
121
+ if (name === PHONE_NUMBER) return "tel";else if (kind === INTEGER) return "number";
122
+ return "text";
123
+ };
124
+ var getIcon = function getIcon(_ref2) {
125
+ var iconSize = _ref2.iconSize,
126
+ name = _ref2.name,
127
+ value = _ref2.value;
128
+ var Icon = name === "browser" || name === "os" ? ICONS_MAP[value === null || value === void 0 ? void 0 : value.toLowerCase().replace(" ", "_")] : ICONS_MAP[name];
129
+ return /*#__PURE__*/jsxRuntime.jsx(Icon, {
130
+ size: iconSize
131
+ });
132
+ };
133
+
134
+ var Item = function Item(_ref) {
135
+ var handleCancel = _ref.handleCancel,
136
+ handleSubmit = _ref.handleSubmit,
137
+ iconSize = _ref.iconSize,
138
+ item = _ref.item,
139
+ showIcons = _ref.showIcons;
140
+ var _useState = React.useState(item.isEditing),
141
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
142
+ isEditing = _useState2[0],
143
+ setIsEditing = _useState2[1];
144
+ var _useState3 = React.useState(item.value),
145
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
146
+ value = _useState4[0],
147
+ setValue = _useState4[1];
148
+ var _useTranslation = reactI18next.useTranslation(),
149
+ t = _useTranslation.t;
150
+ var containerRef = useHotkeys__default["default"](ESCAPE, function () {
151
+ return handleCancel(name);
152
+ }, {
153
+ mode: "scoped"
154
+ });
155
+ var icon = item.icon,
156
+ _item$isEditable = item.isEditable,
157
+ isEditable = _item$isEditable === void 0 ? false : _item$isEditable,
158
+ _item$extraClasses = item.extraClasses,
159
+ extraClasses = _item$extraClasses === void 0 ? "" : _item$extraClasses,
160
+ _item$extraWrapperCla = item.extraWrapperClasses,
161
+ extraWrapperClasses = _item$extraWrapperCla === void 0 ? "" : _item$extraWrapperCla,
162
+ id = item.id,
163
+ fieldValueId = item.fieldValueId,
164
+ _item$custom = item.custom,
165
+ custom = _item$custom === void 0 ? false : _item$custom,
166
+ name = item.name,
167
+ kind = item.kind,
168
+ error = item.error,
169
+ label = item.label,
170
+ _item$showCopyButton = item.showCopyButton,
171
+ showCopyButton = _item$showCopyButton === void 0 ? false : _item$showCopyButton;
172
+ var valueToRender = React.useMemo(function () {
173
+ if (ramda.isNil(value)) return "-";
174
+ if (typeof value === "boolean") return BOOLEAN_VALUES_MAP[value.toString()];
175
+ return value;
176
+ }, [value]);
177
+ var iconToRender = React.useMemo(function () {
178
+ return icon || getIcon({
179
+ iconSize: iconSize,
180
+ name: name,
181
+ value: value
182
+ });
183
+ }, [icon, iconSize, name, value]);
184
+ var onSuccess = function onSuccess() {
185
+ return setIsEditing(false);
186
+ };
187
+ var handleMetadataSubmit = function handleMetadataSubmit() {
188
+ return handleSubmit({
189
+ fieldId: id,
190
+ fieldValueId: fieldValueId,
191
+ name: name,
192
+ value: value,
193
+ custom: custom,
194
+ onSuccess: onSuccess
195
+ });
196
+ };
197
+ var handleMetadataCancel = function handleMetadataCancel() {
198
+ setIsEditing(false);
199
+ setValue(item.value);
200
+ handleCancel(name);
201
+ };
202
+ var inputRef = useHotkeys__default["default"](ENTER, handleMetadataSubmit, {
203
+ mode: "scoped"
204
+ });
205
+ var InputComponent = name === PHONE_NUMBER ? phoneNumber.PhoneNumberInput : Input__default["default"];
206
+ var handleChange = function handleChange(event) {
207
+ var value = name === PHONE_NUMBER ? event : event.target.value;
208
+ setValue(value);
209
+ };
210
+ React.useEffect(function () {
211
+ setValue(item.value);
212
+ }, [item]);
213
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
214
+ ref: containerRef,
215
+ className: classnames__default["default"]("mb-2 flex place-items-center gap-2 align-middle", extraWrapperClasses, {
216
+ "flex-wrap": name !== PHONE_NUMBER
217
+ }),
218
+ children: [showIcons && neetoCist.isPresent(iconToRender) ? /*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], {
219
+ content: label || t("neetoMolecules.sessionEnvironment.details.keys.".concat(name)),
220
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
221
+ className: "flex-shrink-0",
222
+ children: iconToRender
223
+ })
224
+ }) : /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
225
+ className: "neeto-molecules-session-environment-editable-field whitespace-nowrap",
226
+ style: "h5",
227
+ children: label || t("neetoMolecules.sessionEnvironment.details.keys.".concat(name))
228
+ }), !isEditing ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
229
+ children: [kind === "datetime" ? /*#__PURE__*/jsxRuntime.jsx(TimeFormat.DateWeekTime, {
230
+ date: value,
231
+ typographyProps: {
232
+ style: "body2",
233
+ className: "overflow-hidden truncate whitespace-normal break-all ".concat(extraClasses)
234
+ }
235
+ }) : /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
236
+ className: "overflow-hidden truncate whitespace-normal break-all ".concat(extraClasses),
237
+ "data-testid": "metadata-value-".concat(name),
238
+ style: "body2",
239
+ weight: "normal",
240
+ onClick: function onClick() {
241
+ return isEditable && setIsEditing(true);
242
+ },
243
+ children: valueToRender
244
+ }), showCopyButton && /*#__PURE__*/jsxRuntime.jsx(CopyToClipboardButton, {
245
+ className: "flex-shrink-0",
246
+ size: "small",
247
+ style: "text",
248
+ value: valueToRender
249
+ })]
250
+ }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
251
+ className: "neeto-molecules-session-environment-editable-field relative flex min-w-0 flex-grow items-center",
252
+ children: [/*#__PURE__*/jsxRuntime.jsx(InputComponent, {
253
+ error: error,
254
+ autoFocus: true,
255
+ "data-testid": "metadata-input-".concat(name),
256
+ placeholder: t("neetoMolecules.common.enter", {
257
+ what: label
258
+ }),
259
+ ref: inputRef,
260
+ type: getInputType({
261
+ name: name,
262
+ kind: kind
263
+ }),
264
+ value: value || "",
265
+ onChange: handleChange
266
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
267
+ className: "neeto-molecules-session-environment-editable-field__actions absolute right-0 top-0 flex h-8 items-center pr-1",
268
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
269
+ icon: Close__default["default"],
270
+ size: "small",
271
+ style: "text",
272
+ tooltipProps: {
273
+ content: t("neetoMolecules.common.actions.cancel"),
274
+ position: "top"
275
+ },
276
+ onClick: handleMetadataCancel
277
+ }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
278
+ "data-testid": "metadata-submit-".concat(name),
279
+ icon: Check__default["default"],
280
+ size: "small",
281
+ style: "text",
282
+ tooltipProps: {
283
+ content: t("neetoMolecules.common.actions.save"),
284
+ position: "top"
285
+ },
286
+ onClick: handleMetadataSubmit
287
+ })]
288
+ })]
289
+ })]
290
+ });
291
+ };
292
+
293
+ 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; }
294
+ 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__default["default"](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; }
295
+ var DetailsBlock = function DetailsBlock(_ref) {
296
+ var details = _ref.details,
297
+ _ref$handleCancel = _ref.handleCancel,
298
+ handleCancel = _ref$handleCancel === void 0 ? neetoCist.noop : _ref$handleCancel,
299
+ _ref$handleSubmit = _ref.handleSubmit,
300
+ handleSubmit = _ref$handleSubmit === void 0 ? neetoCist.noop : _ref$handleSubmit,
301
+ helpPopoverProps = _ref.helpPopoverProps,
302
+ iconSize = _ref.iconSize,
303
+ _ref$showIcons = _ref.showIcons,
304
+ showIcons = _ref$showIcons === void 0 ? false : _ref$showIcons,
305
+ _ref$title = _ref.title,
306
+ title = _ref$title === void 0 ? "" : _ref$title;
307
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
308
+ className: "mb-4",
309
+ children: [title && /*#__PURE__*/jsxRuntime.jsxs("div", {
310
+ className: "mb-2 flex",
311
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
312
+ className: "mr-2",
313
+ style: "h4",
314
+ textTransform: "uppercase",
315
+ weight: "bold",
316
+ children: title
317
+ }), neetoCist.isPresent(helpPopoverProps) && /*#__PURE__*/jsxRuntime.jsx(HelpPopover, _objectSpread({}, helpPopoverProps))]
318
+ }), details.map(function (detail, index) {
319
+ return /*#__PURE__*/React.createElement(Item, {
320
+ handleCancel: handleCancel,
321
+ handleSubmit: handleSubmit,
322
+ iconSize: iconSize,
323
+ showIcons: showIcons,
324
+ item: detail,
325
+ key: index
326
+ });
327
+ })]
328
+ });
329
+ };
330
+ var DetailsBlock$1 = /*#__PURE__*/React.memo(DetailsBlock);
331
+
332
+ var css = ".neeto-molecules-session-environment-editable-field .neeto-ui-input__wrapper .ant-picker-suffix{display:none}.neeto-molecules-session-environment-editable-field .neeto-ui-input__wrapper .neeto-ui-input__prefix{margin:0;padding:0}.neeto-molecules-session-environment-editable-field .neeto-ui-input__wrapper .neeto-ui-date-input,.neeto-molecules-session-environment-editable-field .neeto-ui-input__wrapper .neeto-ui-input>input{padding:4px 45px 4px 4px!important}.neeto-molecules-session-environment-editable-field__actions .neeto-ui-btn{background-color:transparent!important;min-height:0!important;padding:2px!important}";
333
+ injectCss.n(css,{});
334
+
335
+ var SessionEnvironment = function SessionEnvironment(_ref) {
336
+ var details = _ref.details,
337
+ _ref$handleCancel = _ref.handleCancel,
338
+ handleCancel = _ref$handleCancel === void 0 ? neetoCist.noop : _ref$handleCancel,
339
+ _ref$handleSubmit = _ref.handleSubmit,
340
+ handleSubmit = _ref$handleSubmit === void 0 ? neetoCist.noop : _ref$handleSubmit,
341
+ _ref$helpPopoverProps = _ref.helpPopoverProps,
342
+ helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps,
343
+ _ref$iconSize = _ref.iconSize,
344
+ iconSize = _ref$iconSize === void 0 ? 20 : _ref$iconSize,
345
+ _ref$isLoading = _ref.isLoading,
346
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
347
+ _ref$moreDetails = _ref.moreDetails,
348
+ moreDetails = _ref$moreDetails === void 0 ? [] : _ref$moreDetails,
349
+ _ref$title = _ref.title,
350
+ title = _ref$title === void 0 ? "" : _ref$title;
351
+ var _useState = React.useState(false),
352
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
353
+ showViewMore = _useState2[0],
354
+ setShowViewMore = _useState2[1];
355
+ var customViewMoreItems = React.useMemo(function () {
356
+ return neetoCist.filterBy({
357
+ kind: "custom"
358
+ }, moreDetails);
359
+ }, [moreDetails]);
360
+ var _useTranslation = reactI18next.useTranslation(),
361
+ t = _useTranslation.t;
362
+ if (isLoading) {
363
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
364
+ className: "flex h-full w-full items-center justify-center",
365
+ children: /*#__PURE__*/jsxRuntime.jsx(Spinner__default["default"], {})
366
+ });
367
+ }
368
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
369
+ className: "w-full",
370
+ children: [/*#__PURE__*/jsxRuntime.jsx(DetailsBlock$1, {
371
+ details: details,
372
+ handleCancel: handleCancel,
373
+ handleSubmit: handleSubmit,
374
+ helpPopoverProps: helpPopoverProps,
375
+ iconSize: iconSize,
376
+ title: title,
377
+ showIcons: true
378
+ }), showViewMore && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
379
+ children: [/*#__PURE__*/jsxRuntime.jsx("hr", {
380
+ className: "m-4"
381
+ }), /*#__PURE__*/jsxRuntime.jsx(DetailsBlock$1, {
382
+ handleCancel: handleCancel,
383
+ handleSubmit: handleSubmit,
384
+ helpPopoverProps: helpPopoverProps,
385
+ iconSize: iconSize,
386
+ details: neetoCist.removeBy({
387
+ kind: "custom"
388
+ }, moreDetails)
389
+ }), neetoCist.isPresent(customViewMoreItems) && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
390
+ children: [/*#__PURE__*/jsxRuntime.jsx("hr", {
391
+ className: "m-4"
392
+ }), ramda.pluck("value", customViewMoreItems)]
393
+ })]
394
+ }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
395
+ className: "mb-4",
396
+ icon: showViewMore ? Up__default["default"] : Down__default["default"],
397
+ style: "link",
398
+ label: showViewMore ? t("neetoMolecules.sessionEnvironment.viewLess") : t("neetoMolecules.sessionEnvironment.viewMore"),
399
+ onClick: function onClick() {
400
+ return setShowViewMore(ramda.not);
401
+ }
402
+ })]
403
+ });
404
+ };
405
+ var index = /*#__PURE__*/React.memo(SessionEnvironment);
406
+
407
+ module.exports = index;
408
+ //# sourceMappingURL=SessionEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEnvironment.js","sources":["../../src/components/SessionEnvironment/constants.js","../../src/components/SessionEnvironment/utils.jsx","../../src/components/SessionEnvironment/Item.jsx","../../src/components/SessionEnvironment/DetailsBlock.jsx","../../src/components/SessionEnvironment/index.jsx"],"sourcesContent":["import {\n Computer,\n Email,\n Location,\n Mobile,\n Phone,\n Subdomain,\n User,\n} from \"neetoicons\";\nimport {\n Apple,\n Chrome,\n Edge,\n Firefox,\n Safari,\n Ubuntu,\n Windows,\n} from \"neetoicons/misc\";\n\nexport const BOOLEAN_VALUES_MAP = { true: \"Yes\", false: \"No\" };\nexport const ENTER = \"enter\";\nexport const ESCAPE = \"escape\";\nexport const PHONE_NUMBER = \"phone_number\";\nexport const INTEGER = \"integer\";\nexport const ICONS_MAP = {\n name: User,\n user: User,\n email: Email,\n phone_number: Phone,\n location: Location,\n timezone: Subdomain,\n chrome: Chrome,\n safari: Safari,\n firefox: Firefox,\n edge: Edge,\n ie: Edge,\n windows: Windows,\n mac_os: Apple,\n linux: Ubuntu,\n mobile: Mobile,\n desktop: Computer,\n};\n","import { ICONS_MAP, INTEGER, PHONE_NUMBER } from \"./constants\";\n\nexport const getInputType = ({ name, kind }) => {\n if (name === PHONE_NUMBER) return \"tel\";\n else if (kind === INTEGER) return \"number\";\n\n return \"text\";\n};\n\nexport const getIcon = ({ iconSize, name, value }) => {\n const Icon =\n name === \"browser\" || name === \"os\"\n ? ICONS_MAP[value?.toLowerCase().replace(\" \", \"_\")]\n : ICONS_MAP[name];\n\n return <Icon size={iconSize} />;\n};\n","import { useEffect, useMemo, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\nimport { Check, Close } from \"neetoicons\";\nimport { Button, Input, Tooltip, Typography } from \"neetoui\";\nimport { isNil } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\nimport { PhoneNumberInput } from \"components/PhoneNumber\";\nimport TimeFormat from \"components/TimeFormat\";\n\nimport { BOOLEAN_VALUES_MAP, ENTER, ESCAPE, PHONE_NUMBER } from \"./constants\";\nimport { getIcon, getInputType } from \"./utils\";\n\nconst Item = ({ handleCancel, handleSubmit, iconSize, item, showIcons }) => {\n const [isEditing, setIsEditing] = useState(item.isEditing);\n const [value, setValue] = useState(item.value);\n\n const { t } = useTranslation();\n\n const containerRef = useHotkeys(ESCAPE, () => handleCancel(name), {\n mode: \"scoped\",\n });\n\n const {\n icon,\n isEditable = false,\n extraClasses = \"\",\n extraWrapperClasses = \"\",\n id,\n fieldValueId,\n custom = false,\n name,\n kind,\n error,\n label,\n showCopyButton = false,\n } = item;\n\n const valueToRender = useMemo(() => {\n if (isNil(value)) return \"-\";\n\n if (typeof value === \"boolean\") return BOOLEAN_VALUES_MAP[value.toString()];\n\n return value;\n }, [value]);\n\n const iconToRender = useMemo(\n () => icon || getIcon({ iconSize, name, value }),\n [icon, iconSize, name, value]\n );\n\n const onSuccess = () => setIsEditing(false);\n\n const handleMetadataSubmit = () =>\n handleSubmit({ fieldId: id, fieldValueId, name, value, custom, onSuccess });\n\n const handleMetadataCancel = () => {\n setIsEditing(false);\n setValue(item.value);\n handleCancel(name);\n };\n\n const inputRef = useHotkeys(ENTER, handleMetadataSubmit, {\n mode: \"scoped\",\n });\n\n const InputComponent = name === PHONE_NUMBER ? PhoneNumberInput : Input;\n\n const handleChange = event => {\n const value = name === PHONE_NUMBER ? event : event.target.value;\n setValue(value);\n };\n\n useEffect(() => {\n setValue(item.value);\n }, [item]);\n\n return (\n <div\n ref={containerRef}\n className={classNames(\n \"mb-2 flex place-items-center gap-2 align-middle\",\n extraWrapperClasses,\n { \"flex-wrap\": name !== PHONE_NUMBER }\n )}\n >\n {showIcons && isPresent(iconToRender) ? (\n <Tooltip\n content={\n label || t(`neetoMolecules.sessionEnvironment.details.keys.${name}`)\n }\n >\n <div className=\"flex-shrink-0\">{iconToRender}</div>\n </Tooltip>\n ) : (\n <Typography\n className=\"neeto-molecules-session-environment-editable-field whitespace-nowrap\"\n style=\"h5\"\n >\n {label || t(`neetoMolecules.sessionEnvironment.details.keys.${name}`)}\n </Typography>\n )}\n {!isEditing ? (\n <>\n {kind === \"datetime\" ? (\n <TimeFormat.DateWeekTime\n date={value}\n typographyProps={{\n style: \"body2\",\n className: `overflow-hidden truncate whitespace-normal break-all ${extraClasses}`,\n }}\n />\n ) : (\n <Typography\n className={`overflow-hidden truncate whitespace-normal break-all ${extraClasses}`}\n data-testid={`metadata-value-${name}`}\n style=\"body2\"\n weight=\"normal\"\n onClick={() => isEditable && setIsEditing(true)}\n >\n {valueToRender}\n </Typography>\n )}\n {showCopyButton && (\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n size=\"small\"\n style=\"text\"\n value={valueToRender}\n />\n )}\n </>\n ) : (\n <div className=\"neeto-molecules-session-environment-editable-field relative flex min-w-0 flex-grow items-center\">\n <InputComponent\n {...{ error }}\n autoFocus\n data-testid={`metadata-input-${name}`}\n placeholder={t(\"neetoMolecules.common.enter\", { what: label })}\n ref={inputRef}\n type={getInputType({ name, kind })}\n value={value || \"\"}\n onChange={handleChange}\n />\n <div className=\"neeto-molecules-session-environment-editable-field__actions absolute right-0 top-0 flex h-8 items-center pr-1\">\n <Button\n icon={Close}\n size=\"small\"\n style=\"text\"\n tooltipProps={{\n content: t(\"neetoMolecules.common.actions.cancel\"),\n position: \"top\",\n }}\n onClick={handleMetadataCancel}\n />\n <Button\n data-testid={`metadata-submit-${name}`}\n icon={Check}\n size=\"small\"\n style=\"text\"\n tooltipProps={{\n content: t(\"neetoMolecules.common.actions.save\"),\n position: \"top\",\n }}\n onClick={handleMetadataSubmit}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Item;\n","import { memo } from \"react\";\n\nimport { isPresent, noop } from \"neetocist\";\nimport { Typography } from \"neetoui\";\n\nimport HelpPopover from \"components/HelpPopover\";\n\nimport Item from \"./Item\";\n\nconst DetailsBlock = ({\n details,\n handleCancel = noop,\n handleSubmit = noop,\n helpPopoverProps,\n iconSize,\n showIcons = false,\n title = \"\",\n}) => (\n <div className=\"mb-4\">\n {title && (\n <div className=\"mb-2 flex\">\n <Typography\n className=\"mr-2\"\n style=\"h4\"\n textTransform=\"uppercase\"\n weight=\"bold\"\n >\n {title}\n </Typography>\n {isPresent(helpPopoverProps) && <HelpPopover {...helpPopoverProps} />}\n </div>\n )}\n {details.map((detail, index) => (\n <Item\n {...{ handleCancel, handleSubmit, iconSize, showIcons }}\n item={detail}\n key={index}\n />\n ))}\n </div>\n);\n\nexport default memo(DetailsBlock);\n","import { memo, useMemo, useState } from \"react\";\n\nimport { filterBy, isPresent, noop, removeBy } from \"neetocist\";\nimport { Down, Up } from \"neetoicons\";\nimport { Button, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { pluck, not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DetailsBlock from \"./DetailsBlock\";\nimport \"./session-environment.scss\";\n\nconst SessionEnvironment = ({\n details,\n handleCancel = noop,\n handleSubmit = noop,\n helpPopoverProps = {},\n iconSize = 20,\n isLoading = false,\n moreDetails = [],\n title = \"\",\n}) => {\n const [showViewMore, setShowViewMore] = useState(false);\n\n const customViewMoreItems = useMemo(\n () => filterBy({ kind: \"custom\" }, moreDetails),\n [moreDetails]\n );\n\n const { t } = useTranslation();\n\n if (isLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <div className=\"w-full\">\n <DetailsBlock\n {...{\n details,\n handleCancel,\n handleSubmit,\n helpPopoverProps,\n iconSize,\n title,\n }}\n showIcons\n />\n {showViewMore && (\n <>\n <hr className=\"m-4\" />\n <DetailsBlock\n {...{\n handleCancel,\n handleSubmit,\n helpPopoverProps,\n iconSize,\n }}\n details={removeBy({ kind: \"custom\" }, moreDetails)}\n />\n {isPresent(customViewMoreItems) && (\n <>\n <hr className=\"m-4\" />\n {pluck(\"value\", customViewMoreItems)}\n </>\n )}\n </>\n )}\n <Button\n className=\"mb-4\"\n icon={showViewMore ? Up : Down}\n style=\"link\"\n label={\n showViewMore\n ? t(\"neetoMolecules.sessionEnvironment.viewLess\")\n : t(\"neetoMolecules.sessionEnvironment.viewMore\")\n }\n onClick={() => setShowViewMore(not)}\n />\n </div>\n );\n};\n\nSessionEnvironment.propTypes = {\n /*\n details can be an array of fields to be displayed.\n */\n details: PropTypes.array,\n /*\n handleCancel is a function that will be called when the cancel button is clicked.\n */\n handleCancel: PropTypes.func,\n /*\n handleSubmit is a function that will be called when the form is submitted.\n */\n handleSubmit: PropTypes.func,\n /*\n helpPopoverProps are the props that will be passed to the HelpPopover component.\n */\n helpPopoverProps: PropTypes.object,\n /*\n iconSize is a number that will be used to set the size of the icon.\n */\n iconSize: PropTypes.number,\n /*\n isLoading is a boolean that will be used to show a spinner when true.\n */\n isLoading: PropTypes.bool,\n /*\n moreDetails can be an array of fields to be displayed when the view more button is clicked.\n */\n moreDetails: PropTypes.array,\n /*\n The title to be displayed above the details.\n */\n title: PropTypes.string,\n};\n\nexport default memo(SessionEnvironment);\n"],"names":["BOOLEAN_VALUES_MAP","ENTER","ESCAPE","PHONE_NUMBER","INTEGER","ICONS_MAP","name","User","user","email","Email","phone_number","Phone","location","Location","timezone","Subdomain","chrome","Chrome","safari","Safari","firefox","Firefox","edge","Edge","ie","windows","Windows","mac_os","Apple","linux","Ubuntu","mobile","Mobile","desktop","Computer","getInputType","_ref","kind","getIcon","_ref2","iconSize","value","Icon","toLowerCase","replace","_jsx","size","Item","handleCancel","handleSubmit","item","showIcons","_useState","useState","isEditing","_useState2","_slicedToArray","setIsEditing","_useState3","_useState4","setValue","_useTranslation","useTranslation","t","containerRef","useHotkeys","mode","icon","_item$isEditable","isEditable","_item$extraClasses","extraClasses","_item$extraWrapperCla","extraWrapperClasses","id","fieldValueId","_item$custom","custom","error","label","_item$showCopyButton","showCopyButton","valueToRender","useMemo","isNil","toString","iconToRender","onSuccess","handleMetadataSubmit","fieldId","handleMetadataCancel","inputRef","InputComponent","PhoneNumberInput","Input","handleChange","event","target","useEffect","_jsxs","ref","className","classNames","children","isPresent","Tooltip","content","concat","Typography","style","_Fragment","TimeFormat","DateWeekTime","date","typographyProps","weight","onClick","CopyToClipboardButton","autoFocus","placeholder","what","type","onChange","Button","Close","tooltipProps","position","Check","DetailsBlock","details","_ref$handleCancel","noop","_ref$handleSubmit","helpPopoverProps","_ref$showIcons","_ref$title","title","textTransform","HelpPopover","_objectSpread","map","detail","index","_createElement","key","memo","SessionEnvironment","_ref$helpPopoverProps","_ref$iconSize","_ref$isLoading","isLoading","_ref$moreDetails","moreDetails","showViewMore","setShowViewMore","customViewMoreItems","filterBy","Spinner","removeBy","pluck","Up","Down","not"],"mappings":"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"}