@bigbinary/neeto-molecules 5.5.0-beta1 → 5.5.0
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/BrowserSupport.js +116 -51
- package/dist/BrowserSupport.js.map +1 -1
- package/dist/{Columns-C20zru7a.js → Columns-CpCh1cnJ.js} +6 -4
- package/dist/Columns-CpCh1cnJ.js.map +1 -0
- package/dist/{ConfigureView-D-2SQf3j.js → ConfigureView-re6uU4Lp.js} +6 -4
- package/dist/ConfigureView-re6uU4Lp.js.map +1 -0
- package/dist/EmailForm.js +3 -1
- package/dist/EmailForm.js.map +1 -1
- package/dist/FinderModal.js +14 -1
- package/dist/FinderModal.js.map +1 -1
- package/dist/FloatingActionMenu.js +175 -55
- package/dist/FloatingActionMenu.js.map +1 -1
- package/dist/IpRestriction.js +19 -9
- package/dist/IpRestriction.js.map +1 -1
- package/dist/ProductEmbed.js +35 -23
- package/dist/ProductEmbed.js.map +1 -1
- package/dist/ShareViaLink.js +4 -4
- package/dist/ShareViaLink.js.map +1 -1
- package/dist/Sidebar.js +43 -5
- package/dist/Sidebar.js.map +1 -1
- package/dist/StickyRibbonsContainer.js +27 -18
- package/dist/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/BrowserSupport.js +119 -51
- package/dist/cjs/BrowserSupport.js.map +1 -1
- package/dist/cjs/{Columns-rqa7goJu.js → Columns-Gcp48xQM.js} +5 -3
- package/dist/cjs/Columns-Gcp48xQM.js.map +1 -0
- package/dist/cjs/{ConfigureView-CNWEfiae.js → ConfigureView-CAdrpELW.js} +6 -4
- package/dist/cjs/ConfigureView-CAdrpELW.js.map +1 -0
- package/dist/cjs/EmailForm.js +3 -1
- package/dist/cjs/EmailForm.js.map +1 -1
- package/dist/cjs/FinderModal.js +14 -1
- package/dist/cjs/FinderModal.js.map +1 -1
- package/dist/cjs/FloatingActionMenu.js +189 -69
- package/dist/cjs/FloatingActionMenu.js.map +1 -1
- package/dist/cjs/IpRestriction.js +19 -9
- package/dist/cjs/IpRestriction.js.map +1 -1
- package/dist/cjs/ProductEmbed.js +34 -22
- package/dist/cjs/ProductEmbed.js.map +1 -1
- package/dist/cjs/ShareViaLink.js +4 -4
- package/dist/cjs/ShareViaLink.js.map +1 -1
- package/dist/cjs/Sidebar.js +43 -5
- package/dist/cjs/Sidebar.js.map +1 -1
- package/dist/cjs/StickyRibbonsContainer.js +29 -20
- package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/mail-Di35Ay-Z.js +20 -0
- package/dist/cjs/mail-Di35Ay-Z.js.map +1 -0
- package/dist/cjs/performanceDiagnostics-CS7NTxaH.js +93 -0
- package/dist/cjs/performanceDiagnostics-CS7NTxaH.js.map +1 -0
- package/dist/cjs/{phone-number-DVlbgxBG.js → phone-number-BydWe8Mf.js} +22 -3
- package/dist/cjs/phone-number-BydWe8Mf.js.map +1 -0
- package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js +121 -0
- package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js.map +1 -0
- package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js +106 -0
- package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js.map +1 -0
- package/dist/cjs/v2/BrowserSupport.js +119 -51
- package/dist/cjs/v2/BrowserSupport.js.map +1 -1
- package/dist/cjs/v2/Builder.js +17 -13
- package/dist/cjs/v2/Builder.js.map +1 -1
- package/dist/cjs/v2/CalendarView.js +2 -2
- package/dist/cjs/v2/Columns.js +1 -1
- package/dist/cjs/v2/ConfigurePageSidebar.js +1 -1
- package/dist/cjs/v2/DndTable.js +1 -0
- package/dist/cjs/v2/DndTable.js.map +1 -1
- package/dist/cjs/v2/DynamicVariables.js +17 -8
- package/dist/cjs/v2/DynamicVariables.js.map +1 -1
- package/dist/cjs/v2/EmailForm.js +97 -10
- package/dist/cjs/v2/EmailForm.js.map +1 -1
- package/dist/cjs/v2/EmailPreview.js +1 -1
- package/dist/cjs/v2/EmailPreview.js.map +1 -1
- package/dist/cjs/v2/Engagements.js +10 -7
- package/dist/cjs/v2/Engagements.js.map +1 -1
- package/dist/cjs/v2/FinderModal.js +104 -72
- package/dist/cjs/v2/FinderModal.js.map +1 -1
- package/dist/cjs/v2/FloatingActionMenu.js +267 -110
- package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
- package/dist/cjs/v2/IpRestriction.js +17 -7
- package/dist/cjs/v2/IpRestriction.js.map +1 -1
- package/dist/cjs/v2/MadeWith.js +5 -3
- package/dist/cjs/v2/MadeWith.js.map +1 -1
- package/dist/cjs/v2/MoreDropdown.js +5 -2
- package/dist/cjs/v2/MoreDropdown.js.map +1 -1
- package/dist/cjs/v2/OptionFields.js +1 -0
- package/dist/cjs/v2/OptionFields.js.map +1 -1
- package/dist/cjs/v2/PhoneNumber.js +1 -1
- package/dist/cjs/v2/ProductEmbed.js +25 -13
- package/dist/cjs/v2/ProductEmbed.js.map +1 -1
- package/dist/cjs/v2/SessionEnvironment.js +3 -16
- package/dist/cjs/v2/SessionEnvironment.js.map +1 -1
- package/dist/cjs/v2/Sidebar.js +95 -32
- package/dist/cjs/v2/Sidebar.js.map +1 -1
- package/dist/cjs/v2/StickyRibbonsContainer.js +29 -19
- package/dist/cjs/v2/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/v2/SubHeader.js +1 -1
- package/dist/cjs/v2/Taxonomy.js +1 -1
- package/dist/mail-CkquKByM.js +18 -0
- package/dist/mail-CkquKByM.js.map +1 -0
- package/dist/performanceDiagnostics-DJcT0dfG.js +88 -0
- package/dist/performanceDiagnostics-DJcT0dfG.js.map +1 -0
- package/dist/{phone-number-ClrmOx58.js → phone-number-n0BLV3g6.js} +24 -5
- package/dist/phone-number-n0BLV3g6.js.map +1 -0
- package/dist/useWhatsNewChangesCount-C71JkNHv.js +96 -0
- package/dist/useWhatsNewChangesCount-C71JkNHv.js.map +1 -0
- package/dist/useWhatsNewChangesCount-CQxhUCpt.js +106 -0
- package/dist/useWhatsNewChangesCount-CQxhUCpt.js.map +1 -0
- package/dist/v2/BrowserSupport.js +116 -51
- package/dist/v2/BrowserSupport.js.map +1 -1
- package/dist/v2/Builder.js +17 -13
- package/dist/v2/Builder.js.map +1 -1
- package/dist/v2/CalendarView.js +2 -2
- package/dist/v2/Columns.js +1 -1
- package/dist/v2/ConfigurePageSidebar.js +1 -1
- package/dist/v2/DndTable.js +1 -0
- package/dist/v2/DndTable.js.map +1 -1
- package/dist/v2/DynamicVariables.js +18 -9
- package/dist/v2/DynamicVariables.js.map +1 -1
- package/dist/v2/EmailForm.js +100 -13
- package/dist/v2/EmailForm.js.map +1 -1
- package/dist/v2/EmailPreview.js +1 -1
- package/dist/v2/EmailPreview.js.map +1 -1
- package/dist/v2/Engagements.js +10 -7
- package/dist/v2/Engagements.js.map +1 -1
- package/dist/v2/FinderModal.js +105 -73
- package/dist/v2/FinderModal.js.map +1 -1
- package/dist/v2/FloatingActionMenu.js +238 -81
- package/dist/v2/FloatingActionMenu.js.map +1 -1
- package/dist/v2/IpRestriction.js +17 -7
- package/dist/v2/IpRestriction.js.map +1 -1
- package/dist/v2/MadeWith.js +5 -3
- package/dist/v2/MadeWith.js.map +1 -1
- package/dist/v2/MoreDropdown.js +5 -2
- package/dist/v2/MoreDropdown.js.map +1 -1
- package/dist/v2/OptionFields.js +1 -0
- package/dist/v2/OptionFields.js.map +1 -1
- package/dist/v2/PhoneNumber.js +2 -2
- package/dist/v2/ProductEmbed.js +26 -14
- package/dist/v2/ProductEmbed.js.map +1 -1
- package/dist/v2/SessionEnvironment.js +2 -15
- package/dist/v2/SessionEnvironment.js.map +1 -1
- package/dist/v2/Sidebar.js +95 -32
- package/dist/v2/Sidebar.js.map +1 -1
- package/dist/v2/StickyRibbonsContainer.js +27 -17
- package/dist/v2/StickyRibbonsContainer.js.map +1 -1
- package/dist/v2/SubHeader.js +1 -1
- package/dist/v2/Taxonomy.js +1 -1
- package/package.json +8 -8
- package/src/translations/ar.json +8 -3
- package/src/translations/bg.json +8 -3
- package/src/translations/ca.json +8 -3
- package/src/translations/cs.json +8 -3
- package/src/translations/da.json +8 -3
- package/src/translations/de.json +8 -3
- package/src/translations/en.json +18 -2
- package/src/translations/es-MX.json +8 -3
- package/src/translations/es.json +8 -3
- package/src/translations/et.json +8 -3
- package/src/translations/fi.json +8 -3
- package/src/translations/fil.json +8 -3
- package/src/translations/fr.json +8 -3
- package/src/translations/he.json +8 -3
- package/src/translations/hi.json +8 -3
- package/src/translations/hr.json +8 -3
- package/src/translations/hu.json +8 -3
- package/src/translations/id.json +8 -3
- package/src/translations/it.json +8 -3
- package/src/translations/ja.json +8 -3
- package/src/translations/ko.json +8 -3
- package/src/translations/lv.json +984 -0
- package/src/translations/nl.json +8 -3
- package/src/translations/pl.json +8 -3
- package/src/translations/pt-BR.json +8 -3
- package/src/translations/pt.json +8 -3
- package/src/translations/ro.json +8 -3
- package/src/translations/ru.json +8 -3
- package/src/translations/sk.json +8 -3
- package/src/translations/sl.json +8 -3
- package/src/translations/sv.json +8 -3
- package/src/translations/th.json +8 -3
- package/src/translations/tr.json +8 -3
- package/src/translations/uk.json +8 -3
- package/src/translations/vi.json +8 -3
- package/src/translations/zh-CN.json +8 -3
- package/src/translations/zh-TW.json +8 -3
- package/types/BrowserSupport.d.ts +128 -39
- package/types/v2/EmailForm.d.ts +1 -0
- package/types/v2/EmailFormProvider.d.ts +3 -1
- package/dist/Columns-C20zru7a.js.map +0 -1
- package/dist/ConfigureView-D-2SQf3j.js.map +0 -1
- package/dist/cjs/Columns-rqa7goJu.js.map +0 -1
- package/dist/cjs/ConfigureView-CNWEfiae.js.map +0 -1
- package/dist/cjs/phone-number-DVlbgxBG.js.map +0 -1
- package/dist/phone-number-ClrmOx58.js.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { isPresent } from '@bigbinary/neeto-cist';
|
|
2
|
+
import { toLower } from 'ramda';
|
|
3
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
4
|
+
|
|
5
|
+
var getNeetoUrl = function getNeetoUrl(subdomain) {
|
|
6
|
+
var _globalProps;
|
|
7
|
+
return "https://".concat(subdomain, ".").concat(toLower(((_globalProps = globalProps) === null || _globalProps === void 0 ? void 0 : _globalProps.appName) || ""), ".com");
|
|
8
|
+
};
|
|
9
|
+
var getProductBillingUrl = function getProductBillingUrl() {
|
|
10
|
+
var _globalProps$organiza;
|
|
11
|
+
var billingOverviewUrl = "".concat((_globalProps$organiza = globalProps.organization) === null || _globalProps$organiza === void 0 ? void 0 : _globalProps$organiza.authAppUrl, "/admin/billing/overview");
|
|
12
|
+
var productSlug = toLower(globalProps.appName || "");
|
|
13
|
+
return isPresent(productSlug) ? "".concat(billingOverviewUrl, "/products/").concat(productSlug) : billingOverviewUrl;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// The NeetoReplay widget's requests have no timeout; without this a hung
|
|
17
|
+
// upload would keep the Report slowness modal submitting forever.
|
|
18
|
+
var REPORT_SLOWNESS_TIMEOUT_MS = 30000;
|
|
19
|
+
|
|
20
|
+
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 }; })(); }
|
|
21
|
+
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); }
|
|
22
|
+
|
|
23
|
+
// NeetoReplay widget API. The widget may not be loaded, and its session starts
|
|
24
|
+
// asynchronously, so check at render time rather than caching.
|
|
25
|
+
var isPerformanceDiagnosticsEnabled = function isPerformanceDiagnosticsEnabled() {
|
|
26
|
+
var _window$NeetoReplayWi, _window$NeetoReplayWi2;
|
|
27
|
+
return Boolean((_window$NeetoReplayWi = window.NeetoReplayWidget) === null || _window$NeetoReplayWi === void 0 || (_window$NeetoReplayWi2 = _window$NeetoReplayWi.isPerformanceDiagnosticsEnabled) === null || _window$NeetoReplayWi2 === void 0 ? void 0 : _window$NeetoReplayWi2.call(_window$NeetoReplayWi));
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Resolves to `{ id, replay_url }`, or `null` on failure or timeout.
|
|
31
|
+
var reportSlowness = /*#__PURE__*/function () {
|
|
32
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
|
|
33
|
+
var description, reportedAt, timeoutId, timeout, _yield$Promise$race, _window$NeetoReplayWi3, _window$NeetoReplayWi4, _t, _t2, _t3;
|
|
34
|
+
return _regenerator().w(function (_context) {
|
|
35
|
+
while (1) switch (_context.p = _context.n) {
|
|
36
|
+
case 0:
|
|
37
|
+
description = _ref.description, reportedAt = _ref.reportedAt;
|
|
38
|
+
timeout = new Promise(function (resolve) {
|
|
39
|
+
timeoutId = setTimeout(function () {
|
|
40
|
+
return resolve(null);
|
|
41
|
+
}, REPORT_SLOWNESS_TIMEOUT_MS);
|
|
42
|
+
});
|
|
43
|
+
_context.p = 1;
|
|
44
|
+
_context.n = 2;
|
|
45
|
+
return Promise.race([(_window$NeetoReplayWi3 = window.NeetoReplayWidget) === null || _window$NeetoReplayWi3 === void 0 || (_window$NeetoReplayWi4 = _window$NeetoReplayWi3.reportSlowness) === null || _window$NeetoReplayWi4 === void 0 ? void 0 : _window$NeetoReplayWi4.call(_window$NeetoReplayWi3, {
|
|
46
|
+
description: description,
|
|
47
|
+
reportedAt: reportedAt
|
|
48
|
+
}), timeout]);
|
|
49
|
+
case 2:
|
|
50
|
+
_t2 = _yield$Promise$race = _context.v;
|
|
51
|
+
_t = _t2 !== null;
|
|
52
|
+
if (!_t) {
|
|
53
|
+
_context.n = 3;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
_t = _yield$Promise$race !== void 0;
|
|
57
|
+
case 3:
|
|
58
|
+
if (!_t) {
|
|
59
|
+
_context.n = 4;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
_t3 = _yield$Promise$race;
|
|
63
|
+
_context.n = 5;
|
|
64
|
+
break;
|
|
65
|
+
case 4:
|
|
66
|
+
_t3 = null;
|
|
67
|
+
case 5:
|
|
68
|
+
return _context.a(2, _t3);
|
|
69
|
+
case 6:
|
|
70
|
+
_context.p = 6;
|
|
71
|
+
_context.v;
|
|
72
|
+
return _context.a(2, null);
|
|
73
|
+
case 7:
|
|
74
|
+
_context.p = 7;
|
|
75
|
+
clearTimeout(timeoutId);
|
|
76
|
+
return _context.f(7);
|
|
77
|
+
case 8:
|
|
78
|
+
return _context.a(2);
|
|
79
|
+
}
|
|
80
|
+
}, _callee, null, [[1, 6, 7, 8]]);
|
|
81
|
+
}));
|
|
82
|
+
return function reportSlowness(_x) {
|
|
83
|
+
return _ref2.apply(this, arguments);
|
|
84
|
+
};
|
|
85
|
+
}();
|
|
86
|
+
|
|
87
|
+
export { getProductBillingUrl as a, getNeetoUrl as g, isPerformanceDiagnosticsEnabled as i, reportSlowness as r };
|
|
88
|
+
//# sourceMappingURL=performanceDiagnostics-DJcT0dfG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performanceDiagnostics-DJcT0dfG.js","sources":["../src/utils/urls.js","../src/utils/constants.js","../src/utils/performanceDiagnostics.js"],"sourcesContent":["import { isPresent } from \"neetocist\";\nimport { toLower } from \"ramda\";\n\nexport const getNeetoUrl = subdomain =>\n `https://${subdomain}.${toLower(globalProps?.appName || \"\")}.com`;\n\nexport const getProductBillingUrl = () => {\n const billingOverviewUrl = `${globalProps.organization?.authAppUrl}/admin/billing/overview`;\n const productSlug = toLower(globalProps.appName || \"\");\n\n return isPresent(productSlug)\n ? `${billingOverviewUrl}/products/${productSlug}`\n : billingOverviewUrl;\n};\n","// The NeetoReplay widget's requests have no timeout; without this a hung\n// upload would keep the Report slowness modal submitting forever.\nexport const REPORT_SLOWNESS_TIMEOUT_MS = 30000;\n","import { REPORT_SLOWNESS_TIMEOUT_MS } from \"./constants\";\n\n// NeetoReplay widget API. The widget may not be loaded, and its session starts\n// asynchronously, so check at render time rather than caching.\nexport const isPerformanceDiagnosticsEnabled = () =>\n Boolean(window.NeetoReplayWidget?.isPerformanceDiagnosticsEnabled?.());\n\n// Resolves to `{ id, replay_url }`, or `null` on failure or timeout.\nexport const reportSlowness = async ({ description, reportedAt }) => {\n let timeoutId;\n const timeout = new Promise(resolve => {\n timeoutId = setTimeout(() => resolve(null), REPORT_SLOWNESS_TIMEOUT_MS);\n });\n\n try {\n return (\n (await Promise.race([\n window.NeetoReplayWidget?.reportSlowness?.({ description, reportedAt }),\n timeout,\n ])) ?? null\n );\n } catch {\n return null;\n } finally {\n clearTimeout(timeoutId);\n }\n};\n"],"names":["getNeetoUrl","subdomain","_globalProps","concat","toLower","globalProps","appName","getProductBillingUrl","_globalProps$organiza","billingOverviewUrl","organization","authAppUrl","productSlug","isPresent","REPORT_SLOWNESS_TIMEOUT_MS","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","isPerformanceDiagnosticsEnabled","_window$NeetoReplayWi","_window$NeetoReplayWi2","Boolean","window","NeetoReplayWidget","reportSlowness","_ref2","_asyncToGenerator","_callee","_ref","description","reportedAt","timeoutId","timeout","_yield$Promise$race","_window$NeetoReplayWi3","_window$NeetoReplayWi4","_t","_t2","_t3","_context","Promise","resolve","setTimeout","race","clearTimeout","_x","apply","arguments"],"mappings":";;;;IAGaA,WAAW,GAAG,SAAdA,WAAWA,CAAGC,SAAS,EAAA;AAAA,EAAA,IAAAC,YAAA;EAAA,OAAA,UAAA,CAAAC,MAAA,CACvBF,SAAS,EAAA,GAAA,CAAA,CAAAE,MAAA,CAAIC,OAAO,CAAC,CAAA,CAAAF,YAAA,GAAAG,WAAW,MAAA,IAAA,IAAAH,YAAA,KAAA,MAAA,GAAA,MAAA,GAAXA,YAAA,CAAaI,OAAO,KAAI,EAAE,CAAC,EAAA,MAAA,CAAA;AAAA;IAEhDC,oBAAoB,GAAG,SAAvBA,oBAAoBA,GAAS;AAAA,EAAA,IAAAC,qBAAA;AACxC,EAAA,IAAMC,kBAAkB,GAAA,EAAA,CAAAN,MAAA,CAAA,CAAAK,qBAAA,GAAMH,WAAW,CAACK,YAAY,cAAAF,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAxBA,qBAAA,CAA0BG,UAAU,EAAA,yBAAA,CAAyB;EAC3F,IAAMC,WAAW,GAAGR,OAAO,CAACC,WAAW,CAACC,OAAO,IAAI,EAAE,CAAC;AAEtD,EAAA,OAAOO,SAAS,CAACD,WAAW,CAAC,GAAA,EAAA,CAAAT,MAAA,CACtBM,kBAAkB,EAAA,YAAA,CAAA,CAAAN,MAAA,CAAaS,WAAW,IAC7CH,kBAAkB;AACxB;;ACbA;AACA;AACO,IAAMK,0BAA0B,GAAG,KAAK;;ACD/C,SAAA,YAAA,GAAA,qKAAA,IAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,GAAA,UAAA,IAAA,OAAAC,MAAA,GAAAA,MAAA,GAAA,EAAA,EAAAC,CAAA,GAAAF,CAAA,CAAAG,QAAA,IAAA,YAAA,EAAAC,CAAA,GAAAJ,CAAA,CAAAK,WAAA,IAAA,eAAA,CAAA,CAAA,SAAAC,EAAAN,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAA,EAAA,IAAAC,CAAA,GAAAL,CAAA,IAAAA,CAAA,CAAAM,SAAA,YAAAC,SAAA,GAAAP,CAAA,GAAAO,SAAA,EAAAC,CAAA,GAAAC,MAAA,CAAAC,MAAA,CAAAL,CAAA,CAAAC,SAAA,CAAA,CAAA,CAAA,OAAAK,mBAAA,CAAAH,CAAA,EAAA,SAAA,EAAA,UAAAV,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAA,EAAA,IAAAE,CAAA,EAAAC,CAAA,EAAAG,CAAA,EAAAI,CAAA,GAAA,CAAA,EAAAC,CAAA,GAAAX,CAAA,IAAA,EAAA,EAAAY,CAAA,GAAA,KAAA,EAAAC,CAAA,GAAA,EAAAF,CAAA,EAAA,CAAA,EAAAb,CAAA,EAAA,CAAA,EAAAgB,CAAA,EAAApB,CAAA,EAAAqB,CAAA,EAAAC,CAAA,EAAAN,CAAA,EAAAM,CAAA,CAAAC,IAAA,CAAAvB,CAAA,EAAA,CAAA,CAAA,EAAAsB,CAAA,WAAAA,CAAAA,CAAArB,CAAA,EAAAC,CAAA,WAAAM,CAAA,GAAAP,CAAA,EAAAQ,CAAA,GAAA,CAAA,EAAAG,CAAA,GAAAZ,CAAA,EAAAmB,CAAA,CAAAf,CAAA,GAAAF,CAAA,EAAAmB,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,SAAAC,EAAApB,CAAA,EAAAE,CAAA,EAAA,EAAA,KAAAK,CAAA,GAAAP,CAAA,EAAAU,CAAA,GAAAR,CAAA,EAAAH,CAAA,OAAAiB,CAAA,IAAAF,CAAA,IAAA,CAAAV,CAAA,IAAAL,CAAA,GAAAgB,CAAA,CAAAO,MAAA,EAAAvB,CAAA,UAAAK,CAAA,EAAAE,CAAA,GAAAS,CAAA,CAAAhB,CAAA,CAAA,EAAAqB,CAAA,GAAAH,CAAA,CAAAF,CAAA,EAAAQ,CAAA,GAAAjB,CAAA,KAAAN,CAAA,GAAA,CAAA,GAAA,CAAAI,CAAA,GAAAmB,CAAA,KAAArB,CAAA,MAAAQ,CAAA,GAAAJ,CAAA,CAAA,CAAAC,CAAA,GAAAD,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAAC,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAAD,CAAA,CAAA,CAAA,CAAA,GAAAA,CAAA,CAAA,CAAA,CAAA,GAAAR,CAAA,IAAAQ,CAAA,CAAA,CAAA,CAAA,IAAAc,CAAA,KAAA,CAAAhB,CAAA,GAAAJ,CAAA,GAAA,CAAA,IAAAoB,CAAA,GAAAd,CAAA,CAAA,CAAA,CAAA,KAAAC,CAAA,MAAAU,CAAA,CAAAC,CAAA,GAAAhB,CAAA,EAAAe,CAAA,CAAAf,CAAA,GAAAI,CAAA,CAAA,CAAA,CAAA,IAAAc,CAAA,GAAAG,CAAA,KAAAnB,CAAA,GAAAJ,CAAA,GAAA,CAAA,IAAAM,CAAA,CAAA,CAAA,CAAA,GAAAJ,CAAA,IAAAA,CAAA,GAAAqB,CAAA,MAAAjB,CAAA,CAAA,CAAA,CAAA,GAAAN,CAAA,EAAAM,CAAA,CAAA,CAAA,CAAA,GAAAJ,CAAA,EAAAe,CAAA,CAAAf,CAAA,GAAAqB,CAAA,EAAAhB,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAAH,CAAA,IAAAJ,CAAA,GAAA,CAAA,EAAA,OAAAmB,CAAA,CAAA,CAAA,MAAAH,CAAA,GAAA,IAAA,EAAAd,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,UAAAE,CAAA,EAAAW,CAAA,EAAAQ,CAAA,EAAA,EAAA,IAAAT,CAAA,GAAA,CAAA,EAAA,MAAAU,SAAA,CAAA,8BAAA,CAAA,CAAA,CAAA,KAAAR,CAAA,UAAAD,CAAA,IAAAK,CAAA,CAAAL,CAAA,EAAAQ,CAAA,CAAA,EAAAhB,CAAA,GAAAQ,CAAA,EAAAL,CAAA,GAAAa,CAAA,EAAA,CAAAxB,CAAA,GAAAQ,CAAA,GAAA,CAAA,GAAAT,CAAA,GAAAY,CAAA,KAAA,CAAAM,CAAA,GAAA,EAAAV,CAAA,KAAAC,CAAA,GAAAA,CAAA,GAAA,CAAA,IAAAA,CAAA,GAAA,CAAA,KAAAU,CAAA,CAAAf,CAAA,GAAA,EAAA,CAAA,EAAAkB,CAAA,CAAAb,CAAA,EAAAG,CAAA,CAAA,IAAAO,CAAA,CAAAf,CAAA,GAAAQ,CAAA,GAAAO,CAAA,CAAAC,CAAA,GAAAR,CAAA,aAAAI,CAAA,GAAA,CAAA,EAAAR,CAAA,EAAA,EAAA,IAAAC,CAAA,KAAAH,CAAA,GAAA,MAAA,CAAA,EAAAL,CAAA,GAAAO,CAAA,CAAAF,CAAA,WAAAL,CAAA,GAAAA,CAAA,CAAA0B,IAAA,CAAAnB,CAAA,EAAAI,CAAA,CAAA,CAAA,EAAA,MAAAc,SAAA,CAAA,kCAAA,CAAA,CAAA,CAAA,IAAA,CAAAzB,CAAA,CAAA2B,IAAA,EAAA,OAAA3B,CAAA,CAAA,CAAAW,CAAA,GAAAX,CAAA,CAAA4B,KAAA,EAAApB,CAAA,GAAA,CAAA,KAAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,KAAAA,CAAA,KAAAR,CAAA,GAAAO,CAAA,CAAA,QAAA,CAAA,CAAA,IAAAP,CAAA,CAAA0B,IAAA,CAAAnB,CAAA,CAAA,EAAAC,CAAA,SAAAG,CAAA,GAAAc,SAAA,CAAA,mCAAA,GAAApB,CAAA,GAAA,UAAA,CAAA,EAAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAAD,CAAA,GAAAR,CAAA,CAAA,CAAA,CAAA,MAAA,IAAA,CAAAC,CAAA,IAAAiB,CAAA,GAAAC,CAAA,CAAAf,CAAA,GAAA,CAAA,IAAAQ,CAAA,GAAAV,CAAA,CAAAyB,IAAA,CAAAvB,CAAA,EAAAe,CAAA,CAAA,MAAAE,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,OAAApB,CAAA,EAAA,EAAAO,CAAA,GAAAR,CAAA,EAAAS,CAAA,GAAA,CAAA,EAAAG,CAAA,GAAAX,CAAA,CAAA,CAAA,CAAA,SAAA,EAAAe,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAAa,KAAA,EAAA5B,CAAA,EAAA2B,IAAA,EAAAV,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAhB,CAAA,EAAAI,CAAA,EAAAE,CAAA,CAAA,EAAA,IAAA,CAAA,EAAAI,CAAA,CAAA,CAAA,CAAA,CAAA,IAAAS,CAAA,GAAA,EAAA,CAAA,CAAA,SAAAV,SAAAA,eAAAmB,iBAAAA,GAAA,CAAA,CAAA,CAAA,SAAAC,0BAAAA,GAAA,CAAA,CAAA,CAAA9B,CAAA,GAAAY,MAAA,CAAAmB,cAAA,CAAA,CAAA,IAAAvB,CAAA,GAAA,EAAA,CAAAL,CAAA,CAAA,GAAAH,CAAA,CAAAA,CAAA,IAAAG,CAAA,CAAA,EAAA,CAAA,CAAA,IAAAW,mBAAA,CAAAd,CAAA,GAAA,EAAA,EAAAG,CAAA,EAAA,YAAA,EAAA,OAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAAH,CAAA,GAAAW,CAAA,GAAAmB,0BAAA,CAAArB,SAAA,GAAAC,SAAA,CAAAD,SAAA,GAAAG,MAAA,CAAAC,MAAA,CAAAL,CAAA,CAAA,CAAA,CAAA,SAAAO,CAAAA,CAAAhB,CAAA,WAAAa,MAAA,CAAAoB,cAAA,GAAApB,MAAA,CAAAoB,cAAA,CAAAjC,CAAA,EAAA+B,0BAAA,CAAA,IAAA/B,CAAA,CAAAkC,SAAA,GAAAH,0BAAA,EAAAhB,mBAAA,CAAAf,CAAA,EAAAM,CAAA,EAAA,mBAAA,CAAA,CAAA,EAAAN,CAAA,CAAAU,SAAA,GAAAG,MAAA,CAAAC,MAAA,CAAAF,CAAA,CAAA,EAAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA8B,iBAAA,CAAApB,SAAA,GAAAqB,0BAAA,EAAAhB,mBAAA,CAAAH,CAAA,iBAAAmB,0BAAA,CAAA,EAAAhB,mBAAA,CAAAgB,0BAAA,EAAA,aAAA,EAAAD,iBAAA,CAAA,EAAAA,iBAAA,CAAAK,WAAA,GAAA,mBAAA,EAAApB,mBAAA,CAAAgB,0BAAA,EAAAzB,CAAA,EAAA,mBAAA,CAAA,EAAAS,mBAAA,CAAAH,CAAA,CAAA,EAAAG,mBAAA,CAAAH,CAAA,EAAAN,CAAA,EAAA,WAAA,CAAA,EAAAS,mBAAA,CAAAH,CAAA,EAAAR,CAAA,EAAA,YAAA,EAAA,OAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAAW,mBAAA,CAAAH,CAAA,8DAAAwB,YAAA,GAAA,SAAAA,YAAAA,GAAA,EAAA,OAAA,EAAAC,CAAA,EAAA7B,CAAA,EAAA8B,CAAA,EAAAtB,CAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,SAAAD,mBAAAA,CAAAf,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAAH,CAAA,EAAA,EAAA,IAAAO,CAAA,GAAAK,MAAA,CAAA0B,cAAA,CAAA,CAAA,IAAA,EAAA/B,CAAA,uBAAAR,CAAA,EAAA,EAAAQ,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAAO,mBAAA,GAAA,SAAAyB,mBAAAxC,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAAH,CAAA,EAAA,EAAA,SAAAK,CAAAA,CAAAJ,CAAA,EAAAE,CAAA,IAAAW,mBAAA,CAAAf,CAAA,EAAAE,CAAA,YAAAF,CAAA,EAAA,EAAA,OAAA,IAAA,CAAAyC,OAAA,CAAAvC,CAAA,EAAAE,CAAA,EAAAJ,CAAA,SAAAE,CAAA,GAAAM,CAAA,GAAAA,CAAA,CAAAR,CAAA,EAAAE,CAAA,IAAA2B,KAAA,EAAAzB,CAAA,EAAAsC,UAAA,GAAAzC,CAAA,EAAA0C,YAAA,EAAA,CAAA1C,CAAA,EAAA2C,QAAA,EAAA,CAAA3C,CAAA,MAAAD,CAAA,CAAAE,CAAA,CAAA,GAAAE,CAAA,IAAAE,CAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAAA,CAAA,cAAAA,CAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAS,mBAAA,CAAAf,CAAA,EAAAE,CAAA,EAAAE,CAAA,EAAAH,CAAA,CAAA,CAAA,CAAA;;AACA;AACA;AACO,IAAM4C,+BAA+B,GAAG,SAAlCA,+BAA+BA,GAAA;EAAA,IAAAC,qBAAA,EAAAC,sBAAA;EAAA,OAC1CC,OAAO,CAAA,CAAAF,qBAAA,GAACG,MAAM,CAACC,iBAAiB,MAAA,IAAA,IAAAJ,qBAAA,KAAA,MAAA,IAAA,CAAAC,sBAAA,GAAxBD,qBAAA,CAA0BD,+BAA+B,MAAA,IAAA,IAAAE,sBAAA,KAAA,MAAA,GAAA,MAAA,GAAzDA,sBAAA,CAAApB,IAAA,CAAAmB,qBAA4D,CAAC,CAAC;AAAA;;AAExE;IACaK,cAAc,gBAAA,YAAA;EAAA,IAAAC,KAAA,GAAAC,iBAAA,cAAAjB,YAAA,GAAAE,CAAA,CAAG,SAAAgB,OAAAA,CAAAC,IAAA,EAAA;IAAA,IAAAC,WAAA,EAAAC,UAAA,CAAA,CAAAC,SAAA,CAAA,CAAAC,OAAA,EAAAC,mBAAA,CAAA,CAAAC,sBAAA,CAAA,CAAAC,sBAAA,EAAAC,EAAA,CAAA,CAAAC,GAAA,CAAA,CAAAC,GAAA;AAAA,IAAA,OAAA7B,YAAA,EAAA,CAAAC,CAAA,CAAA,UAAA6B,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAjD,CAAA,GAAAiD,QAAA,CAAA9D,CAAA;AAAA,QAAA,KAAA,CAAA;UAASoD,WAAW,GAAAD,IAAA,CAAXC,WAAW,EAAEC,UAAU,GAAAF,IAAA,CAAVE,UAAU;AAEtDE,UAAAA,OAAO,GAAG,IAAIQ,OAAO,CAAC,UAAAC,OAAO,EAAI;YACrCV,SAAS,GAAGW,UAAU,CAAC,YAAA;cAAA,OAAMD,OAAO,CAAC,IAAI,CAAC;AAAA,YAAA,CAAA,EAAErE,0BAA0B,CAAC;AACzE,UAAA,CAAC,CAAC;AAAAmE,UAAAA,QAAA,CAAAjD,CAAA,GAAA,CAAA;AAAAiD,UAAAA,QAAA,CAAA9D,CAAA,GAAA,CAAA;UAAA,OAIS+D,OAAO,CAACG,IAAI,CAAC,CAAA,CAAAT,sBAAA,GAClBZ,MAAM,CAACC,iBAAiB,MAAA,IAAA,IAAAW,sBAAA,KAAA,MAAA,IAAA,CAAAC,sBAAA,GAAxBD,sBAAA,CAA0BV,cAAc,MAAA,IAAA,IAAAW,sBAAA,KAAA,MAAA,GAAA,MAAA,GAAxCA,sBAAA,CAAAnC,IAAA,CAAAkC,sBAAA,EAA2C;AAAEL,YAAAA,WAAW,EAAXA,WAAW;AAAEC,YAAAA,UAAU,EAAVA;AAAW,WAAC,CAAC,EACvEE,OAAO,CACR,CAAC;AAAA,QAAA,KAAA,CAAA;AAAAK,UAAAA,GAAA,GAAAJ,mBAAA,GAAAM,QAAA,CAAA9C,CAAA;AAAA2C,UAAAA,EAAA,GAAAC,GAAA,KAAA,IAAA;AAAA,UAAA,IAAA,CAAAD,EAAA,EAAA;AAAAG,YAAAA,QAAA,CAAA9D,CAAA,GAAA,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA2D,UAAAA,EAAA,GAAAH,mBAAA,KAAA,MAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAG,EAAA,EAAA;AAAAG,YAAAA,QAAA,CAAA9D,CAAA,GAAA,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA6D,UAAAA,GAAA,GAAAL,mBAAA;AAAAM,UAAAA,QAAA,CAAA9D,CAAA,GAAA,CAAA;AAAA,UAAA;AAAA,QAAA,KAAA,CAAA;AAAA6D,UAAAA,GAAA,GAAK,IAAI;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAAC,QAAA,CAAA7C,CAAA,CAAA,CAAA,EAAA4C,GAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAAC,UAAAA,QAAA,CAAAjD,CAAA,GAAA,CAAA;UAAAiD,QAAA,CAAA9C,CAAA;AAAA,UAAA,OAAA8C,QAAA,CAAA7C,CAAA,CAAA,CAAA,EAGN,IAAI,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA6C,UAAAA,QAAA,CAAAjD,CAAA,GAAA,CAAA;UAEXsD,YAAY,CAACb,SAAS,CAAC;UAAC,OAAAQ,QAAA,CAAAlD,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAkD,QAAA,CAAA7C,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,IAAA,CAAA,EAAAiC,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;EAAA,CAE3B,CAAA,CAAA;EAAA,OAAA,SAlBYH,cAAcA,CAAAqB,EAAA,EAAA;AAAA,IAAA,OAAApB,KAAA,CAAAqB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA,EAAA,CAAA;AAAA,CAAA;;;;"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
4
|
-
import { memo, useState, forwardRef } from 'react';
|
|
4
|
+
import { memo, useState, forwardRef, useId } from 'react';
|
|
5
|
+
import { Label } from '@bigbinary/neeto-atoms';
|
|
5
6
|
import { Popover, PopoverTrigger, Button, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandItem, InputGroup, InputGroupAddon, InputGroupInput } from '@bigbinary/neeto-atoms/primitives';
|
|
6
7
|
import { useQuery } from '@tanstack/react-query';
|
|
7
8
|
import classnames from 'classnames';
|
|
8
9
|
import { getCountries, parsePhoneNumber, formatIncompletePhoneNumber, isValidPhoneNumber, getCountryCallingCode } from 'libphonenumber-js/min';
|
|
9
|
-
import { findBy, noop } from '@bigbinary/neeto-cist';
|
|
10
|
+
import { hyphenate, findBy, noop } from '@bigbinary/neeto-cist';
|
|
10
11
|
import { i as index_es5_minExports } from './index.es5.min-Oe75miEx.js';
|
|
11
12
|
import i18next from 'i18next';
|
|
12
13
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -85,6 +86,7 @@ var CountryPicker = function CountryPicker(_ref) {
|
|
|
85
86
|
var label = _ref2.label,
|
|
86
87
|
value = _ref2.value;
|
|
87
88
|
return /*#__PURE__*/jsxs(CommandItem, {
|
|
89
|
+
"data-testid": "".concat(hyphenate(label), "-select-option"),
|
|
88
90
|
value: "".concat(label, " ").concat(value),
|
|
89
91
|
onSelect: function onSelect() {
|
|
90
92
|
return handleSelect(value);
|
|
@@ -198,7 +200,7 @@ var preserveCursor = function preserveCursor(callback) {
|
|
|
198
200
|
};
|
|
199
201
|
};
|
|
200
202
|
|
|
201
|
-
var _excluded = ["value", "onChange", "className", "error", "selectProps", "initialCountryCode"];
|
|
203
|
+
var _excluded = ["value", "onChange", "className", "error", "label", "required", "id", "selectProps", "initialCountryCode"];
|
|
202
204
|
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; }
|
|
203
205
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
|
|
204
206
|
var PhoneNumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
@@ -208,10 +210,17 @@ var PhoneNumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
208
210
|
onChange = _ref$onChange === void 0 ? noop : _ref$onChange,
|
|
209
211
|
className = _ref.className,
|
|
210
212
|
error = _ref.error,
|
|
213
|
+
label = _ref.label,
|
|
214
|
+
_ref$required = _ref.required,
|
|
215
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
|
216
|
+
id = _ref.id,
|
|
211
217
|
selectProps = _ref.selectProps,
|
|
212
218
|
initialCountryCode = _ref.initialCountryCode,
|
|
213
219
|
inputProps = _objectWithoutProperties(_ref, _excluded);
|
|
214
220
|
var safeValue = value !== null && value !== void 0 ? value : "";
|
|
221
|
+
var generatedId = useId();
|
|
222
|
+
var inputId = id !== null && id !== void 0 ? id : generatedId;
|
|
223
|
+
var errorId = "error_".concat(inputId);
|
|
215
224
|
var _useState = useState(function () {
|
|
216
225
|
return getPhoneData(safeValue).countryCode || initialCountryCode;
|
|
217
226
|
}),
|
|
@@ -257,7 +266,12 @@ var PhoneNumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
257
266
|
};
|
|
258
267
|
return /*#__PURE__*/jsxs("div", {
|
|
259
268
|
className: className,
|
|
260
|
-
children: [/*#__PURE__*/
|
|
269
|
+
children: [label && /*#__PURE__*/jsx(Label, {
|
|
270
|
+
required: required,
|
|
271
|
+
className: "mb-2",
|
|
272
|
+
htmlFor: inputId,
|
|
273
|
+
children: label
|
|
274
|
+
}), /*#__PURE__*/jsxs(InputGroup, {
|
|
261
275
|
className: classnames(
|
|
262
276
|
// Clip to the rounded box so the country-picker button's hover
|
|
263
277
|
// background (seated with a negative inline-start margin by the
|
|
@@ -280,9 +294,13 @@ var PhoneNumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
280
294
|
}), /*#__PURE__*/jsx(InputGroupInput, _objectSpread({
|
|
281
295
|
onKeyDown: onKeyDown,
|
|
282
296
|
ref: ref,
|
|
297
|
+
required: required,
|
|
298
|
+
"aria-describedby": error ? errorId : undefined,
|
|
283
299
|
"aria-invalid": !!error || undefined,
|
|
300
|
+
"aria-required": required || undefined,
|
|
284
301
|
autoComplete: "tel",
|
|
285
302
|
"data-testid": "phonenumber-input",
|
|
303
|
+
id: inputId,
|
|
286
304
|
inputMode: "tel",
|
|
287
305
|
type: "tel",
|
|
288
306
|
value: formattedValue,
|
|
@@ -290,6 +308,7 @@ var PhoneNumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
290
308
|
}, inputProps))]
|
|
291
309
|
}), error && /*#__PURE__*/jsx("p", {
|
|
292
310
|
className: "text-destructive mt-1 text-sm",
|
|
311
|
+
id: errorId,
|
|
293
312
|
children: error
|
|
294
313
|
})]
|
|
295
314
|
});
|
|
@@ -300,4 +319,4 @@ var css = "@import url(\"https://fonts.googleapis.com/css2?family=Noto+Color+Emo
|
|
|
300
319
|
n(css,{});
|
|
301
320
|
|
|
302
321
|
export { PhoneNumberInput as P, getPhoneData as g, isPhoneNumberValid as i, validation as v };
|
|
303
|
-
//# sourceMappingURL=phone-number-
|
|
322
|
+
//# sourceMappingURL=phone-number-n0BLV3g6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-number-n0BLV3g6.js","sources":["../src/v2/components/PhoneNumber/constants.js","../src/v2/components/PhoneNumber/CountryPicker/constants.js","../src/v2/components/PhoneNumber/CountryPicker/index.jsx","../src/v2/components/PhoneNumber/apis/neeto_ip_lookup.js","../src/v2/components/PhoneNumber/utils.js","../src/v2/components/PhoneNumber/PhoneNumberInput.jsx"],"sourcesContent":["export const IP_LOOKUP_ACCESS_TOKEN = \"083c694c79f119c7f227e737de9a5c8c\";\nexport const IP_LOOKUP_STORAGE_KEY = \"IP_LOOKUP_DETAILS_STORAGE\";\nexport const MAX_CACHE_AGE = 60 * 60 * 1000;\n","import { countries } from \"countries-list\";\nimport { getCountries } from \"libphonenumber-js/min\";\n\nexport const COUNTRY_PICKER_OPTIONS = getCountries()\n .filter(code => countries[code])\n .map(code => ({ label: countries[code].name, value: code }))\n .sort((a, b) => a.label.localeCompare(b.label));\n","import { memo, useState } from \"react\";\n\nimport {\n Button,\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { countries } from \"countries-list\";\nimport i18next from \"i18next\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { hyphenate } from \"neetocist\";\n\nimport { COUNTRY_PICKER_OPTIONS } from \"./constants\";\n\nconst CountryPicker = ({ countryCode, onChange, disabled }) => {\n const [open, setOpen] = useState(false);\n\n const handleSelect = nextValue => {\n onChange(nextValue);\n setOpen(false);\n };\n\n return (\n <Popover {...{ open }} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n {...{ disabled }}\n className=\"neeto-molecules-phone-number-input__country-picker hover:bg-muted h-6 min-h-6 shrink-0 gap-1 self-center rounded-lg border-0 bg-transparent px-2 shadow-none\"\n data-testid=\"phonenumber-country-picker\"\n size=\"sm\"\n variant=\"ghost\"\n aria-label={i18next.t(\n \"neetoMolecules.phoneNumberInput.countryCodeAriaLabel\"\n )}\n >\n <span className=\"neeto-molecules-phone-number-input__flag text-xl leading-none\">\n {countries[countryCode]?.emoji}\n </span>\n <ChevronDownIcon\n aria-hidden\n className=\"text-muted-foreground size-3\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className=\"w-64 p-0\"\n sideOffset={4}\n onClick={event => event.stopPropagation()}\n >\n <Command>\n <CommandInput\n data-testid=\"phonenumber-country-picker-search\"\n placeholder={i18next.t(\n \"neetoMolecules.phoneNumberInput.searchCountry\"\n )}\n />\n <CommandList className=\"mt-1\">\n <CommandEmpty>\n {i18next.t(\"neetoMolecules.phoneNumberInput.noCountryFound\")}\n </CommandEmpty>\n {COUNTRY_PICKER_OPTIONS.map(({ label, value }) => (\n <CommandItem\n data-testid={`${hyphenate(label)}-select-option`}\n key={value}\n value={`${label} ${value}`}\n onSelect={() => handleSelect(value)}\n >\n <span className=\"neeto-molecules-phone-number-input__flag text-xl leading-none\">\n {countries[value]?.emoji}\n </span>\n <span>{label}</span>\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport default memo(CountryPicker);\n","import axios from \"axios\";\n\nimport { IP_LOOKUP_ACCESS_TOKEN } from \"../constants\";\n\nconst fetchLocationDetails = () =>\n axios.get(\n \"https://neeto-ip-lookup-web-production.neetodeployapp.com/location\",\n { headers: { \"X-ACCESS-TOKEN\": IP_LOOKUP_ACCESS_TOKEN } }\n );\n\nconst neetoIpLookupApi = { fetchLocationDetails };\nexport default neetoIpLookupApi;\n","import i18next from \"i18next\";\nimport {\n formatIncompletePhoneNumber,\n isValidPhoneNumber,\n parsePhoneNumber,\n} from \"libphonenumber-js/min\";\nimport { getFromLocalStorage, setToLocalStorage } from \"neetocommons/v2/utils\";\nimport * as yup from \"yup\";\n\nimport neetoIpLookupApi from \"./apis/neeto_ip_lookup\";\nimport { IP_LOOKUP_STORAGE_KEY, MAX_CACHE_AGE } from \"./constants\";\n\nexport const isPhoneNumberValid = (value = \"\", ...rest) =>\n isValidPhoneNumber(value, ...rest);\n\nexport const validation = (\n message = i18next.t(\"neetoMolecules.phoneNumberInput.validations.invalid\")\n) =>\n yup\n .string()\n .test(\"phoneNumber\", message, phoneNumber =>\n phoneNumber ? isValidPhoneNumber(phoneNumber) : true\n );\n\nexport const getPhoneData = (value, defaultCountryCode) => {\n try {\n const parsedValue = parsePhoneNumber(value, defaultCountryCode);\n\n return {\n phoneNumber: parsedValue.number,\n international: parsedValue.formatInternational(),\n countryCode: parsedValue.country || defaultCountryCode,\n };\n } catch {\n return {\n phoneNumber: value,\n international: formatIncompletePhoneNumber(value, defaultCountryCode),\n countryCode: defaultCountryCode,\n };\n }\n};\n\nexport const fetchLocationDetails = async () => {\n const stored = getFromLocalStorage(IP_LOOKUP_STORAGE_KEY);\n const { data, timestamp } = stored || {};\n const isCacheValid = timestamp && Date.now() - timestamp < MAX_CACHE_AGE;\n\n if (isCacheValid) return data;\n\n try {\n const details = await neetoIpLookupApi.fetchLocationDetails();\n const timestamp = Date.now();\n setToLocalStorage(IP_LOOKUP_STORAGE_KEY, { data: details, timestamp });\n\n return details;\n } catch {\n return data || null;\n }\n};\n\nexport const isNumeric = char => char >= \"0\" && char <= \"9\";\n\nexport const preserveCursor = callback => event => {\n const start = event.target.selectionStart;\n const end = event.target.selectionEnd;\n const len = event.target.value.length;\n const result = callback(event);\n const delta = event.target.value.length - len;\n event.target.setSelectionRange(start + delta, end + delta);\n\n return result;\n};\n","import { forwardRef, useId, useState } from \"react\";\n\nimport { Label } from \"@bigbinary/neeto-atoms\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport classnames from \"classnames\";\nimport {\n formatIncompletePhoneNumber,\n getCountryCallingCode,\n} from \"libphonenumber-js/min\";\nimport { noop, findBy } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport { IP_LOOKUP_STORAGE_KEY } from \"./constants\";\nimport CountryPicker from \"./CountryPicker\";\nimport { COUNTRY_PICKER_OPTIONS } from \"./CountryPicker/constants\";\nimport {\n getPhoneData,\n isNumeric,\n preserveCursor,\n fetchLocationDetails,\n} from \"./utils\";\n\nconst PhoneNumberInput = forwardRef(\n (\n {\n value = \"\",\n onChange = noop,\n className,\n error,\n label,\n required = false,\n id,\n selectProps,\n initialCountryCode,\n ...inputProps\n },\n ref\n ) => {\n const safeValue = value ?? \"\";\n\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const errorId = `error_${inputId}`;\n\n const [countryCode, setCountryCode] = useState(\n () => getPhoneData(safeValue).countryCode || initialCountryCode\n );\n\n const { data: ipCountry } = useQuery({\n queryKey: [IP_LOOKUP_STORAGE_KEY],\n queryFn: fetchLocationDetails,\n enabled: !countryCode,\n staleTime: Infinity,\n gcTime: Infinity,\n select: data =>\n findBy({ value: data.countryCode }, COUNTRY_PICKER_OPTIONS),\n });\n\n const finalCountryCode = countryCode || ipCountry?.value || \"US\";\n const formattedValue = formatIncompletePhoneNumber(\n safeValue,\n finalCountryCode\n );\n\n const onKeyDown = preserveCursor(event => {\n if (event.key !== \"Backspace\") return;\n const left = event.target.value.substring(0, event.target.selectionStart);\n const right = event.target.value.substring(event.target.selectionEnd);\n let index = left.length - 1;\n while (index > 0 && !isNumeric(left[index])) index--;\n const newValue = left.substring(0, index + 1) + right;\n if (newValue) event.target.value = newValue;\n });\n\n const onInputChange = preserveCursor(event => {\n const phoneData = getPhoneData(event.target.value, finalCountryCode);\n event.target.value = formatIncompletePhoneNumber(event.target.value);\n setCountryCode(phoneData.countryCode);\n onChange(phoneData.phoneNumber);\n });\n\n const onChangeCountry = nextCountryCode => {\n const phoneData = getPhoneData(safeValue, finalCountryCode);\n const prevPrefix = `+${getCountryCallingCode(phoneData.countryCode)}`;\n const nextPrefix = `+${getCountryCallingCode(nextCountryCode)}`;\n setCountryCode(nextCountryCode);\n onChange(nextPrefix + safeValue.replace(prevPrefix, \"\"));\n };\n\n return (\n <div {...{ className }}>\n {label && (\n <Label {...{ required }} className=\"mb-2\" htmlFor={inputId}>\n {label}\n </Label>\n )}\n <InputGroup\n className={classnames(\n // Clip to the rounded box so the country-picker button's hover\n // background (seated with a negative inline-start margin by the\n // atoms addon) cannot overflow the input's rounded corner. The\n // focus/error ring is a box-shadow on this element, so it is not\n // clipped; the country dropdown is a portaled popover, so it is\n // unaffected too.\n \"neeto-molecules-phone-number-input__group overflow-hidden\",\n !!error && \"border-destructive ring-destructive/20 ring-3\"\n )}\n >\n <InputGroupAddon\n align=\"inline-start\"\n // Inset the country picker: cancel the atoms addon's negative\n // inline-start margin and add a little left padding so the picker\n // reads as a chip sitting inside the input, not flush to its edge.\n className=\"neeto-molecules-phone-number-input__addon !ms-0 p-0 ps-0.5\"\n >\n <CountryPicker\n countryCode={finalCountryCode}\n onChange={onChangeCountry}\n {...selectProps}\n />\n </InputGroupAddon>\n <InputGroupInput\n {...{ onKeyDown, ref, required }}\n aria-describedby={error ? errorId : undefined}\n aria-invalid={!!error || undefined}\n aria-required={required || undefined}\n autoComplete=\"tel\"\n data-testid=\"phonenumber-input\"\n id={inputId}\n inputMode=\"tel\"\n type=\"tel\"\n value={formattedValue}\n onChange={onInputChange}\n {...inputProps}\n />\n </InputGroup>\n {error && (\n <p className=\"text-destructive mt-1 text-sm\" id={errorId}>\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nPhoneNumberInput.displayName = \"PhoneNumberInput\";\n\nPhoneNumberInput.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n className: PropTypes.string,\n error: PropTypes.string,\n label: PropTypes.node,\n required: PropTypes.bool,\n id: PropTypes.string,\n selectProps: PropTypes.object,\n initialCountryCode: PropTypes.string,\n};\n\nexport default PhoneNumberInput;\n"],"names":["IP_LOOKUP_ACCESS_TOKEN","IP_LOOKUP_STORAGE_KEY","MAX_CACHE_AGE","COUNTRY_PICKER_OPTIONS","getCountries","filter","code","countries","map","label","name","value","sort","a","b","localeCompare","CountryPicker","_ref","_countries$countryCod","countryCode","onChange","disabled","_useState","useState","_useState2","_slicedToArray","open","setOpen","handleSelect","nextValue","_jsxs","Popover","onOpenChange","children","_jsx","PopoverTrigger","asChild","Button","className","size","variant","i18next","t","emoji","ChevronDownIcon","PopoverContent","align","sideOffset","onClick","event","stopPropagation","Command","CommandInput","placeholder","CommandList","CommandEmpty","_ref2","_countries$value","CommandItem","concat","hyphenate","onSelect","memo","fetchLocationDetails","axios","get","headers","neetoIpLookupApi","e","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","d","bind","length","l","TypeError","call","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","isPhoneNumberValid","arguments","undefined","_len","rest","Array","_key","isValidPhoneNumber","apply","validation","message","yup","string","test","phoneNumber","getPhoneData","defaultCountryCode","parsedValue","parsePhoneNumber","number","international","formatInternational","country","_unused","formatIncompletePhoneNumber","_asyncToGenerator","_callee","stored","data","timestamp","isCacheValid","details","_timestamp","_context","getFromLocalStorage","Date","now","setToLocalStorage","isNumeric","char","preserveCursor","callback","start","target","selectionStart","end","selectionEnd","len","result","delta","setSelectionRange","PhoneNumberInput","forwardRef","ref","_ref$value","_ref$onChange","noop","error","_ref$required","required","id","selectProps","initialCountryCode","inputProps","_objectWithoutProperties","_excluded","safeValue","generatedId","useId","inputId","errorId","setCountryCode","_useQuery","useQuery","queryKey","queryFn","enabled","staleTime","Infinity","gcTime","select","findBy","ipCountry","finalCountryCode","formattedValue","onKeyDown","key","left","substring","right","index","newValue","onInputChange","phoneData","onChangeCountry","nextCountryCode","prevPrefix","getCountryCallingCode","nextPrefix","replace","Label","htmlFor","InputGroup","classnames","InputGroupAddon","_objectSpread","InputGroupInput","autoComplete","inputMode","type"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { t } from 'i18next';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
6
|
+
var DELETE_WORKSPACE_URL = "/auth/organization/delete";
|
|
7
|
+
var ENGAGE_WIDGET_TRIGGER_ID = "neetoengage-trigger";
|
|
8
|
+
var DEFAULT_MENU_LINK_PROPS = {
|
|
9
|
+
engageProps: {
|
|
10
|
+
id: ENGAGE_WIDGET_TRIGGER_ID,
|
|
11
|
+
label: t("neetoMolecules.sidebar.helpLinks.whatsNew"),
|
|
12
|
+
"data-testid": "help-link-engage-button"
|
|
13
|
+
},
|
|
14
|
+
keyboardShortcutProps: {
|
|
15
|
+
label: t("neetoMolecules.sidebar.helpLinks.keyboardShortcuts"),
|
|
16
|
+
"data-testid": "help-link-keyboard-shortcut-button"
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Theme switcher
|
|
21
|
+
var APP_THEME_LOCALSTORAGE_KEY = "appTheme";
|
|
22
|
+
var THEMES = {
|
|
23
|
+
LIGHT: "neeto-ui-theme--light",
|
|
24
|
+
DARK: "neeto-ui-theme--dark"
|
|
25
|
+
};
|
|
26
|
+
var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
|
|
27
|
+
var SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;
|
|
28
|
+
|
|
29
|
+
// Shared source of truth for the neetoEngage changelog unread count.
|
|
30
|
+
//
|
|
31
|
+
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
32
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
33
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
34
|
+
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
35
|
+
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
36
|
+
// out to every subscribed component. Installation happens on the first
|
|
37
|
+
// subscriber and is torn down only when the last one unsubscribes — so
|
|
38
|
+
// interleaved mount/unmount of the two surfaces can never leave a stale handler
|
|
39
|
+
// on the global object.
|
|
40
|
+
|
|
41
|
+
var currentCount = null;
|
|
42
|
+
var subscribers = new Set();
|
|
43
|
+
var isInstalled = false;
|
|
44
|
+
var previousOnReceiveData;
|
|
45
|
+
var notify = function notify() {
|
|
46
|
+
return subscribers.forEach(function (setCount) {
|
|
47
|
+
return setCount(currentCount);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
var install = function install() {
|
|
51
|
+
if (isInstalled) return;
|
|
52
|
+
isInstalled = true;
|
|
53
|
+
var existing = window.Nv || {};
|
|
54
|
+
previousOnReceiveData = existing.onReceiveData;
|
|
55
|
+
window.Nv = Object.assign(existing, {
|
|
56
|
+
onReceiveData: function onReceiveData(data) {
|
|
57
|
+
var _previousOnReceiveDat;
|
|
58
|
+
(_previousOnReceiveDat = previousOnReceiveData) === null || _previousOnReceiveDat === void 0 || _previousOnReceiveDat(data);
|
|
59
|
+
// Only react to a numeric unreadCount; `0` clears the badge (a non-zero
|
|
60
|
+
// count would otherwise stay stale until the pane is opened).
|
|
61
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.unreadCount) === "number") {
|
|
62
|
+
currentCount = data.unreadCount || null;
|
|
63
|
+
notify();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
var uninstall = function uninstall() {
|
|
69
|
+
if (!isInstalled) return;
|
|
70
|
+
isInstalled = false;
|
|
71
|
+
if (window.Nv) {
|
|
72
|
+
window.Nv.onReceiveData = previousOnReceiveData;
|
|
73
|
+
}
|
|
74
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
75
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
76
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
77
|
+
};
|
|
78
|
+
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
79
|
+
var _useState = useState(currentCount),
|
|
80
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
81
|
+
changesCount = _useState2[0],
|
|
82
|
+
setChangesCount = _useState2[1];
|
|
83
|
+
useEffect(function () {
|
|
84
|
+
install();
|
|
85
|
+
subscribers.add(setChangesCount);
|
|
86
|
+
setChangesCount(currentCount);
|
|
87
|
+
return function () {
|
|
88
|
+
subscribers["delete"](setChangesCount);
|
|
89
|
+
if (subscribers.size === 0) uninstall();
|
|
90
|
+
};
|
|
91
|
+
}, []);
|
|
92
|
+
return changesCount;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { APP_THEME_LOCALSTORAGE_KEY as A, DELETE_WORKSPACE_URL as D, ENGAGE_WIDGET_TRIGGER_ID as E, MY_ORGANIZATION_URL as M, NEETO_AUTH_BILLING_INFO_URL as N, SLOWNESS_DESCRIPTION_MAX_LENGTH as S, THEMES as T, DEFAULT_MENU_LINK_PROPS as a, useWhatsNewChangesCount as u };
|
|
96
|
+
//# sourceMappingURL=useWhatsNewChangesCount-C71JkNHv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-C71JkNHv.js","sources":["../src/components/FloatingActionMenu/constants.js","../src/components/FloatingActionMenu/hooks/useWhatsNewChangesCount.js"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const MY_ORGANIZATION_URL = \"/auth/organization/edit\";\nexport const DELETE_WORKSPACE_URL = \"/auth/organization/delete\";\nexport const ENGAGE_WIDGET_TRIGGER_ID = \"neetoengage-trigger\";\n\nexport const DEFAULT_MENU_LINK_PROPS = {\n engageProps: {\n id: ENGAGE_WIDGET_TRIGGER_ID,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n \"data-testid\": \"help-link-engage-button\",\n },\n keyboardShortcutProps: {\n label: t(\"neetoMolecules.sidebar.helpLinks.keyboardShortcuts\"),\n \"data-testid\": \"help-link-keyboard-shortcut-button\",\n },\n};\n\n// Theme switcher\nexport const APP_THEME_LOCALSTORAGE_KEY = \"appTheme\";\n\nexport const THEMES = {\n LIGHT: \"neeto-ui-theme--light\",\n DARK: \"neeto-ui-theme--dark\",\n};\n\nexport const NEETO_AUTH_BILLING_INFO_URL =\n \"/neeto_sso/api/v1/subscription/billing\";\n\nexport const SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;\n","import { useEffect, useState } from \"react\";\n\n// Shared source of truth for the neetoEngage changelog unread count.\n//\n// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`\n// whenever it changes (on load and each time entries are marked read). Opening\n// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the\n// Sidebar surface this count, so this module installs a SINGLE set of\n// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value\n// out to every subscribed component. Installation happens on the first\n// subscriber and is torn down only when the last one unsubscribes — so\n// interleaved mount/unmount of the two surfaces can never leave a stale handler\n// on the global object.\n\nlet currentCount = null;\nconst subscribers = new Set();\nlet isInstalled = false;\nlet previousOnReceiveData;\n\nconst notify = () => subscribers.forEach(setCount => setCount(currentCount));\n\nconst install = () => {\n if (isInstalled) return;\n isInstalled = true;\n\n const existing = window.Nv || {};\n previousOnReceiveData = existing.onReceiveData;\n\n window.Nv = Object.assign(existing, {\n onReceiveData: data => {\n previousOnReceiveData?.(data);\n // Only react to a numeric unreadCount; `0` clears the badge (a non-zero\n // count would otherwise stay stale until the pane is opened).\n if (typeof data?.unreadCount === \"number\") {\n currentCount = data.unreadCount || null;\n notify();\n }\n },\n });\n};\n\nconst uninstall = () => {\n if (!isInstalled) return;\n isInstalled = false;\n\n if (window.Nv) {\n window.Nv.onReceiveData = previousOnReceiveData;\n }\n // currentCount is kept: the widget only reports it on page load and after a\n // \"Mark as read\", so a surface that remounts (e.g. after navigating to a page\n // without a sidebar and back) would otherwise lose it until a full reload.\n};\n\nconst useWhatsNewChangesCount = () => {\n const [changesCount, setChangesCount] = useState(currentCount);\n\n useEffect(() => {\n install();\n subscribers.add(setChangesCount);\n setChangesCount(currentCount);\n\n return () => {\n subscribers.delete(setChangesCount);\n if (subscribers.size === 0) uninstall();\n };\n }, []);\n\n return changesCount;\n};\n\nexport default useWhatsNewChangesCount;\n"],"names":["MY_ORGANIZATION_URL","DELETE_WORKSPACE_URL","ENGAGE_WIDGET_TRIGGER_ID","DEFAULT_MENU_LINK_PROPS","engageProps","id","label","t","keyboardShortcutProps","APP_THEME_LOCALSTORAGE_KEY","THEMES","LIGHT","DARK","NEETO_AUTH_BILLING_INFO_URL","SLOWNESS_DESCRIPTION_MAX_LENGTH","currentCount","subscribers","Set","isInstalled","previousOnReceiveData","notify","forEach","setCount","install","existing","window","Nv","onReceiveData","Object","assign","data","_previousOnReceiveDat","unreadCount","uninstall","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","changesCount","setChangesCount","useEffect","add","size"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { t } from 'i18next';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
6
|
+
var BILLING_URL = "/auth/admin_billing";
|
|
7
|
+
var DELETE_WORKSPACE_URL = "/auth/organization/delete";
|
|
8
|
+
var ENGAGE_WIDGET_TRIGGER_ID = "neetoengage-trigger";
|
|
9
|
+
var DEFAULT_MENU_LINK_PROPS = {
|
|
10
|
+
engageProps: {
|
|
11
|
+
id: ENGAGE_WIDGET_TRIGGER_ID,
|
|
12
|
+
label: t("neetoMolecules.sidebar.helpLinks.whatsNew"),
|
|
13
|
+
"data-testid": "help-link-engage-button"
|
|
14
|
+
},
|
|
15
|
+
keyboardShortcutProps: {
|
|
16
|
+
label: t("neetoMolecules.sidebar.helpLinks.keyboardShortcuts"),
|
|
17
|
+
"data-testid": "help-link-keyboard-shortcut-button"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Theme switcher
|
|
22
|
+
var APP_THEME_LOCALSTORAGE_KEY = "appTheme";
|
|
23
|
+
var THEMES = {
|
|
24
|
+
LIGHT: "light",
|
|
25
|
+
DARK: "dark"
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Legacy neetoUI theme classes — kept until full migration is complete.
|
|
29
|
+
var LEGACY_THEMES = {
|
|
30
|
+
LIGHT: "neeto-ui-theme--light",
|
|
31
|
+
DARK: "neeto-ui-theme--dark"
|
|
32
|
+
};
|
|
33
|
+
var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
|
|
34
|
+
var MENU_ITEM_CLASSES = "gap-2.5 px-2.5 py-2 font-medium [&>[data-slot=menu-item-prefix]>svg]:!size-[18px] [&>[data-slot=menu-item-suffix]>svg]:!size-[18px]";
|
|
35
|
+
var THEME_BUTTON_BASE = "relative z-10 flex items-center justify-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-medium transition-colors focus-visible:outline-none";
|
|
36
|
+
var THEME_ICON_BASE = "transition-transform duration-300 ease-out";
|
|
37
|
+
var SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;
|
|
38
|
+
|
|
39
|
+
// Shared source of truth for the neetoEngage changelog unread count.
|
|
40
|
+
//
|
|
41
|
+
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
42
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
43
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
44
|
+
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
45
|
+
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
46
|
+
// out to every subscribed component. Installation happens on the first
|
|
47
|
+
// subscriber and is torn down only when the last one unsubscribes — so
|
|
48
|
+
// interleaved mount/unmount of the two surfaces can never leave a stale handler
|
|
49
|
+
// on the global object.
|
|
50
|
+
|
|
51
|
+
var currentCount = null;
|
|
52
|
+
var subscribers = new Set();
|
|
53
|
+
var isInstalled = false;
|
|
54
|
+
var previousOnReceiveData;
|
|
55
|
+
var notify = function notify() {
|
|
56
|
+
return subscribers.forEach(function (setCount) {
|
|
57
|
+
return setCount(currentCount);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
var install = function install() {
|
|
61
|
+
if (isInstalled) return;
|
|
62
|
+
isInstalled = true;
|
|
63
|
+
var existing = window.Nv || {};
|
|
64
|
+
previousOnReceiveData = existing.onReceiveData;
|
|
65
|
+
window.Nv = Object.assign(existing, {
|
|
66
|
+
onReceiveData: function onReceiveData(data) {
|
|
67
|
+
var _previousOnReceiveDat;
|
|
68
|
+
(_previousOnReceiveDat = previousOnReceiveData) === null || _previousOnReceiveDat === void 0 || _previousOnReceiveDat(data);
|
|
69
|
+
// Only react to a numeric unreadCount; `0` clears the badge (a non-zero
|
|
70
|
+
// count would otherwise stay stale until the pane is opened).
|
|
71
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.unreadCount) === "number") {
|
|
72
|
+
currentCount = data.unreadCount || null;
|
|
73
|
+
notify();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
var uninstall = function uninstall() {
|
|
79
|
+
if (!isInstalled) return;
|
|
80
|
+
isInstalled = false;
|
|
81
|
+
if (window.Nv) {
|
|
82
|
+
window.Nv.onReceiveData = previousOnReceiveData;
|
|
83
|
+
}
|
|
84
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
85
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
86
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
87
|
+
};
|
|
88
|
+
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
89
|
+
var _useState = useState(currentCount),
|
|
90
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
91
|
+
changesCount = _useState2[0],
|
|
92
|
+
setChangesCount = _useState2[1];
|
|
93
|
+
useEffect(function () {
|
|
94
|
+
install();
|
|
95
|
+
subscribers.add(setChangesCount);
|
|
96
|
+
setChangesCount(currentCount);
|
|
97
|
+
return function () {
|
|
98
|
+
subscribers["delete"](setChangesCount);
|
|
99
|
+
if (subscribers.size === 0) uninstall();
|
|
100
|
+
};
|
|
101
|
+
}, []);
|
|
102
|
+
return changesCount;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export { APP_THEME_LOCALSTORAGE_KEY as A, BILLING_URL as B, DELETE_WORKSPACE_URL as D, ENGAGE_WIDGET_TRIGGER_ID as E, LEGACY_THEMES as L, MENU_ITEM_CLASSES as M, NEETO_AUTH_BILLING_INFO_URL as N, SLOWNESS_DESCRIPTION_MAX_LENGTH as S, THEMES as T, THEME_ICON_BASE as a, THEME_BUTTON_BASE as b, MY_ORGANIZATION_URL as c, DEFAULT_MENU_LINK_PROPS as d, useWhatsNewChangesCount as u };
|
|
106
|
+
//# sourceMappingURL=useWhatsNewChangesCount-CQxhUCpt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-CQxhUCpt.js","sources":["../src/v2/components/FloatingActionMenu/constants.js","../src/v2/components/FloatingActionMenu/hooks/useWhatsNewChangesCount.js"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const MY_ORGANIZATION_URL = \"/auth/organization/edit\";\nexport const BILLING_URL = \"/auth/admin_billing\";\nexport const DELETE_WORKSPACE_URL = \"/auth/organization/delete\";\nexport const ENGAGE_WIDGET_TRIGGER_ID = \"neetoengage-trigger\";\n\nexport const DEFAULT_MENU_LINK_PROPS = {\n engageProps: {\n id: ENGAGE_WIDGET_TRIGGER_ID,\n label: t(\"neetoMolecules.sidebar.helpLinks.whatsNew\"),\n \"data-testid\": \"help-link-engage-button\",\n },\n keyboardShortcutProps: {\n label: t(\"neetoMolecules.sidebar.helpLinks.keyboardShortcuts\"),\n \"data-testid\": \"help-link-keyboard-shortcut-button\",\n },\n};\n\n// Theme switcher\nexport const APP_THEME_LOCALSTORAGE_KEY = \"appTheme\";\n\nexport const THEMES = { LIGHT: \"light\", DARK: \"dark\" };\n\n// Legacy neetoUI theme classes — kept until full migration is complete.\nexport const LEGACY_THEMES = {\n LIGHT: \"neeto-ui-theme--light\",\n DARK: \"neeto-ui-theme--dark\",\n};\n\nexport const NEETO_AUTH_BILLING_INFO_URL =\n \"/neeto_sso/api/v1/subscription/billing\";\n\nexport const MENU_ITEM_CLASSES =\n \"gap-2.5 px-2.5 py-2 font-medium [&>[data-slot=menu-item-prefix]>svg]:!size-[18px] [&>[data-slot=menu-item-suffix]>svg]:!size-[18px]\";\n\nexport const THEME_BUTTON_BASE =\n \"relative z-10 flex items-center justify-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-medium transition-colors focus-visible:outline-none\";\n\nexport const THEME_ICON_BASE = \"transition-transform duration-300 ease-out\";\n\nexport const SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;\n","import { useEffect, useState } from \"react\";\n\n// Shared source of truth for the neetoEngage changelog unread count.\n//\n// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`\n// whenever it changes (on load and each time entries are marked read). Opening\n// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the\n// Sidebar surface this count, so this module installs a SINGLE set of\n// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value\n// out to every subscribed component. Installation happens on the first\n// subscriber and is torn down only when the last one unsubscribes — so\n// interleaved mount/unmount of the two surfaces can never leave a stale handler\n// on the global object.\n\nlet currentCount = null;\nconst subscribers = new Set();\nlet isInstalled = false;\nlet previousOnReceiveData;\n\nconst notify = () => subscribers.forEach(setCount => setCount(currentCount));\n\nconst install = () => {\n if (isInstalled) return;\n isInstalled = true;\n\n const existing = window.Nv || {};\n previousOnReceiveData = existing.onReceiveData;\n\n window.Nv = Object.assign(existing, {\n onReceiveData: data => {\n previousOnReceiveData?.(data);\n // Only react to a numeric unreadCount; `0` clears the badge (a non-zero\n // count would otherwise stay stale until the pane is opened).\n if (typeof data?.unreadCount === \"number\") {\n currentCount = data.unreadCount || null;\n notify();\n }\n },\n });\n};\n\nconst uninstall = () => {\n if (!isInstalled) return;\n isInstalled = false;\n\n if (window.Nv) {\n window.Nv.onReceiveData = previousOnReceiveData;\n }\n // currentCount is kept: the widget only reports it on page load and after a\n // \"Mark as read\", so a surface that remounts (e.g. after navigating to a page\n // without a sidebar and back) would otherwise lose it until a full reload.\n};\n\nconst useWhatsNewChangesCount = () => {\n const [changesCount, setChangesCount] = useState(currentCount);\n\n useEffect(() => {\n install();\n subscribers.add(setChangesCount);\n setChangesCount(currentCount);\n\n return () => {\n subscribers.delete(setChangesCount);\n if (subscribers.size === 0) uninstall();\n };\n }, []);\n\n return changesCount;\n};\n\nexport default useWhatsNewChangesCount;\n"],"names":["MY_ORGANIZATION_URL","BILLING_URL","DELETE_WORKSPACE_URL","ENGAGE_WIDGET_TRIGGER_ID","DEFAULT_MENU_LINK_PROPS","engageProps","id","label","t","keyboardShortcutProps","APP_THEME_LOCALSTORAGE_KEY","THEMES","LIGHT","DARK","LEGACY_THEMES","NEETO_AUTH_BILLING_INFO_URL","MENU_ITEM_CLASSES","THEME_BUTTON_BASE","THEME_ICON_BASE","SLOWNESS_DESCRIPTION_MAX_LENGTH","currentCount","subscribers","Set","isInstalled","previousOnReceiveData","notify","forEach","setCount","install","existing","window","Nv","onReceiveData","Object","assign","data","_previousOnReceiveDat","unreadCount","uninstall","useWhatsNewChangesCount","_useState","useState","_useState2","_slicedToArray","changesCount","setChangesCount","useEffect","add","size"],"mappings":"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"}
|