@bigbinary/neeto-molecules 4.3.3 → 4.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/PhoneNumber.js +3 -2
  2. package/dist/PhoneNumber.js.map +1 -1
  3. package/dist/SessionEnvironment.js +2 -1
  4. package/dist/SessionEnvironment.js.map +1 -1
  5. package/dist/cjs/PhoneNumber.js +2 -1
  6. package/dist/cjs/PhoneNumber.js.map +1 -1
  7. package/dist/cjs/SessionEnvironment.js +2 -1
  8. package/dist/cjs/SessionEnvironment.js.map +1 -1
  9. package/dist/cjs/{phone-number-ycxkC0mm.js → index.es5.min-CUvhPmKJ.js} +2 -324
  10. package/dist/cjs/index.es5.min-CUvhPmKJ.js.map +1 -0
  11. package/dist/cjs/phone-number-DIIlhFGA.js +328 -0
  12. package/dist/cjs/phone-number-DIIlhFGA.js.map +1 -0
  13. package/dist/cjs/v2/DynamicVariables.js +134 -0
  14. package/dist/cjs/v2/DynamicVariables.js.map +1 -0
  15. package/dist/cjs/v2/PhoneNumber.js +414 -0
  16. package/dist/cjs/v2/PhoneNumber.js.map +1 -0
  17. package/dist/{phone-number--BBsxLSh.js → index.es5.min-B2AiaKmd.js} +2 -301
  18. package/dist/index.es5.min-B2AiaKmd.js.map +1 -0
  19. package/dist/phone-number-B3OcwVZM.js +303 -0
  20. package/dist/phone-number-B3OcwVZM.js.map +1 -0
  21. package/dist/v2/DynamicVariables.js +132 -0
  22. package/dist/v2/DynamicVariables.js.map +1 -0
  23. package/dist/v2/PhoneNumber.js +389 -0
  24. package/dist/v2/PhoneNumber.js.map +1 -0
  25. package/package.json +1 -1
  26. package/src/translations/ar.json +3 -1
  27. package/src/translations/bg.json +3 -1
  28. package/src/translations/ca.json +3 -1
  29. package/src/translations/cs.json +3 -1
  30. package/src/translations/da.json +3 -1
  31. package/src/translations/de.json +3 -1
  32. package/src/translations/en.json +2 -0
  33. package/src/translations/es-MX.json +3 -1
  34. package/src/translations/es.json +3 -1
  35. package/src/translations/et.json +3 -1
  36. package/src/translations/fi.json +3 -1
  37. package/src/translations/fil.json +3 -1
  38. package/src/translations/fr.json +3 -1
  39. package/src/translations/he.json +3 -1
  40. package/src/translations/hi.json +3 -1
  41. package/src/translations/hr.json +3 -1
  42. package/src/translations/hu.json +3 -1
  43. package/src/translations/id.json +3 -1
  44. package/src/translations/it.json +3 -1
  45. package/src/translations/ja.json +3 -1
  46. package/src/translations/ko.json +3 -1
  47. package/src/translations/nl.json +3 -1
  48. package/src/translations/pl.json +3 -1
  49. package/src/translations/pt-BR.json +3 -1
  50. package/src/translations/pt.json +3 -1
  51. package/src/translations/ro.json +3 -1
  52. package/src/translations/ru.json +3 -1
  53. package/src/translations/sk.json +3 -1
  54. package/src/translations/sl.json +3 -1
  55. package/src/translations/sv.json +3 -1
  56. package/src/translations/th.json +3 -1
  57. package/src/translations/tr.json +3 -1
  58. package/src/translations/uk.json +3 -1
  59. package/src/translations/vi.json +3 -1
  60. package/src/translations/zh-CN.json +3 -1
  61. package/src/translations/zh-TW.json +3 -1
  62. package/dist/cjs/phone-number-ycxkC0mm.js.map +0 -1
  63. package/dist/phone-number--BBsxLSh.js.map +0 -1
@@ -0,0 +1,328 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var React = require('react');
7
+ var reactQuery = require('@tanstack/react-query');
8
+ var min = require('libphonenumber-js/min');
9
+ var neetoCist = require('@bigbinary/neeto-cist');
10
+ var Input = require('@bigbinary/neetoui/Input');
11
+ var classnames = require('classnames');
12
+ var Select = require('@bigbinary/neetoui/Select');
13
+ var reactI18next = require('react-i18next');
14
+ var index_es5_min = require('./index.es5.min-CUvhPmKJ.js');
15
+ var ramda = require('ramda');
16
+ var Tooltip = require('@bigbinary/neetoui/Tooltip');
17
+ var Typography = require('@bigbinary/neetoui/Typography');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
20
+ var i18next = require('i18next');
21
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
22
+ var yup = require('yup');
23
+ var axios = require('axios');
24
+ var injectCss = require('./inject-css-B6qYtOJe.js');
25
+
26
+ function _interopNamespaceDefault(e) {
27
+ var n = Object.create(null);
28
+ if (e) {
29
+ Object.keys(e).forEach(function (k) {
30
+ if (k !== 'default') {
31
+ var d = Object.getOwnPropertyDescriptor(e, k);
32
+ Object.defineProperty(n, k, d.get ? d : {
33
+ enumerable: true,
34
+ get: function () { return e[k]; }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ n.default = e;
40
+ return Object.freeze(n);
41
+ }
42
+
43
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
44
+
45
+ var IP_LOOKUP_ACCESS_TOKEN = "083c694c79f119c7f227e737de9a5c8c";
46
+ var IP_LOOKUP_STORAGE_KEY = "IP_LOOKUP_DETAILS_STORAGE";
47
+ var MAX_CACHE_AGE = 60 * 60 * 1000;
48
+
49
+ var COUNTRY_PICKER_OPTIONS = min.getCountries().filter(function (code) {
50
+ return index_es5_min.index_es5_minExports.countries[code];
51
+ }).map(function (code) {
52
+ return {
53
+ label: index_es5_min.index_es5_minExports.countries[code].name,
54
+ value: code
55
+ };
56
+ }).sort(function (a, b) {
57
+ return a.label.localeCompare(b.label);
58
+ });
59
+ var COUNTRY_PICKER_STYLES = {
60
+ menuPortal: ramda.mergeLeft({
61
+ width: 196,
62
+ zIndex: 99999
63
+ }),
64
+ control: ramda.mergeLeft({
65
+ border: "none !important",
66
+ cursor: "pointer",
67
+ gap: 4
68
+ }),
69
+ input: ramda.assoc("position", "absolute !important"),
70
+ valueContainer: ramda.assoc("padding", "0 !important"),
71
+ indicatorsContainer: ramda.assoc("paddingRight", "0 !important")
72
+ };
73
+
74
+ var _excluded$2 = ["countryCode", "showEmoji"];
75
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
76
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
77
+ var SingleValue$1 = function SingleValue(_ref) {
78
+ var countryCode = _ref.countryCode,
79
+ _ref$showEmoji = _ref.showEmoji,
80
+ showEmoji = _ref$showEmoji === void 0 ? false : _ref$showEmoji,
81
+ otherProps = _objectWithoutProperties(_ref, _excluded$2);
82
+ if (!showEmoji) return null;
83
+ var countryData = index_es5_min.index_es5_minExports.countries[countryCode];
84
+ return /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
85
+ content: countryData === null || countryData === void 0 ? void 0 : countryData.name,
86
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, _objectSpread$2(_objectSpread$2({
87
+ className: "neeto-molecules-phone-number-input__flag cursor-pointer text-center text-xl",
88
+ style: "body2"
89
+ }, otherProps), {}, {
90
+ children: countryData === null || countryData === void 0 ? void 0 : countryData.emoji
91
+ }))
92
+ });
93
+ };
94
+ var SingleValue = /*#__PURE__*/React.memo(SingleValue$1);
95
+
96
+ var _excluded$1 = ["countryCode", "onChange"];
97
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
98
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
99
+ var CountryPicker$1 = function CountryPicker(_ref) {
100
+ var countryCode = _ref.countryCode,
101
+ _onChange = _ref.onChange,
102
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
103
+ var _useState = React.useState(""),
104
+ _useState2 = _slicedToArray(_useState, 2),
105
+ searchTerm = _useState2[0],
106
+ setSearchTerm = _useState2[1];
107
+ var _useTranslation = reactI18next.useTranslation(),
108
+ t = _useTranslation.t;
109
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
110
+ className: classnames("flex-shrink-0", {
111
+ "w-10": !searchTerm,
112
+ "w-24": searchTerm
113
+ }),
114
+ children: /*#__PURE__*/jsxRuntime.jsx(Select, _objectSpread$1({
115
+ isSearchable: true,
116
+ "aria-label": t("neetoMolecules.phoneNumberInput.countryCodeAriaLabel"),
117
+ "data-testid": "phonenumber-country-picker",
118
+ options: COUNTRY_PICKER_OPTIONS,
119
+ strategy: "fixed",
120
+ styles: COUNTRY_PICKER_STYLES,
121
+ value: {
122
+ value: countryCode
123
+ },
124
+ components: {
125
+ SingleValue: function SingleValue$1() {
126
+ return /*#__PURE__*/jsxRuntime.jsx(SingleValue, {
127
+ countryCode: countryCode,
128
+ showEmoji: true
129
+ });
130
+ }
131
+ },
132
+ isOptionSelected: function isOptionSelected(_ref2, _ref3) {
133
+ var value = _ref2.value;
134
+ var _ref4 = _slicedToArray(_ref3, 1),
135
+ selectedOption = _ref4[0];
136
+ return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.name) === value;
137
+ },
138
+ onChange: function onChange(option) {
139
+ return _onChange(option.value);
140
+ },
141
+ onInputChange: setSearchTerm
142
+ }, otherProps))
143
+ });
144
+ };
145
+ var CountryPicker = /*#__PURE__*/React.memo(CountryPicker$1);
146
+
147
+ var fetchLocationDetails$1 = function fetchLocationDetails() {
148
+ return axios.get("https://neeto-ip-lookup-web-production.neetodeployapp.com/location", {
149
+ headers: {
150
+ "X-ACCESS-TOKEN": IP_LOOKUP_ACCESS_TOKEN
151
+ }
152
+ });
153
+ };
154
+ var neetoIpLookupApi = {
155
+ fetchLocationDetails: fetchLocationDetails$1
156
+ };
157
+
158
+ 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 }; })(); }
159
+ 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); }
160
+ var isPhoneNumberValid = function isPhoneNumberValid() {
161
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
162
+ for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
163
+ rest[_key - 1] = arguments[_key];
164
+ }
165
+ return min.isValidPhoneNumber.apply(void 0, [value].concat(rest));
166
+ };
167
+ var validation = function validation() {
168
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : i18next.t("neetoMolecules.phoneNumberInput.validations.invalid");
169
+ return yup__namespace.string().test("phoneNumber", message, function (phoneNumber) {
170
+ return phoneNumber ? min.isValidPhoneNumber(phoneNumber) : true;
171
+ });
172
+ };
173
+ var getPhoneData = function getPhoneData(value, defaultCountryCode) {
174
+ try {
175
+ var parsedValue = min.parsePhoneNumber(value, defaultCountryCode);
176
+ return {
177
+ phoneNumber: parsedValue.number,
178
+ international: parsedValue.formatInternational(),
179
+ countryCode: parsedValue.country || defaultCountryCode
180
+ };
181
+ } catch (_unused) {
182
+ return {
183
+ phoneNumber: value,
184
+ international: min.formatIncompletePhoneNumber(value, defaultCountryCode),
185
+ countryCode: defaultCountryCode
186
+ };
187
+ }
188
+ };
189
+ var fetchLocationDetails = /*#__PURE__*/function () {
190
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
191
+ var stored, _ref2, data, timestamp, isCacheValid, details, _timestamp;
192
+ return _regenerator().w(function (_context) {
193
+ while (1) switch (_context.p = _context.n) {
194
+ case 0:
195
+ stored = utils.getFromLocalStorage(IP_LOOKUP_STORAGE_KEY);
196
+ _ref2 = stored || {}, data = _ref2.data, timestamp = _ref2.timestamp;
197
+ isCacheValid = timestamp && Date.now() - timestamp < MAX_CACHE_AGE;
198
+ if (!isCacheValid) {
199
+ _context.n = 1;
200
+ break;
201
+ }
202
+ return _context.a(2, data);
203
+ case 1:
204
+ _context.p = 1;
205
+ _context.n = 2;
206
+ return neetoIpLookupApi.fetchLocationDetails();
207
+ case 2:
208
+ details = _context.v;
209
+ _timestamp = Date.now();
210
+ utils.setToLocalStorage(IP_LOOKUP_STORAGE_KEY, {
211
+ data: details,
212
+ timestamp: _timestamp
213
+ });
214
+ return _context.a(2, details);
215
+ case 3:
216
+ _context.p = 3;
217
+ _context.v;
218
+ return _context.a(2, data || null);
219
+ }
220
+ }, _callee, null, [[1, 3]]);
221
+ }));
222
+ return function fetchLocationDetails() {
223
+ return _ref.apply(this, arguments);
224
+ };
225
+ }();
226
+ var isNumeric = function isNumeric(_char) {
227
+ return _char >= "0" && _char <= "9";
228
+ };
229
+ var preserveCursor = function preserveCursor(callback) {
230
+ return function (event) {
231
+ var start = event.target.selectionStart;
232
+ var end = event.target.selectionEnd;
233
+ var len = event.target.value.length;
234
+ var result = callback(event);
235
+ var delta = event.target.value.length - len;
236
+ event.target.setSelectionRange(start + delta, end + delta);
237
+ return result;
238
+ };
239
+ };
240
+
241
+ var _excluded = ["value", "onChange", "className", "error", "selectProps", "initialCountryCode"];
242
+ 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; }
243
+ 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; }
244
+ var PhoneNumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
245
+ var _ref$value = _ref.value,
246
+ value = _ref$value === void 0 ? "" : _ref$value,
247
+ _ref$onChange = _ref.onChange,
248
+ onChange = _ref$onChange === void 0 ? neetoCist.noop : _ref$onChange,
249
+ className = _ref.className,
250
+ error = _ref.error,
251
+ selectProps = _ref.selectProps,
252
+ initialCountryCode = _ref.initialCountryCode,
253
+ inputProps = _objectWithoutProperties(_ref, _excluded);
254
+ var _useState = React.useState(function () {
255
+ return getPhoneData(value).countryCode || initialCountryCode;
256
+ }),
257
+ _useState2 = _slicedToArray(_useState, 2),
258
+ countryCode = _useState2[0],
259
+ setCountryCode = _useState2[1];
260
+ var _useQuery = reactQuery.useQuery({
261
+ queryKey: [IP_LOOKUP_STORAGE_KEY],
262
+ queryFn: fetchLocationDetails,
263
+ enabled: !countryCode,
264
+ staleTime: Infinity,
265
+ gcTime: Infinity,
266
+ select: function select(data) {
267
+ return neetoCist.findBy({
268
+ value: data.countryCode
269
+ }, COUNTRY_PICKER_OPTIONS);
270
+ }
271
+ }),
272
+ ipCountry = _useQuery.data;
273
+ var finalCountryCode = countryCode || (ipCountry === null || ipCountry === void 0 ? void 0 : ipCountry.value) || "US";
274
+ var formattedValue = min.formatIncompletePhoneNumber(value, finalCountryCode);
275
+ var onKeyDown = preserveCursor(function (event) {
276
+ // Handles special characters in the phone number formatting like brackets and spaces.
277
+ if (event.key !== "Backspace") return;
278
+ var left = event.target.value.substring(0, event.target.selectionStart);
279
+ var right = event.target.value.substring(event.target.selectionEnd);
280
+ var index = left.length - 1;
281
+ while (index > 0 && !isNumeric(left[index])) index--;
282
+ var newValue = left.substring(0, index + 1) + right;
283
+ if (newValue) event.target.value = newValue;
284
+ });
285
+ var onInputChange = preserveCursor(function (event) {
286
+ var phoneData = getPhoneData(event.target.value, finalCountryCode);
287
+ event.target.value = min.formatIncompletePhoneNumber(event.target.value);
288
+ setCountryCode(phoneData.countryCode);
289
+ onChange(phoneData.phoneNumber);
290
+ });
291
+ var onChangeCountry = function onChangeCountry(countryCode) {
292
+ var phoneData = getPhoneData(value, finalCountryCode);
293
+ var prevPrefix = "+".concat(min.getCountryCallingCode(phoneData.countryCode));
294
+ var nextPrefix = "+".concat(min.getCountryCallingCode(countryCode));
295
+ setCountryCode(countryCode);
296
+ onChange(nextPrefix + value.replace(prevPrefix, ""));
297
+ };
298
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
299
+ className: className,
300
+ children: /*#__PURE__*/jsxRuntime.jsx(Input, _objectSpread({
301
+ error: error,
302
+ onKeyDown: onKeyDown,
303
+ ref: ref,
304
+ autoComplete: "tel",
305
+ className: "neeto-molecules-phone-number-input__input",
306
+ "data-testid": "phonenumber-input",
307
+ inputMode: "tel",
308
+ type: "tel",
309
+ value: formattedValue,
310
+ prefix: /*#__PURE__*/jsxRuntime.jsx(CountryPicker, _objectSpread({
311
+ countryCode: finalCountryCode,
312
+ onChange: onChangeCountry
313
+ }, selectProps)),
314
+ onChange: onInputChange
315
+ }, inputProps))
316
+ });
317
+ });
318
+ PhoneNumberInput.displayName = "PhoneNumberInput";
319
+
320
+ var css = "@import url(\"https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&display=swap\");.neeto-molecules-phone-number-input__flag{font-family:-apple-system,Noto Color Emoji,BlinkMacSystemFont,Inter,Arial,Segoe UI,Roboto,Oxygen,Ubuntu,Fira Sans,Droid Sans,Helvetica Neue,sans-serif!important;font-style:normal;font-weight:400}.neeto-molecules-phone-number{display:block!important}.neeto-molecules-phone-number-input__input .neeto-ui-react-select__indicators{padding-inline:0!important}.neeto-molecules-phone-number-input__input .neeto-ui-input input{direction:inherit}";
321
+ injectCss.n(css,{});
322
+
323
+ exports.PhoneNumberInput = PhoneNumberInput;
324
+ exports.SingleValue = SingleValue;
325
+ exports.getPhoneData = getPhoneData;
326
+ exports.isPhoneNumberValid = isPhoneNumberValid;
327
+ exports.validation = validation;
328
+ //# sourceMappingURL=phone-number-DIIlhFGA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-number-DIIlhFGA.js","sources":["../../src/components/PhoneNumber/constants.js","../../src/components/PhoneNumber/CountryPicker/constants.js","../../src/components/PhoneNumber/CountryPicker/SingleValue.jsx","../../src/components/PhoneNumber/CountryPicker/index.jsx","../../src/components/PhoneNumber/apis/neeto_ip_lookup.js","../../src/components/PhoneNumber/utils.js","../../src/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\";\nimport { mergeLeft, assoc } from \"ramda\";\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\nexport const COUNTRY_PICKER_STYLES = {\n menuPortal: mergeLeft({ width: 196, zIndex: 99999 }),\n control: mergeLeft({\n border: \"none !important\",\n cursor: \"pointer\",\n gap: 4,\n }),\n input: assoc(\"position\", \"absolute !important\"),\n valueContainer: assoc(\"padding\", \"0 !important\"),\n indicatorsContainer: assoc(\"paddingRight\", \"0 !important\"),\n};\n","import { memo } from \"react\";\n\nimport { countries } from \"countries-list\";\nimport { Tooltip, Typography } from \"neetoui\";\n\nconst SingleValue = ({ countryCode, showEmoji = false, ...otherProps }) => {\n if (!showEmoji) return null;\n\n const countryData = countries[countryCode];\n\n return (\n <Tooltip content={countryData?.name}>\n <Typography\n className=\"neeto-molecules-phone-number-input__flag cursor-pointer text-center text-xl\"\n style=\"body2\"\n {...otherProps}\n >\n {countryData?.emoji}\n </Typography>\n </Tooltip>\n );\n};\n\nexport default memo(SingleValue);\n","import { memo, useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Select } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { COUNTRY_PICKER_OPTIONS, COUNTRY_PICKER_STYLES } from \"./constants\";\nimport SingleValue from \"./SingleValue\";\n\nconst CountryPicker = ({ countryCode, onChange, ...otherProps }) => {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const { t } = useTranslation();\n\n return (\n <div\n className={classnames(\"flex-shrink-0\", {\n \"w-10\": !searchTerm,\n \"w-24\": searchTerm,\n })}\n >\n <Select\n isSearchable\n aria-label={t(\"neetoMolecules.phoneNumberInput.countryCodeAriaLabel\")}\n data-testid=\"phonenumber-country-picker\"\n options={COUNTRY_PICKER_OPTIONS}\n strategy=\"fixed\"\n styles={COUNTRY_PICKER_STYLES}\n value={{ value: countryCode }}\n components={{\n SingleValue: () => <SingleValue {...{ countryCode }} showEmoji />,\n }}\n isOptionSelected={({ value }, [selectedOption]) =>\n selectedOption?.name === value\n }\n onChange={option => onChange(option.value)}\n onInputChange={setSearchTerm}\n {...otherProps}\n />\n </div>\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/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, useState } from \"react\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n formatIncompletePhoneNumber,\n getCountryCallingCode,\n} from \"libphonenumber-js/min\";\nimport { noop, findBy } from \"neetocist\";\nimport { Input } from \"neetoui\";\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 selectProps,\n initialCountryCode,\n ...inputProps\n },\n ref\n ) => {\n const [countryCode, setCountryCode] = useState(\n () => getPhoneData(value).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(value, finalCountryCode);\n\n const onKeyDown = preserveCursor(event => {\n // Handles special characters in the phone number formatting like brackets and spaces.\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 = countryCode => {\n const phoneData = getPhoneData(value, finalCountryCode);\n const prevPrefix = `+${getCountryCallingCode(phoneData.countryCode)}`;\n const nextPrefix = `+${getCountryCallingCode(countryCode)}`;\n setCountryCode(countryCode);\n onChange(nextPrefix + value.replace(prevPrefix, \"\"));\n };\n\n return (\n <div {...{ className }}>\n <Input\n {...{ error, onKeyDown, ref }}\n autoComplete=\"tel\"\n className=\"neeto-molecules-phone-number-input__input\"\n data-testid=\"phonenumber-input\"\n inputMode=\"tel\"\n type=\"tel\"\n value={formattedValue}\n prefix={\n <CountryPicker\n countryCode={finalCountryCode}\n onChange={onChangeCountry}\n {...selectProps}\n />\n }\n onChange={onInputChange}\n {...inputProps}\n />\n </div>\n );\n }\n);\n\nPhoneNumberInput.displayName = \"PhoneNumberInput\";\n\nPhoneNumberInput.propTypes = {\n /**\n * To specify the text to be displayed in the component.\n */\n value: PropTypes.string,\n /**\n * To specify the function to be triggered when the `value` is updated.\n */\n onChange: PropTypes.func,\n /**\n * To specify external classNames that can be provided as overrides to the main wrapper.\n */\n className: PropTypes.string,\n /**\n * To specify the error message to be displayed below the input field.\n */\n error: PropTypes.string,\n /**\n * To specify the additional props to be provided to the country picker `Select` component.\n */\n selectProps: PropTypes.object,\n /**\n * To specify the initial country to be set when component is mounted. Setting this\n * disables the feature of setting the initial country based on user's IP address.\n */\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","COUNTRY_PICKER_STYLES","menuPortal","mergeLeft","width","zIndex","control","border","cursor","gap","input","assoc","valueContainer","indicatorsContainer","SingleValue","_ref","countryCode","_ref$showEmoji","showEmoji","otherProps","_objectWithoutProperties","_excluded","countryData","_jsx","Tooltip","content","children","Typography","_objectSpread","className","style","emoji","memo","CountryPicker","onChange","_useState","useState","_useState2","_slicedToArray","searchTerm","setSearchTerm","_useTranslation","useTranslation","t","classnames","Select","isSearchable","options","strategy","styles","components","_SingleValue","isOptionSelected","_ref2","_ref3","_ref4","selectedOption","option","onInputChange","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","concat","validation","message","i18next","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","event","start","target","selectionStart","end","selectionEnd","len","result","delta","setSelectionRange","PhoneNumberInput","forwardRef","ref","_ref$value","_ref$onChange","noop","error","selectProps","initialCountryCode","inputProps","setCountryCode","_useQuery","useQuery","queryKey","queryFn","enabled","staleTime","Infinity","gcTime","select","findBy","ipCountry","finalCountryCode","formattedValue","onKeyDown","key","left","substring","right","index","newValue","phoneData","onChangeCountry","prevPrefix","getCountryCallingCode","nextPrefix","replace","Input","autoComplete","inputMode","type","prefix"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var React = require('react');
6
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
7
+ var neetoCist = require('@bigbinary/neeto-cist');
8
+ var general = require('@bigbinary/neeto-commons-frontend/v2/utils/general');
9
+ var ramda = require('ramda');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var createLucideIcon = require('../createLucideIcon-DBDhE7kE.js');
12
+
13
+ /**
14
+ * @license lucide-react v1.7.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ */
19
+
20
+
21
+ const __iconNode = [
22
+ [
23
+ "path",
24
+ { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" }
25
+ ],
26
+ [
27
+ "path",
28
+ {
29
+ d: "M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",
30
+ key: "e1hn23"
31
+ }
32
+ ]
33
+ ];
34
+ const Braces = createLucideIcon.createLucideIcon("braces", __iconNode);
35
+
36
+ var parseVariables = function parseVariables() {
37
+ var variableArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
38
+ var uncategorized = [];
39
+ var groupedVariables = [];
40
+ var categorySet = new Set();
41
+ variableArr.forEach(function (variable) {
42
+ var category = variable.category,
43
+ label = variable.label,
44
+ variables = variable.variables;
45
+ if (category && variables) {
46
+ var parsedVariables = variables.map(ramda.mergeLeft({
47
+ category: category,
48
+ categoryLabel: label
49
+ }));
50
+ if (!categorySet.has(category)) {
51
+ categorySet.add(category);
52
+ groupedVariables.push({
53
+ label: label,
54
+ variables: parsedVariables
55
+ });
56
+ } else {
57
+ var existingGroup = neetoCist.findBy({
58
+ label: label
59
+ }, groupedVariables);
60
+ existingGroup.variables = ramda.uniqBy(ramda.prop("key"), existingGroup.variables.concat(parsedVariables));
61
+ }
62
+ } else {
63
+ uncategorized.push(variable);
64
+ }
65
+ });
66
+ if (!ramda.isEmpty(uncategorized)) {
67
+ groupedVariables.push({
68
+ label: !ramda.isEmpty(groupedVariables) ? "Others" : null,
69
+ variables: uncategorized
70
+ });
71
+ }
72
+ return groupedVariables;
73
+ };
74
+
75
+ var _excluded = ["onVariableClick", "variables", "buttonProps"];
76
+ 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; }
77
+ 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; }
78
+ var DynamicVariables = function DynamicVariables(_ref) {
79
+ var _ref$onVariableClick = _ref.onVariableClick,
80
+ onVariableClick = _ref$onVariableClick === void 0 ? neetoCist.noop : _ref$onVariableClick,
81
+ _ref$variables = _ref.variables,
82
+ variables = _ref$variables === void 0 ? [] : _ref$variables,
83
+ buttonProps = _ref.buttonProps,
84
+ dropdownProps = _objectWithoutProperties(_ref, _excluded);
85
+ if (ramda.isEmpty(variables)) return null;
86
+ var parsedVariables = parseVariables(variables);
87
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu, _objectSpread(_objectSpread({
88
+ customTarget: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread({
89
+ "data-testid": "dynamic-variables-button",
90
+ icon: Braces,
91
+ size: "icon",
92
+ variant: "outline"
93
+ }, buttonProps))
94
+ }, dropdownProps), {}, {
95
+ dropdownProps: _objectSpread({
96
+ className: "min-w-56"
97
+ }, dropdownProps === null || dropdownProps === void 0 ? void 0 : dropdownProps.dropdownProps),
98
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
99
+ className: "flex max-w-[22.5rem] min-w-[11.5rem] flex-col gap-1.5 p-2",
100
+ "data-testid": "dynamic-variables-list",
101
+ children: parsedVariables.map(function (_ref2) {
102
+ var label = _ref2.label,
103
+ variables = _ref2.variables;
104
+ return /*#__PURE__*/jsxRuntime.jsxs(React.Fragment, {
105
+ children: [label && /*#__PURE__*/jsxRuntime.jsxs("div", {
106
+ className: "flex flex-row items-center gap-x-2",
107
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
108
+ variant: "h6",
109
+ children: label
110
+ }), /*#__PURE__*/jsxRuntime.jsx("hr", {
111
+ className: "border-border flex flex-grow"
112
+ })]
113
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
114
+ className: "flex flex-wrap items-center gap-2",
115
+ "data-testid": general.joinHyphenCase("dynamic-variables-list", label),
116
+ children: variables.map(function (item) {
117
+ return /*#__PURE__*/jsxRuntime.jsx("button", {
118
+ className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary rounded-md border p-1.5 text-start transition-colors select-none focus:outline-none",
119
+ "data-testid": general.joinHyphenCase("dynamic-variables-list-item", item.label),
120
+ onClick: function onClick() {
121
+ return onVariableClick(item);
122
+ },
123
+ children: item.label
124
+ }, item.label);
125
+ })
126
+ })]
127
+ }, label);
128
+ })
129
+ })
130
+ }));
131
+ };
132
+
133
+ module.exports = DynamicVariables;
134
+ //# sourceMappingURL=DynamicVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicVariables.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/braces.js","../../../src/v2/components/DynamicVariables/utils.js","../../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.js.map\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Fragment } from \"react\";\n\nimport { Button, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n <DropdownMenu\n customTarget={\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n }\n {...dropdownProps}\n dropdownProps={{\n className: \"min-w-56\",\n ...dropdownProps?.dropdownProps,\n }}\n >\n <div\n className=\"flex max-w-[22.5rem] min-w-[11.5rem] flex-col gap-1.5 p-2\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <Fragment key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n <Typography variant=\"h6\">{label}</Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <button\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary rounded-md border p-1.5 text-start transition-colors select-none focus:outline-none\"\n key={item.label}\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n </Fragment>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["createLucideIcon","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","customTarget","Button","icon","Braces","size","variant","className","children","_ref2","_jsxs","Fragment","Typography","joinHyphenCase","item","onClick"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI,EAAE,CAAC,EAAE,sEAAsE,EAAE,GAAG,EAAE,QAAQ;AAC9F,GAAG;AACH,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,0EAA0E;AACnF,MAAM,GAAG,EAAE;AACX;AACA;AACA,CAAC;AACD,MAAM,MAAM,GAAGA,iCAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC;;ACnB9C,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,GAAyB;AAAA,EAAA,IAArBC,WAAW,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;EAC7C,IAAMG,aAAa,GAAG,EAAE;EACxB,IAAMC,gBAAgB,GAAG,EAAE;AAC3B,EAAA,IAAMC,WAAW,GAAG,IAAIC,GAAG,EAAE;AAE7BP,EAAAA,WAAW,CAACQ,OAAO,CAAC,UAAAC,QAAQ,EAAI;AAC9B,IAAA,IAAQC,QAAQ,GAAuBD,QAAQ,CAAvCC,QAAQ;MAAEC,KAAK,GAAgBF,QAAQ,CAA7BE,KAAK;MAAEC,SAAS,GAAKH,QAAQ,CAAtBG,SAAS;IAClC,IAAIF,QAAQ,IAAIE,SAAS,EAAE;AACzB,MAAA,IAAMC,eAAe,GAAGD,SAAS,CAACE,GAAG,CACnCC,eAAS,CAAC;AAAEL,QAAAA,QAAQ,EAARA,QAAQ;AAAEM,QAAAA,aAAa,EAAEL;AAAM,OAAC,CAC9C,CAAC;AAED,MAAA,IAAI,CAACL,WAAW,CAACW,GAAG,CAACP,QAAQ,CAAC,EAAE;AAC9BJ,QAAAA,WAAW,CAACY,GAAG,CAACR,QAAQ,CAAC;QACzBL,gBAAgB,CAACc,IAAI,CAAC;AAAER,UAAAA,KAAK,EAALA,KAAK;AAAEC,UAAAA,SAAS,EAAEC;AAAgB,SAAC,CAAC;AAC9D,MAAA,CAAC,MAAM;QACL,IAAMO,aAAa,GAAGC,gBAAM,CAAC;AAAEV,UAAAA,KAAK,EAALA;SAAO,EAAEN,gBAAgB,CAAC;AAEzDe,QAAAA,aAAa,CAACR,SAAS,GAAGU,YAAM,CAC9BC,UAAI,CAAC,KAAK,CAAC,EACXH,aAAa,CAACR,SAAS,CAACY,MAAM,CAACX,eAAe,CAChD,CAAC;AACH,MAAA;AACF,IAAA,CAAC,MAAM;AACLT,MAAAA,aAAa,CAACe,IAAI,CAACV,QAAQ,CAAC;AAC9B,IAAA;AACF,EAAA,CAAC,CAAC;AAEF,EAAA,IAAI,CAACgB,aAAO,CAACrB,aAAa,CAAC,EAAE;IAC3BC,gBAAgB,CAACc,IAAI,CAAC;MACpBR,KAAK,EAAE,CAACc,aAAO,CAACpB,gBAAgB,CAAC,GAAG,QAAQ,GAAG,IAAI;AACnDO,MAAAA,SAAS,EAAER;AACb,KAAC,CAAC;AACJ,EAAA;AAEA,EAAA,OAAOC,gBAAgB;AACzB,CAAC;;;;;AC5BD,IAAMqB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAKhB;AAAA,EAAA,IAAAC,oBAAA,GAAAD,IAAA,CAJJE,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAGE,cAAI,GAAAF,oBAAA;IAAAG,cAAA,GAAAJ,IAAA,CACtBf,SAAS;AAATA,IAAAA,SAAS,GAAAmB,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;IACdC,WAAW,GAAAL,IAAA,CAAXK,WAAW;AACRC,IAAAA,aAAa,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA;AAEhB,EAAA,IAAIV,aAAO,CAACb,SAAS,CAAC,EAAE,OAAO,IAAI;AAEnC,EAAA,IAAMC,eAAe,GAAGd,cAAc,CAACa,SAAS,CAAC;AAEjD,EAAA,oBACEwB,cAAA,CAACC,uBAAY,EAAAC,aAAA,CAAAA,aAAA,CAAA;AACXC,IAAAA,YAAY,eACVH,cAAA,CAACI,iBAAM,EAAAF,aAAA,CAAA;AACL,MAAA,aAAA,EAAY,0BAA0B;AACtCG,MAAAA,IAAI,EAAEC,MAAO;AACbC,MAAAA,IAAI,EAAC,MAAM;AACXC,MAAAA,OAAO,EAAC;AAAS,KAAA,EACbZ,WAAW,CAChB;AACF,GAAA,EACGC,aAAa,CAAA,EAAA,EAAA,EAAA;AACjBA,IAAAA,aAAa,EAAAK,aAAA,CAAA;AACXO,MAAAA,SAAS,EAAE;AAAU,KAAA,EAClBZ,aAAa,KAAA,IAAA,IAAbA,aAAa,uBAAbA,aAAa,CAAEA,aAAa,CAC/B;AAAAa,IAAAA,QAAA,eAEFV,cAAA,CAAA,KAAA,EAAA;AACES,MAAAA,SAAS,EAAC,2DAA2D;AACrE,MAAA,aAAA,EAAY,wBAAwB;AAAAC,MAAAA,QAAA,EAEnCjC,eAAe,CAACC,GAAG,CAAC,UAAAiC,KAAA,EAAA;AAAA,QAAA,IAAGpC,KAAK,GAAAoC,KAAA,CAALpC,KAAK;UAAEC,SAAS,GAAAmC,KAAA,CAATnC,SAAS;QAAA,oBACtCoC,eAAA,CAACC,cAAQ,EAAA;UAAAH,QAAA,EAAA,CACNnC,KAAK,iBACJqC,eAAA,CAAA,KAAA,EAAA;AAAKH,YAAAA,SAAS,EAAC,oCAAoC;YAAAC,QAAA,EAAA,cACjDV,cAAA,CAACc,qBAAU,EAAA;AAACN,cAAAA,OAAO,EAAC,IAAI;AAAAE,cAAAA,QAAA,EAAEnC;aAAkB,CAAC,eAC7CyB,cAAA,CAAA,IAAA,EAAA;AAAIS,cAAAA,SAAS,EAAC;AAA8B,aAAE,CAAC;WAC5C,CACN,eACDT,cAAA,CAAA,KAAA,EAAA;AACES,YAAAA,SAAS,EAAC,mCAAmC;AAC7C,YAAA,aAAA,EAAaM,sBAAc,CAAC,wBAAwB,EAAExC,KAAK,CAAE;AAAAmC,YAAAA,QAAA,EAE5DlC,SAAS,CAACE,GAAG,CAAC,UAAAsC,IAAI,EAAA;AAAA,cAAA,oBACjBhB,cAAA,CAAA,QAAA,EAAA;AACES,gBAAAA,SAAS,EAAC,mNAAmN;AAE7N,gBAAA,aAAA,EAAaM,sBAAc,CACzB,6BAA6B,EAC7BC,IAAI,CAACzC,KACP,CAAE;gBACF0C,OAAO,EAAE,SAATA,OAAOA,GAAA;kBAAA,OAAQxB,eAAe,CAACuB,IAAI,CAAC;gBAAA,CAAC;gBAAAN,QAAA,EAEpCM,IAAI,CAACzC;eAAK,EAPNyC,IAAI,CAACzC,KAQJ,CAAC;YAAA,CACV;AAAC,WACC,CAAC;AAAA,SAAA,EAxBOA,KAyBL,CAAC;MAAA,CACZ;KACE;AAAC,GAAA,CACM,CAAC;AAEnB;;;;","x_google_ignoreList":[0]}