@bigbinary/neeto-molecules 5.3.35 → 5.4.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 (34) hide show
  1. package/dist/FloatingActionMenu.js +136 -7
  2. package/dist/FloatingActionMenu.js.map +1 -1
  3. package/dist/Sidebar.js +1 -1
  4. package/dist/cjs/FloatingActionMenu.js +140 -11
  5. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  6. package/dist/cjs/Sidebar.js +1 -1
  7. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js +93 -0
  8. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js.map +1 -0
  9. package/dist/cjs/{useWhatsNewChangesCount-CLo5AJny.js → useWhatsNewChangesCount-BVkLLk7f.js} +3 -1
  10. package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js.map +1 -0
  11. package/dist/cjs/{useWhatsNewChangesCount-BzQTamII.js → useWhatsNewChangesCount-CyOUS5U3.js} +3 -1
  12. package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js.map +1 -0
  13. package/dist/cjs/v2/FloatingActionMenu.js +168 -25
  14. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  15. package/dist/cjs/v2/Sidebar.js +1 -1
  16. package/dist/performanceDiagnostics-DJcT0dfG.js +88 -0
  17. package/dist/performanceDiagnostics-DJcT0dfG.js.map +1 -0
  18. package/dist/{useWhatsNewChangesCount-BaLLrXk5.js → useWhatsNewChangesCount-C71JkNHv.js} +3 -2
  19. package/dist/useWhatsNewChangesCount-C71JkNHv.js.map +1 -0
  20. package/dist/{useWhatsNewChangesCount-DLIMw7dA.js → useWhatsNewChangesCount-CQxhUCpt.js} +3 -2
  21. package/dist/useWhatsNewChangesCount-CQxhUCpt.js.map +1 -0
  22. package/dist/v2/FloatingActionMenu.js +165 -22
  23. package/dist/v2/FloatingActionMenu.js.map +1 -1
  24. package/dist/v2/Sidebar.js +1 -1
  25. package/package.json +1 -1
  26. package/src/translations/en.json +12 -1
  27. package/dist/cjs/urls-DtjJggEY.js +0 -19
  28. package/dist/cjs/urls-DtjJggEY.js.map +0 -1
  29. package/dist/cjs/useWhatsNewChangesCount-BzQTamII.js.map +0 -1
  30. package/dist/cjs/useWhatsNewChangesCount-CLo5AJny.js.map +0 -1
  31. package/dist/urls-DC61u0b2.js +0 -16
  32. package/dist/urls-DC61u0b2.js.map +0 -1
  33. package/dist/useWhatsNewChangesCount-BaLLrXk5.js.map +0 -1
  34. package/dist/useWhatsNewChangesCount-DLIMw7dA.js.map +0 -1
@@ -13,6 +13,7 @@ var Profile = require('@bigbinary/neeto-team-members-frontend/Profile');
13
13
  var Avatar = require('@bigbinary/neetoui/Avatar');
14
14
  var Dropdown$1 = require('@bigbinary/neetoui/Dropdown');
15
15
  var ramda = require('ramda');
16
+ var tippy_js = require('tippy.js');
16
17
  var KeyboardShortcuts = require('./KeyboardShortcuts.js');
17
18
  var SubscriptionUpgradeRequestModal = require('./SubscriptionUpgradeRequestModal.js');
18
19
  var Modal$1 = require('@bigbinary/neetoui/Modal');
@@ -29,11 +30,12 @@ var jsxRuntime = require('react/jsx-runtime');
29
30
  var reactQuery = require('@tanstack/react-query');
30
31
  var axios = require('axios');
31
32
  var Crown = require('@bigbinary/neeto-icons/Crown');
32
- var urls = require('./urls-DtjJggEY.js');
33
+ var performanceDiagnostics = require('./performanceDiagnostics-CS7NTxaH.js');
33
34
  var useBreakpoints = require('@bigbinary/neeto-commons-frontend/react-utils/useBreakpoints');
34
35
  var Book = require('@bigbinary/neeto-icons/Book');
35
36
  var Bulb = require('@bigbinary/neeto-icons/Bulb');
36
37
  var ChatQuestions = require('@bigbinary/neeto-icons/ChatQuestions');
38
+ var Clock = require('@bigbinary/neeto-icons/Clock');
37
39
  var Community = require('@bigbinary/neeto-icons/Community');
38
40
  var Roadmap = require('@bigbinary/neeto-icons/Roadmap');
39
41
  var Status = require('@bigbinary/neeto-icons/Status');
@@ -44,7 +46,7 @@ var Tag = require('@bigbinary/neetoui/Tag');
44
46
  var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
45
47
  var CloseCircle = require('@bigbinary/neeto-icons/CloseCircle');
46
48
  var User = require('@bigbinary/neeto-icons/User');
47
- var useWhatsNewChangesCount = require('./useWhatsNewChangesCount-BzQTamII.js');
49
+ var useWhatsNewChangesCount = require('./useWhatsNewChangesCount-CyOUS5U3.js');
48
50
  var useLocalStorage = require('@bigbinary/neeto-commons-frontend/react-utils/useLocalStorage');
49
51
  var Moon = require('@bigbinary/neeto-icons/Moon');
50
52
  var Sun = require('@bigbinary/neeto-icons/Sun');
@@ -54,12 +56,15 @@ var axios$1 = require('@bigbinary/neeto-commons-frontend/utils/axios');
54
56
  var general = require('@bigbinary/neeto-commons-frontend/utils/general');
55
57
  var Logout = require('@bigbinary/neeto-icons/Logout');
56
58
  var CopyToClipboardButton = require('./CopyToClipboardButton.js');
59
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
60
+ var Button = require('@bigbinary/neetoui/Button');
61
+ var Textarea = require('@bigbinary/neetoui/Textarea');
62
+ var Toastr = require('@bigbinary/neetoui/Toastr');
57
63
  require('./useKeyboardShortcutsPaneState-BrgdLb9F.js');
58
64
  require('zustand/shallow');
59
65
  require('@bigbinary/neeto-commons-frontend/react-utils/withImmutableActions');
60
66
  require('zustand');
61
67
  require('@bigbinary/neeto-icons/Close');
62
- require('@bigbinary/neetoui/Button');
63
68
  require('@bigbinary/neetoui/managers');
64
69
  require('@bigbinary/neetoui/Kbd');
65
70
  require('ua-parser-js');
@@ -391,7 +396,8 @@ var MenuButton$4 = reactUtils.withT(function (_ref) {
391
396
 
392
397
  var Menu$4 = Dropdown$1.Menu,
393
398
  MenuItem$8 = Dropdown$1.MenuItem;
394
- var HelpMenu = function HelpMenu() {
399
+ var HelpMenu = function HelpMenu(_ref) {
400
+ var onReportSlowness = _ref.onReportSlowness;
395
401
  var _useTranslation = reactI18next.useTranslation(),
396
402
  t = _useTranslation.t;
397
403
  var _useBreakpoints = useBreakpoints(),
@@ -412,7 +418,7 @@ var HelpMenu = function HelpMenu() {
412
418
  children: [/*#__PURE__*/jsxRuntime.jsx(MenuItem$8.Button, {
413
419
  className: "neeto-molecules-menu-sublist__item-btn",
414
420
  "data-testid": "help-link-help-articles-button",
415
- href: "".concat(urls.getNeetoUrl("help"), "/"),
421
+ href: "".concat(performanceDiagnostics.getNeetoUrl("help"), "/"),
416
422
  prefix: /*#__PURE__*/jsxRuntime.jsx(Book, {
417
423
  size: 18
418
424
  }),
@@ -444,7 +450,7 @@ var HelpMenu = function HelpMenu() {
444
450
  }), /*#__PURE__*/jsxRuntime.jsx(MenuItem$8.Button, {
445
451
  className: "neeto-molecules-menu-sublist__item-btn",
446
452
  "data-testid": "help-link-request-feature-button",
447
- href: "".concat(urls.getNeetoUrl("engage"), "/feature-requests"),
453
+ href: "".concat(performanceDiagnostics.getNeetoUrl("engage"), "/feature-requests"),
448
454
  prefix: /*#__PURE__*/jsxRuntime.jsx(Bulb, {
449
455
  size: 18
450
456
  }),
@@ -454,7 +460,7 @@ var HelpMenu = function HelpMenu() {
454
460
  }), /*#__PURE__*/jsxRuntime.jsx(MenuItem$8.Button, {
455
461
  className: "neeto-molecules-menu-sublist__item-btn",
456
462
  "data-testid": "help-link-roadmap-button",
457
- href: "".concat(urls.getNeetoUrl("engage"), "/product-roadmap"),
463
+ href: "".concat(performanceDiagnostics.getNeetoUrl("engage"), "/product-roadmap"),
458
464
  prefix: /*#__PURE__*/jsxRuntime.jsx(Roadmap, {
459
465
  size: 18
460
466
  }),
@@ -471,6 +477,14 @@ var HelpMenu = function HelpMenu() {
471
477
  rel: "noreferrer",
472
478
  target: "_blank",
473
479
  children: t("neetoMolecules.sidebar.helpLinks.systemStatus")
480
+ }), performanceDiagnostics.isPerformanceDiagnosticsEnabled() && /*#__PURE__*/jsxRuntime.jsx(MenuItem$8.Button, {
481
+ className: "neeto-molecules-menu-sublist__item-btn",
482
+ "data-testid": "help-link-report-slowness-button",
483
+ prefix: /*#__PURE__*/jsxRuntime.jsx(Clock, {
484
+ size: 18
485
+ }),
486
+ onClick: onReportSlowness,
487
+ children: t("neetoMolecules.sidebar.helpLinks.reportSlowness")
474
488
  })]
475
489
  })
476
490
  });
@@ -980,7 +994,8 @@ var ProfileMenu = function ProfileMenu(_ref) {
980
994
  isOrganizationSwitcherEnabled = _ref.isOrganizationSwitcherEnabled,
981
995
  isConsumer = _ref.isConsumer,
982
996
  enableSubscriptionUpgradeRequest = _ref.enableSubscriptionUpgradeRequest,
983
- openUpgradeModal = _ref.openUpgradeModal;
997
+ openUpgradeModal = _ref.openUpgradeModal,
998
+ onReportSlowness = _ref.onReportSlowness;
984
999
  var Menu = Dropdown$1.Menu,
985
1000
  MenuItem = Dropdown$1.MenuItem,
986
1001
  Divider = Dropdown$1.Divider;
@@ -1000,7 +1015,7 @@ var ProfileMenu = function ProfileMenu(_ref) {
1000
1015
  };
1001
1016
  if (!isPro && isOwner && enableSubscriptionUpgradeRequest) {
1002
1017
  return {
1003
- href: urls.getProductBillingUrl()
1018
+ href: performanceDiagnostics.getProductBillingUrl()
1004
1019
  };
1005
1020
  }
1006
1021
  return {
@@ -1041,7 +1056,9 @@ var ProfileMenu = function ProfileMenu(_ref) {
1041
1056
  links: [subscriptionPlanLink]
1042
1057
  }), showProductSwitcher && /*#__PURE__*/jsxRuntime.jsx(ProductSwitcher, {
1043
1058
  toggleModal: toggleModal
1044
- }), /*#__PURE__*/jsxRuntime.jsx(HelpMenu, {}), /*#__PURE__*/jsxRuntime.jsx(Divider, {})]
1059
+ }), /*#__PURE__*/jsxRuntime.jsx(HelpMenu, {
1060
+ onReportSlowness: onReportSlowness
1061
+ }), /*#__PURE__*/jsxRuntime.jsx(Divider, {})]
1045
1062
  }), isAuthenticated && !isConsumer && /*#__PURE__*/jsxRuntime.jsx(ProfileExpandMenu, {
1046
1063
  profileInfo: profileInfo
1047
1064
  }), /*#__PURE__*/jsxRuntime.jsx(LinkSection, {
@@ -1052,6 +1069,105 @@ var ProfileMenu = function ProfileMenu(_ref) {
1052
1069
  });
1053
1070
  };
1054
1071
 
1072
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1073
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
1074
+ var ReportSlownessModal = function ReportSlownessModal(_ref) {
1075
+ var reportedAt = _ref.reportedAt,
1076
+ onClose = _ref.onClose;
1077
+ var _useTranslation = reactI18next.useTranslation(),
1078
+ t = _useTranslation.t;
1079
+ var _useState = React.useState(""),
1080
+ _useState2 = _slicedToArray(_useState, 2),
1081
+ description = _useState2[0],
1082
+ setDescription = _useState2[1];
1083
+ var _useState3 = React.useState(false),
1084
+ _useState4 = _slicedToArray(_useState3, 2),
1085
+ isSubmitting = _useState4[0],
1086
+ setIsSubmitting = _useState4[1];
1087
+ var handleClose = function handleClose() {
1088
+ setDescription("");
1089
+ onClose();
1090
+ };
1091
+ var handleSubmit = /*#__PURE__*/function () {
1092
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
1093
+ var report;
1094
+ return _regenerator().w(function (_context) {
1095
+ while (1) switch (_context.n) {
1096
+ case 0:
1097
+ setIsSubmitting(true);
1098
+ _context.n = 1;
1099
+ return performanceDiagnostics.reportSlowness({
1100
+ description: description.trim(),
1101
+ reportedAt: reportedAt
1102
+ });
1103
+ case 1:
1104
+ report = _context.v;
1105
+ setIsSubmitting(false);
1106
+ if (report) {
1107
+ _context.n = 2;
1108
+ break;
1109
+ }
1110
+ Toastr.error(t("neetoMolecules.reportSlowness.error"));
1111
+ return _context.a(2);
1112
+ case 2:
1113
+ Toastr.success(t("neetoMolecules.reportSlowness.success"), report.replay_url ? {
1114
+ buttonLabel: t("neetoMolecules.reportSlowness.viewReplay"),
1115
+ onClick: function onClick() {
1116
+ return window.open(report.replay_url, "_blank", "noopener,noreferrer");
1117
+ }
1118
+ } : {});
1119
+ handleClose();
1120
+ case 3:
1121
+ return _context.a(2);
1122
+ }
1123
+ }, _callee);
1124
+ }));
1125
+ return function handleSubmit() {
1126
+ return _ref2.apply(this, arguments);
1127
+ };
1128
+ }();
1129
+ return /*#__PURE__*/jsxRuntime.jsxs(Modal$1, {
1130
+ closeOnEsc: !isSubmitting,
1131
+ closeOnOutsideClick: !isSubmitting,
1132
+ isOpen: Boolean(reportedAt),
1133
+ onClose: handleClose,
1134
+ children: [/*#__PURE__*/jsxRuntime.jsx(Modal$1.Header, {
1135
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
1136
+ style: "h3",
1137
+ weight: "semibold",
1138
+ children: t("neetoMolecules.reportSlowness.title")
1139
+ })
1140
+ }), /*#__PURE__*/jsxRuntime.jsx(Modal$1.Body, {
1141
+ children: /*#__PURE__*/jsxRuntime.jsx(Textarea, {
1142
+ "data-testid": "report-slowness-description-text-input",
1143
+ label: t("neetoMolecules.reportSlowness.descriptionLabel"),
1144
+ maxLength: useWhatsNewChangesCount.SLOWNESS_DESCRIPTION_MAX_LENGTH,
1145
+ value: description,
1146
+ placeholder: t("neetoMolecules.reportSlowness.descriptionPlaceholder"),
1147
+ onChange: function onChange(e) {
1148
+ return setDescription(e.target.value);
1149
+ }
1150
+ })
1151
+ }), /*#__PURE__*/jsxRuntime.jsxs(Modal$1.Footer, {
1152
+ className: "flex gap-x-2",
1153
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
1154
+ "data-testid": "report-slowness-cancel-button",
1155
+ disabled: isSubmitting,
1156
+ label: t("neetoMolecules.reportSlowness.cancel"),
1157
+ style: "secondary",
1158
+ onClick: handleClose
1159
+ }), /*#__PURE__*/jsxRuntime.jsx(Button, {
1160
+ "data-testid": "report-slowness-submit-button",
1161
+ disabled: isSubmitting,
1162
+ label: t("neetoMolecules.reportSlowness.submit"),
1163
+ loading: isSubmitting,
1164
+ style: "primary",
1165
+ onClick: handleSubmit
1166
+ })]
1167
+ })]
1168
+ });
1169
+ };
1170
+
1055
1171
  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; }
1056
1172
  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), true).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; }
1057
1173
  var ProfileButton = function ProfileButton(_ref) {
@@ -1078,6 +1194,10 @@ var ProfileButton = function ProfileButton(_ref) {
1078
1194
  _useState6 = _slicedToArray(_useState5, 2),
1079
1195
  isBackdropVisible = _useState6[0],
1080
1196
  setIsBackdropVisible = _useState6[1];
1197
+ var _useState7 = React.useState(null),
1198
+ _useState8 = _slicedToArray(_useState7, 2),
1199
+ slownessReportedAt = _useState8[0],
1200
+ setSlownessReportedAt = _useState8[1];
1081
1201
  var changesCount = useWhatsNewChangesCount.useWhatsNewChangesCount();
1082
1202
  var _KeyboardShortcuts$us = KeyboardShortcuts.usePaneState(),
1083
1203
  _KeyboardShortcuts$us2 = _slicedToArray(_KeyboardShortcuts$us, 2),
@@ -1160,12 +1280,21 @@ var ProfileButton = function ProfileButton(_ref) {
1160
1280
  openUpgradeModal: function openUpgradeModal() {
1161
1281
  return setIsUpgradeModalOpen(true);
1162
1282
  },
1163
- toggleModal: setIsModalOpen
1283
+ toggleModal: setIsModalOpen,
1284
+ onReportSlowness: function onReportSlowness() {
1285
+ setSlownessReportedAt(Date.now());
1286
+ tippy_js.hideAll();
1287
+ }
1164
1288
  })
1165
1289
  }), neetoCist.isPresent(changesCount) && /*#__PURE__*/jsxRuntime.jsx("span", {
1166
1290
  className: "neeto-molecules-menu__notif-count",
1167
1291
  "data-testid": "help-icon-changes-count",
1168
1292
  children: changesCount
1293
+ }), /*#__PURE__*/jsxRuntime.jsx(ReportSlownessModal, {
1294
+ reportedAt: slownessReportedAt,
1295
+ onClose: function onClose() {
1296
+ return setSlownessReportedAt(null);
1297
+ }
1169
1298
  }), /*#__PURE__*/jsxRuntime.jsx(Modal, {
1170
1299
  isOpen: isModalOpen,
1171
1300
  onClose: function onClose() {