@bigbinary/neeto-molecules 5.5.0-beta1 → 5.5.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.
- 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 +19 -3
- package/src/translations/bg.json +19 -3
- package/src/translations/ca.json +19 -3
- package/src/translations/cs.json +19 -3
- package/src/translations/da.json +19 -3
- package/src/translations/de.json +19 -3
- package/src/translations/en.json +18 -2
- package/src/translations/es-MX.json +19 -3
- package/src/translations/es.json +19 -3
- package/src/translations/et.json +19 -3
- package/src/translations/fi.json +19 -3
- package/src/translations/fil.json +19 -3
- package/src/translations/fr.json +19 -3
- package/src/translations/he.json +19 -3
- package/src/translations/hi.json +19 -3
- package/src/translations/hr.json +19 -3
- package/src/translations/hu.json +19 -3
- package/src/translations/id.json +19 -3
- package/src/translations/it.json +19 -3
- package/src/translations/ja.json +19 -3
- package/src/translations/ko.json +19 -3
- package/src/translations/lv.json +995 -0
- package/src/translations/nl.json +19 -3
- package/src/translations/pl.json +19 -3
- package/src/translations/pt-BR.json +19 -3
- package/src/translations/pt.json +19 -3
- package/src/translations/ro.json +19 -3
- package/src/translations/ru.json +19 -3
- package/src/translations/sk.json +19 -3
- package/src/translations/sl.json +19 -3
- package/src/translations/sv.json +19 -3
- package/src/translations/th.json +19 -3
- package/src/translations/tr.json +19 -3
- package/src/translations/uk.json +19 -3
- package/src/translations/vi.json +19 -3
- package/src/translations/zh-CN.json +19 -3
- package/src/translations/zh-TW.json +19 -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 @@
|
|
|
1
|
+
{"version":3,"file":"performanceDiagnostics-CS7NTxaH.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":"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"}
|
|
@@ -4,6 +4,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
4
4
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
5
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
6
|
var React = require('react');
|
|
7
|
+
var neetoAtoms = require('@bigbinary/neeto-atoms');
|
|
7
8
|
var primitives = require('@bigbinary/neeto-atoms/primitives');
|
|
8
9
|
var reactQuery = require('@tanstack/react-query');
|
|
9
10
|
var classnames = require('classnames');
|
|
@@ -106,6 +107,7 @@ var CountryPicker$1 = function CountryPicker(_ref) {
|
|
|
106
107
|
var label = _ref2.label,
|
|
107
108
|
value = _ref2.value;
|
|
108
109
|
return /*#__PURE__*/jsxRuntime.jsxs(primitives.CommandItem, {
|
|
110
|
+
"data-testid": "".concat(neetoCist.hyphenate(label), "-select-option"),
|
|
109
111
|
value: "".concat(label, " ").concat(value),
|
|
110
112
|
onSelect: function onSelect() {
|
|
111
113
|
return handleSelect(value);
|
|
@@ -219,7 +221,7 @@ var preserveCursor = function preserveCursor(callback) {
|
|
|
219
221
|
};
|
|
220
222
|
};
|
|
221
223
|
|
|
222
|
-
var _excluded = ["value", "onChange", "className", "error", "selectProps", "initialCountryCode"];
|
|
224
|
+
var _excluded = ["value", "onChange", "className", "error", "label", "required", "id", "selectProps", "initialCountryCode"];
|
|
223
225
|
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; }
|
|
224
226
|
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; }
|
|
225
227
|
var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
@@ -229,10 +231,17 @@ var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
229
231
|
onChange = _ref$onChange === void 0 ? neetoCist.noop : _ref$onChange,
|
|
230
232
|
className = _ref.className,
|
|
231
233
|
error = _ref.error,
|
|
234
|
+
label = _ref.label,
|
|
235
|
+
_ref$required = _ref.required,
|
|
236
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
|
237
|
+
id = _ref.id,
|
|
232
238
|
selectProps = _ref.selectProps,
|
|
233
239
|
initialCountryCode = _ref.initialCountryCode,
|
|
234
240
|
inputProps = _objectWithoutProperties(_ref, _excluded);
|
|
235
241
|
var safeValue = value !== null && value !== void 0 ? value : "";
|
|
242
|
+
var generatedId = React.useId();
|
|
243
|
+
var inputId = id !== null && id !== void 0 ? id : generatedId;
|
|
244
|
+
var errorId = "error_".concat(inputId);
|
|
236
245
|
var _useState = React.useState(function () {
|
|
237
246
|
return getPhoneData(safeValue).countryCode || initialCountryCode;
|
|
238
247
|
}),
|
|
@@ -278,7 +287,12 @@ var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
278
287
|
};
|
|
279
288
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
280
289
|
className: className,
|
|
281
|
-
children: [/*#__PURE__*/jsxRuntime.
|
|
290
|
+
children: [label && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
|
|
291
|
+
required: required,
|
|
292
|
+
className: "mb-2",
|
|
293
|
+
htmlFor: inputId,
|
|
294
|
+
children: label
|
|
295
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(primitives.InputGroup, {
|
|
282
296
|
className: classnames(
|
|
283
297
|
// Clip to the rounded box so the country-picker button's hover
|
|
284
298
|
// background (seated with a negative inline-start margin by the
|
|
@@ -301,9 +315,13 @@ var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
301
315
|
}), /*#__PURE__*/jsxRuntime.jsx(primitives.InputGroupInput, _objectSpread({
|
|
302
316
|
onKeyDown: onKeyDown,
|
|
303
317
|
ref: ref,
|
|
318
|
+
required: required,
|
|
319
|
+
"aria-describedby": error ? errorId : undefined,
|
|
304
320
|
"aria-invalid": !!error || undefined,
|
|
321
|
+
"aria-required": required || undefined,
|
|
305
322
|
autoComplete: "tel",
|
|
306
323
|
"data-testid": "phonenumber-input",
|
|
324
|
+
id: inputId,
|
|
307
325
|
inputMode: "tel",
|
|
308
326
|
type: "tel",
|
|
309
327
|
value: formattedValue,
|
|
@@ -311,6 +329,7 @@ var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
311
329
|
}, inputProps))]
|
|
312
330
|
}), error && /*#__PURE__*/jsxRuntime.jsx("p", {
|
|
313
331
|
className: "text-destructive mt-1 text-sm",
|
|
332
|
+
id: errorId,
|
|
314
333
|
children: error
|
|
315
334
|
})]
|
|
316
335
|
});
|
|
@@ -324,4 +343,4 @@ exports.PhoneNumberInput = PhoneNumberInput;
|
|
|
324
343
|
exports.getPhoneData = getPhoneData;
|
|
325
344
|
exports.isPhoneNumberValid = isPhoneNumberValid;
|
|
326
345
|
exports.validation = validation;
|
|
327
|
-
//# sourceMappingURL=phone-number-
|
|
346
|
+
//# sourceMappingURL=phone-number-BydWe8Mf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-number-BydWe8Mf.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,121 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var i18next = require('i18next');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
8
|
+
var BILLING_URL = "/auth/admin_billing";
|
|
9
|
+
var DELETE_WORKSPACE_URL = "/auth/organization/delete";
|
|
10
|
+
var ENGAGE_WIDGET_TRIGGER_ID = "neetoengage-trigger";
|
|
11
|
+
var DEFAULT_MENU_LINK_PROPS = {
|
|
12
|
+
engageProps: {
|
|
13
|
+
id: ENGAGE_WIDGET_TRIGGER_ID,
|
|
14
|
+
label: i18next.t("neetoMolecules.sidebar.helpLinks.whatsNew"),
|
|
15
|
+
"data-testid": "help-link-engage-button"
|
|
16
|
+
},
|
|
17
|
+
keyboardShortcutProps: {
|
|
18
|
+
label: i18next.t("neetoMolecules.sidebar.helpLinks.keyboardShortcuts"),
|
|
19
|
+
"data-testid": "help-link-keyboard-shortcut-button"
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Theme switcher
|
|
24
|
+
var APP_THEME_LOCALSTORAGE_KEY = "appTheme";
|
|
25
|
+
var THEMES = {
|
|
26
|
+
LIGHT: "light",
|
|
27
|
+
DARK: "dark"
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Legacy neetoUI theme classes — kept until full migration is complete.
|
|
31
|
+
var LEGACY_THEMES = {
|
|
32
|
+
LIGHT: "neeto-ui-theme--light",
|
|
33
|
+
DARK: "neeto-ui-theme--dark"
|
|
34
|
+
};
|
|
35
|
+
var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
|
|
36
|
+
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]";
|
|
37
|
+
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";
|
|
38
|
+
var THEME_ICON_BASE = "transition-transform duration-300 ease-out";
|
|
39
|
+
var SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;
|
|
40
|
+
|
|
41
|
+
// Shared source of truth for the neetoEngage changelog unread count.
|
|
42
|
+
//
|
|
43
|
+
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
44
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
45
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
46
|
+
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
47
|
+
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
48
|
+
// out to every subscribed component. Installation happens on the first
|
|
49
|
+
// subscriber and is torn down only when the last one unsubscribes — so
|
|
50
|
+
// interleaved mount/unmount of the two surfaces can never leave a stale handler
|
|
51
|
+
// on the global object.
|
|
52
|
+
|
|
53
|
+
var currentCount = null;
|
|
54
|
+
var subscribers = new Set();
|
|
55
|
+
var isInstalled = false;
|
|
56
|
+
var previousOnReceiveData;
|
|
57
|
+
var notify = function notify() {
|
|
58
|
+
return subscribers.forEach(function (setCount) {
|
|
59
|
+
return setCount(currentCount);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
var install = function install() {
|
|
63
|
+
if (isInstalled) return;
|
|
64
|
+
isInstalled = true;
|
|
65
|
+
var existing = window.Nv || {};
|
|
66
|
+
previousOnReceiveData = existing.onReceiveData;
|
|
67
|
+
window.Nv = Object.assign(existing, {
|
|
68
|
+
onReceiveData: function onReceiveData(data) {
|
|
69
|
+
var _previousOnReceiveDat;
|
|
70
|
+
(_previousOnReceiveDat = previousOnReceiveData) === null || _previousOnReceiveDat === void 0 || _previousOnReceiveDat(data);
|
|
71
|
+
// Only react to a numeric unreadCount; `0` clears the badge (a non-zero
|
|
72
|
+
// count would otherwise stay stale until the pane is opened).
|
|
73
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.unreadCount) === "number") {
|
|
74
|
+
currentCount = data.unreadCount || null;
|
|
75
|
+
notify();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
var uninstall = function uninstall() {
|
|
81
|
+
if (!isInstalled) return;
|
|
82
|
+
isInstalled = false;
|
|
83
|
+
if (window.Nv) {
|
|
84
|
+
window.Nv.onReceiveData = previousOnReceiveData;
|
|
85
|
+
}
|
|
86
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
87
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
88
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
89
|
+
};
|
|
90
|
+
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
91
|
+
var _useState = React.useState(currentCount),
|
|
92
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
93
|
+
changesCount = _useState2[0],
|
|
94
|
+
setChangesCount = _useState2[1];
|
|
95
|
+
React.useEffect(function () {
|
|
96
|
+
install();
|
|
97
|
+
subscribers.add(setChangesCount);
|
|
98
|
+
setChangesCount(currentCount);
|
|
99
|
+
return function () {
|
|
100
|
+
subscribers["delete"](setChangesCount);
|
|
101
|
+
if (subscribers.size === 0) uninstall();
|
|
102
|
+
};
|
|
103
|
+
}, []);
|
|
104
|
+
return changesCount;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
exports.APP_THEME_LOCALSTORAGE_KEY = APP_THEME_LOCALSTORAGE_KEY;
|
|
108
|
+
exports.BILLING_URL = BILLING_URL;
|
|
109
|
+
exports.DEFAULT_MENU_LINK_PROPS = DEFAULT_MENU_LINK_PROPS;
|
|
110
|
+
exports.DELETE_WORKSPACE_URL = DELETE_WORKSPACE_URL;
|
|
111
|
+
exports.ENGAGE_WIDGET_TRIGGER_ID = ENGAGE_WIDGET_TRIGGER_ID;
|
|
112
|
+
exports.LEGACY_THEMES = LEGACY_THEMES;
|
|
113
|
+
exports.MENU_ITEM_CLASSES = MENU_ITEM_CLASSES;
|
|
114
|
+
exports.MY_ORGANIZATION_URL = MY_ORGANIZATION_URL;
|
|
115
|
+
exports.NEETO_AUTH_BILLING_INFO_URL = NEETO_AUTH_BILLING_INFO_URL;
|
|
116
|
+
exports.SLOWNESS_DESCRIPTION_MAX_LENGTH = SLOWNESS_DESCRIPTION_MAX_LENGTH;
|
|
117
|
+
exports.THEMES = THEMES;
|
|
118
|
+
exports.THEME_BUTTON_BASE = THEME_BUTTON_BASE;
|
|
119
|
+
exports.THEME_ICON_BASE = THEME_ICON_BASE;
|
|
120
|
+
exports.useWhatsNewChangesCount = useWhatsNewChangesCount;
|
|
121
|
+
//# sourceMappingURL=useWhatsNewChangesCount-BVkLLk7f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-BVkLLk7f.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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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var i18next = require('i18next');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
8
|
+
var DELETE_WORKSPACE_URL = "/auth/organization/delete";
|
|
9
|
+
var ENGAGE_WIDGET_TRIGGER_ID = "neetoengage-trigger";
|
|
10
|
+
var DEFAULT_MENU_LINK_PROPS = {
|
|
11
|
+
engageProps: {
|
|
12
|
+
id: ENGAGE_WIDGET_TRIGGER_ID,
|
|
13
|
+
label: i18next.t("neetoMolecules.sidebar.helpLinks.whatsNew"),
|
|
14
|
+
"data-testid": "help-link-engage-button"
|
|
15
|
+
},
|
|
16
|
+
keyboardShortcutProps: {
|
|
17
|
+
label: i18next.t("neetoMolecules.sidebar.helpLinks.keyboardShortcuts"),
|
|
18
|
+
"data-testid": "help-link-keyboard-shortcut-button"
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// Theme switcher
|
|
23
|
+
var APP_THEME_LOCALSTORAGE_KEY = "appTheme";
|
|
24
|
+
var THEMES = {
|
|
25
|
+
LIGHT: "neeto-ui-theme--light",
|
|
26
|
+
DARK: "neeto-ui-theme--dark"
|
|
27
|
+
};
|
|
28
|
+
var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
|
|
29
|
+
var SLOWNESS_DESCRIPTION_MAX_LENGTH = 2000;
|
|
30
|
+
|
|
31
|
+
// Shared source of truth for the neetoEngage changelog unread count.
|
|
32
|
+
//
|
|
33
|
+
// The widget reports the count by calling `window.Nv.onReceiveData({ unreadCount })`
|
|
34
|
+
// whenever it changes (on load and each time entries are marked read). Opening
|
|
35
|
+
// the widget doesn't clear it: the count only drops as entries are read. Both the FloatingActionMenu and the
|
|
36
|
+
// Sidebar surface this count, so this module installs a SINGLE set of
|
|
37
|
+
// `window.Nv` handlers (chaining onto any pre-existing ones) and fans the value
|
|
38
|
+
// out to every subscribed component. Installation happens on the first
|
|
39
|
+
// subscriber and is torn down only when the last one unsubscribes — so
|
|
40
|
+
// interleaved mount/unmount of the two surfaces can never leave a stale handler
|
|
41
|
+
// on the global object.
|
|
42
|
+
|
|
43
|
+
var currentCount = null;
|
|
44
|
+
var subscribers = new Set();
|
|
45
|
+
var isInstalled = false;
|
|
46
|
+
var previousOnReceiveData;
|
|
47
|
+
var notify = function notify() {
|
|
48
|
+
return subscribers.forEach(function (setCount) {
|
|
49
|
+
return setCount(currentCount);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
var install = function install() {
|
|
53
|
+
if (isInstalled) return;
|
|
54
|
+
isInstalled = true;
|
|
55
|
+
var existing = window.Nv || {};
|
|
56
|
+
previousOnReceiveData = existing.onReceiveData;
|
|
57
|
+
window.Nv = Object.assign(existing, {
|
|
58
|
+
onReceiveData: function onReceiveData(data) {
|
|
59
|
+
var _previousOnReceiveDat;
|
|
60
|
+
(_previousOnReceiveDat = previousOnReceiveData) === null || _previousOnReceiveDat === void 0 || _previousOnReceiveDat(data);
|
|
61
|
+
// Only react to a numeric unreadCount; `0` clears the badge (a non-zero
|
|
62
|
+
// count would otherwise stay stale until the pane is opened).
|
|
63
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.unreadCount) === "number") {
|
|
64
|
+
currentCount = data.unreadCount || null;
|
|
65
|
+
notify();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
var uninstall = function uninstall() {
|
|
71
|
+
if (!isInstalled) return;
|
|
72
|
+
isInstalled = false;
|
|
73
|
+
if (window.Nv) {
|
|
74
|
+
window.Nv.onReceiveData = previousOnReceiveData;
|
|
75
|
+
}
|
|
76
|
+
// currentCount is kept: the widget only reports it on page load and after a
|
|
77
|
+
// "Mark as read", so a surface that remounts (e.g. after navigating to a page
|
|
78
|
+
// without a sidebar and back) would otherwise lose it until a full reload.
|
|
79
|
+
};
|
|
80
|
+
var useWhatsNewChangesCount = function useWhatsNewChangesCount() {
|
|
81
|
+
var _useState = React.useState(currentCount),
|
|
82
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
83
|
+
changesCount = _useState2[0],
|
|
84
|
+
setChangesCount = _useState2[1];
|
|
85
|
+
React.useEffect(function () {
|
|
86
|
+
install();
|
|
87
|
+
subscribers.add(setChangesCount);
|
|
88
|
+
setChangesCount(currentCount);
|
|
89
|
+
return function () {
|
|
90
|
+
subscribers["delete"](setChangesCount);
|
|
91
|
+
if (subscribers.size === 0) uninstall();
|
|
92
|
+
};
|
|
93
|
+
}, []);
|
|
94
|
+
return changesCount;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
exports.APP_THEME_LOCALSTORAGE_KEY = APP_THEME_LOCALSTORAGE_KEY;
|
|
98
|
+
exports.DEFAULT_MENU_LINK_PROPS = DEFAULT_MENU_LINK_PROPS;
|
|
99
|
+
exports.DELETE_WORKSPACE_URL = DELETE_WORKSPACE_URL;
|
|
100
|
+
exports.ENGAGE_WIDGET_TRIGGER_ID = ENGAGE_WIDGET_TRIGGER_ID;
|
|
101
|
+
exports.MY_ORGANIZATION_URL = MY_ORGANIZATION_URL;
|
|
102
|
+
exports.NEETO_AUTH_BILLING_INFO_URL = NEETO_AUTH_BILLING_INFO_URL;
|
|
103
|
+
exports.SLOWNESS_DESCRIPTION_MAX_LENGTH = SLOWNESS_DESCRIPTION_MAX_LENGTH;
|
|
104
|
+
exports.THEMES = THEMES;
|
|
105
|
+
exports.useWhatsNewChangesCount = useWhatsNewChangesCount;
|
|
106
|
+
//# sourceMappingURL=useWhatsNewChangesCount-CyOUS5U3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNewChangesCount-CyOUS5U3.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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"}
|