@bigbinary/neeto-molecules 4.3.2 → 4.3.4
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/PhoneNumber.js +3 -2
- package/dist/PhoneNumber.js.map +1 -1
- package/dist/SessionEnvironment.js +2 -1
- package/dist/SessionEnvironment.js.map +1 -1
- package/dist/cjs/PhoneNumber.js +2 -1
- package/dist/cjs/PhoneNumber.js.map +1 -1
- package/dist/cjs/SessionEnvironment.js +2 -1
- package/dist/cjs/SessionEnvironment.js.map +1 -1
- package/dist/cjs/{phone-number-ycxkC0mm.js → index.es5.min-CUvhPmKJ.js} +2 -324
- package/dist/cjs/index.es5.min-CUvhPmKJ.js.map +1 -0
- package/dist/cjs/phone-number-DIIlhFGA.js +328 -0
- package/dist/cjs/phone-number-DIIlhFGA.js.map +1 -0
- package/dist/cjs/v2/DocumentEditor.js +2 -2
- package/dist/cjs/v2/DocumentEditor.js.map +1 -1
- package/dist/cjs/v2/DynamicVariables.js +134 -0
- package/dist/cjs/v2/DynamicVariables.js.map +1 -0
- package/dist/cjs/v2/PhoneNumber.js +414 -0
- package/dist/cjs/v2/PhoneNumber.js.map +1 -0
- package/dist/{phone-number--BBsxLSh.js → index.es5.min-B2AiaKmd.js} +2 -301
- package/dist/index.es5.min-B2AiaKmd.js.map +1 -0
- package/dist/phone-number-B3OcwVZM.js +303 -0
- package/dist/phone-number-B3OcwVZM.js.map +1 -0
- package/dist/v2/DocumentEditor.js +2 -2
- package/dist/v2/DocumentEditor.js.map +1 -1
- package/dist/v2/DynamicVariables.js +132 -0
- package/dist/v2/DynamicVariables.js.map +1 -0
- package/dist/v2/PhoneNumber.js +389 -0
- package/dist/v2/PhoneNumber.js.map +1 -0
- package/package.json +3 -3
- package/src/translations/en.json +2 -0
- package/dist/cjs/phone-number-ycxkC0mm.js.map +0 -1
- 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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"}
|
|
@@ -8,7 +8,7 @@ var formik$1 = require('@bigbinary/neeto-atoms/formik');
|
|
|
8
8
|
var classnames = require('classnames');
|
|
9
9
|
var formik = require('formik');
|
|
10
10
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
11
|
-
var FormikEditor = require('@bigbinary/neeto-editor/FormikEditor');
|
|
11
|
+
var FormikEditor = require('@bigbinary/neeto-editor/v2/FormikEditor');
|
|
12
12
|
var ramda = require('ramda');
|
|
13
13
|
var reactI18next = require('react-i18next');
|
|
14
14
|
var injectCss = require('../inject-css-B6qYtOJe.js');
|
|
@@ -49,7 +49,7 @@ var IMAGE_UPLOAD_CONFIG = {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
var css = ".nm-document-editor__wrapper{color:var(--foreground);height:100%}@media screen and (max-width:768px){.nm-document-editor__wrapper{width:100%}}.nm-document-editor__container{margin:0 auto;max-width:48rem!important;width:100%}.nm-document-editor__menubar{background-color:var(--background);position:sticky;top:0;width:100%;z-index:20}.nm-document-editor__menubar .neeto-editor-fixed-menu,.nm-document-editor__menubar.neeto-editor-fixed-menu{width:100%}.nm-document-editor__title{margin-top:1.5rem;width:100%}.nm-document-editor__title textarea{background-color:transparent;color:var(--foreground);font-size:2.625rem;font-weight:700;line-height:
|
|
52
|
+
var css = ".nm-document-editor__wrapper{color:var(--foreground);height:100%}@media screen and (max-width:768px){.nm-document-editor__wrapper{width:100%}}.nm-document-editor__container{margin:0 auto;max-width:48rem!important;width:100%}.nm-document-editor__menubar{background-color:var(--background);position:sticky;top:0;width:100%;z-index:20}.nm-document-editor__menubar .neeto-editor-fixed-menu,.nm-document-editor__menubar.neeto-editor-fixed-menu{width:100%}.nm-document-editor__title{margin-top:1.5rem;width:100%}.nm-document-editor__title textarea{field-sizing:content!important;background-color:transparent;color:var(--foreground);font-size:2.625rem;font-weight:700;line-height:1.15;max-height:none;min-height:1lh!important;overflow:hidden!important;padding:0;resize:none}.nm-document-editor__title textarea,.nm-document-editor__title textarea:focus-visible,.nm-document-editor__title textarea[aria-invalid=true],.nm-document-editor__title textarea[aria-invalid=true]:focus-visible{border-color:transparent!important;box-shadow:none!important}.nm-document-editor__title textarea::-moz-placeholder{color:var(--muted-foreground);opacity:.5}.nm-document-editor__title textarea::placeholder{color:var(--muted-foreground);opacity:.5}@media screen and (max-width:1024px){.nm-document-editor__title textarea{font-size:2rem;line-height:1.25}}.nm-document-editor__error{margin:.75rem auto}.nm-document-editor__thumbnail{background-color:var(--muted);border-radius:.5rem;overflow:hidden;padding-bottom:56.25%;position:relative;width:100%}.nm-document-editor__thumbnail img{height:100%;inset-inline-start:0;-o-object-fit:cover;object-fit:cover;position:absolute;top:0;width:100%}.nm-document-editor__wrapper .neeto-editor-fixed-menu{border-inline-end:0!important;border-inline-start:0!important;border-radius:0!important}.nm-document-editor__wrapper .neeto-editor-fixed-menu__wrapper{margin:0 auto;max-width:46.875rem;padding-block:.375rem}.nm-document-editor__wrapper button.ne-toolbar-item{border-radius:.5rem!important}@media screen and (max-width:768px){.nm-document-editor__wrapper .neeto-editor-fixed-menu__wrapper{overflow-x:auto}}.nm-document-editor__wrapper .ProseMirror{flex-grow:1;height:auto;max-height:none;outline:none;overflow-y:hidden}.nm-document-editor__wrapper .ProseMirror p.is-editor-empty:first-child:before{color:var(--muted-foreground);content:attr(data-placeholder);float:left;height:0;opacity:.5;pointer-events:none}.nm-document-editor__wrapper .editor-content__wrapper{border:none!important;padding:.75rem 1.5rem 2rem!important;width:100%!important}.nm-document-editor__wrapper .editor-content-attachments{border:none;margin:.75rem auto 0;max-width:48rem!important;padding-inline-end:1rem;padding-inline-start:1rem}.nm-document-editor__wrapper .editor-content-attachments--no-attachments{display:none!important}.nm-document-editor__wrapper .neeto-editor-character-count{color:var(--muted-foreground);font-size:.75rem;margin:0 auto;max-width:48rem!important;padding-inline-end:1rem;padding-inline-start:1rem}.nm-document-editor__wrapper .ne-attachments__wrapper{width:100%}.nm-document-editor__wrapper ins{background-color:#c1f4cb!important;text-decoration:none!important}.nm-document-editor__wrapper del{background-color:#faa!important}";
|
|
53
53
|
injectCss.n(css,{});
|
|
54
54
|
|
|
55
55
|
var useEditor = function useEditor(_ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEditor.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/image.js","../../../src/v2/components/DocumentEditor/constants.js","../../../src/v2/components/DocumentEditor/hooks/useEditor.js","../../../src/v2/components/DocumentEditor/MediaUploader.jsx","../../../src/v2/components/DocumentEditor/utils.js","../../../src/v2/components/DocumentEditor/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 [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n \"callout\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isMenuIndependent: true,\n addons: [],\n size: \"medium\",\n};\n\nexport const IMAGE_UPLOAD_CONFIG = {\n maxImageSize: 1,\n allowedImageTypes: {\n \"image/jpg\": [\".jpg\", \".jpeg\"],\n \"image/png\": [\".png\"],\n \"image/svg\": [\".svg\"],\n },\n};\n","import { useCallback } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = useCallback(\n content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n },\n [editorContentFieldName, onContentChange, setFieldValue]\n );\n\n const handleAttachmentChange = useCallback(\n attachments => {\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n },\n [onAttachmentChange, setFieldValue]\n );\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","import { Spinner } from \"@bigbinary/neeto-atoms\";\nimport { useFormikContext } from \"formik\";\nimport { ImageUploader } from \"neetoimageuploader\";\nimport { isEmpty } from \"ramda\";\n\nimport { IMAGE_UPLOAD_CONFIG } from \"./constants\";\n\nconst MediaUploader = ({ setIsThumbnailImageModalOpen }) => {\n const {\n values: { thumbnailImageUrl },\n setFieldValue,\n initialValues,\n submitForm,\n } = useFormikContext();\n\n const handleUpload = file => {\n const { url, signedId } = file;\n setFieldValue(\"thumbnailImage\", signedId);\n setFieldValue(\"thumbnailImageUrl\", url);\n setTimeout(() => {\n setIsThumbnailImageModalOpen(false);\n submitForm();\n });\n };\n\n if (isEmpty(initialValues)) {\n return <Spinner />;\n }\n\n return (\n <ImageUploader\n className=\"h-auto w-full\"\n key={thumbnailImageUrl}\n src={thumbnailImageUrl}\n uploadConfig={IMAGE_UPLOAD_CONFIG}\n onUploadComplete={handleUpload}\n />\n );\n};\n\nexport default MediaUploader;\n","import { t } from \"i18next\";\nimport { Image } from \"lucide-react\";\n\nexport const getThumbnailAddon = command => ({\n label: t(\"neetoMolecules.documentEditor.thumbnailImage\"),\n optionName: \"thumbnail-image\",\n command,\n icon: Image,\n isEnabled: true,\n \"data-testid\": \"thumbnail-image-addon\",\n});\n","import { memo, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { Dialog, DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { Textarea as FormikTextarea } from \"@bigbinary/neeto-atoms/formik\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Ellipsis } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport PropTypes from \"prop-types\";\nimport { mergeRight } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.css\";\nimport useEditor from \"./hooks/useEditor\";\nimport MediaUploader from \"./MediaUploader\";\nimport { getThumbnailAddon } from \"./utils\";\n\nconst Editor = ({\n attachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps: customEditorProps = {},\n titleProps = {},\n hasThumbnailImage = false,\n children,\n}) => {\n const { t } = useTranslation();\n const { values, setFieldValue, submitForm } = useFormikContext();\n const { thumbnailImageUrl } = values;\n\n const titleRef = useRef();\n const editorRef = useRef();\n const [isThumbnailImageModalOpen, setIsThumbnailImageModalOpen] =\n useState(false);\n\n const editorProps = useMemo(() => {\n const baseProps = mergeRight(DEFAULT_EDITOR_PROPS, customEditorProps);\n\n if (!hasThumbnailImage) return baseProps;\n\n const thumbnailAddon = getThumbnailAddon(() =>\n setIsThumbnailImageModalOpen(true)\n );\n\n return mergeRight(baseProps, { addonCommands: [thumbnailAddon] });\n }, [customEditorProps, hasThumbnailImage]);\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n const addons = useMemo(\n () => EDITOR_ADDONS.concat(editorProps.addons || []),\n [editorProps.addons]\n );\n\n const handleTab = () => {\n const isListActive =\n editorRef.current?.editor?.isActive(\"orderedList\") ||\n editorRef.current?.editor?.isActive(\"bulletList\");\n\n if (isListActive) {\n editorRef.current?.editor?.commands?.sinkListItem(\"listItem\");\n\n return true;\n }\n\n return true;\n };\n\n const handleDeleteThumbnail = () => {\n setFieldValue(\"thumbnailImage\", \"\");\n setFieldValue(\"thumbnailImageUrl\", \"\");\n setTimeout(submitForm);\n };\n\n return (\n <div\n className=\"nm-document-editor__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments w-full flex-shrink-0\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper nm-document-editor__container\"\n data-testid=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n errorWrapperClassName=\"w-full min-h-full flex flex-col items-center\"\n hideSlashCommands={false}\n menuClassName={classNames(\"nm-document-editor__menubar\", menuClassName)}\n name={editorContentFieldName}\n ref={setEditorRef}\n {...{ attachments, ...editorProps, addons }}\n contentWrapperClassName=\"w-full flex flex-col flex-grow\"\n keyboardShortcuts={{ Tab: handleTab, ...editorProps.keyboardShortcuts }}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n {children}\n <div className=\"nm-document-editor__container px-6\">\n <FormikTextarea\n nakedTextarea\n className=\"nm-document-editor__title\"\n data-testid=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {thumbnailImageUrl && (\n <div className=\"group relative mt-4\">\n <div className=\"nm-document-editor__thumbnail\">\n <img alt=\"Cover\" src={thumbnailImageUrl} />\n </div>\n <div className=\"absolute end-2 top-2\">\n <DropdownMenu\n buttonProps={{ variant: \"secondary\", size: \"icon-sm\" }}\n icon={Ellipsis}\n >\n <DropdownMenu.MenuItem onClick={handleDeleteThumbnail}>\n {t(\"neetoMolecules.documentEditor.delete\")}\n </DropdownMenu.MenuItem>\n </DropdownMenu>\n </div>\n </div>\n )}\n {errors[editorContentFieldName] && (\n <p\n className=\"text-destructive nm-document-editor__error text-sm font-normal\"\n data-slot=\"field-error\"\n data-testid=\"articles-content-input-error\"\n role=\"alert\"\n >\n {errors[editorContentFieldName]}\n </p>\n )}\n </div>\n </FormikEditor>\n <Dialog\n data-testid=\"thumbnail-image-modal\"\n isOpen={isThumbnailImageModalOpen}\n size=\"medium\"\n onClose={() => setIsThumbnailImageModalOpen(false)}\n >\n <Dialog.Header>\n <Dialog.Title>\n {t(\"neetoMolecules.documentEditor.uploadThumbnailImage\")}\n </Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <MediaUploader {...{ setIsThumbnailImageModalOpen }} />\n </Dialog.Body>\n </Dialog>\n </div>\n );\n};\n\nEditor.propTypes = {\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n onContentChange: PropTypes.func,\n onAttachmentChange: PropTypes.func,\n onTitleChange: PropTypes.func,\n getTitleRef: PropTypes.func,\n getEditorRef: PropTypes.func,\n editorContentFieldName: PropTypes.string,\n titleFieldName: PropTypes.string,\n editorProps: PropTypes.object,\n titleProps: PropTypes.object,\n menuClassName: PropTypes.string,\n children: PropTypes.node,\n hasThumbnailImage: PropTypes.bool,\n};\n\nEditor.displayName = \"DocumentEditor\";\n\nexport default memo(Editor);\n"],"names":["createLucideIcon","EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isMenuIndependent","addons","size","IMAGE_UPLOAD_CONFIG","maxImageSize","allowedImageTypes","useEditor","_ref","onContentChange","editorContentFieldName","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","useCallback","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current3","commands","insertContentAt","mode","editorHotkeyRef","MediaUploader","setIsThumbnailImageModalOpen","thumbnailImageUrl","values","initialValues","submitForm","handleUpload","file","url","signedId","setTimeout","isEmpty","_jsx","Spinner","ImageUploader","className","src","uploadConfig","onUploadComplete","getThumbnailAddon","command","label","t","optionName","icon","Image","isEnabled","Editor","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","customEditorProps","_ref$titleProps","titleProps","_ref$hasThumbnailImag","hasThumbnailImage","children","_useTranslation","useTranslation","useRef","_useState","useState","_useState2","_slicedToArray","isThumbnailImageModalOpen","useMemo","baseProps","mergeRight","thumbnailAddon","addonCommands","_useEditor","setTitleRef","node","setEditorRef","concat","handleTab","isListActive","isActive","sinkListItem","handleDeleteThumbnail","_jsxs","ref","FormikEditor","_objectSpread","attachmentsClassName","contentClassName","error","undefined","errorWrapperClassName","hideSlashCommands","classNames","name","contentWrapperClassName","keyboardShortcuts","Tab","onChange","onChangeAttachments","FormikTextarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","alt","DropdownMenu","buttonProps","variant","Ellipsis","MenuItem","onClick","role","Dialog","isOpen","onClose","Header","Title","Body","displayName","memo"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"DocumentEditor.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/image.js","../../../src/v2/components/DocumentEditor/constants.js","../../../src/v2/components/DocumentEditor/hooks/useEditor.js","../../../src/v2/components/DocumentEditor/MediaUploader.jsx","../../../src/v2/components/DocumentEditor/utils.js","../../../src/v2/components/DocumentEditor/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 [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n \"callout\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isMenuIndependent: true,\n addons: [],\n size: \"medium\",\n};\n\nexport const IMAGE_UPLOAD_CONFIG = {\n maxImageSize: 1,\n allowedImageTypes: {\n \"image/jpg\": [\".jpg\", \".jpeg\"],\n \"image/png\": [\".png\"],\n \"image/svg\": [\".svg\"],\n },\n};\n","import { useCallback } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = useCallback(\n content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n },\n [editorContentFieldName, onContentChange, setFieldValue]\n );\n\n const handleAttachmentChange = useCallback(\n attachments => {\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n },\n [onAttachmentChange, setFieldValue]\n );\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","import { Spinner } from \"@bigbinary/neeto-atoms\";\nimport { useFormikContext } from \"formik\";\nimport { ImageUploader } from \"neetoimageuploader\";\nimport { isEmpty } from \"ramda\";\n\nimport { IMAGE_UPLOAD_CONFIG } from \"./constants\";\n\nconst MediaUploader = ({ setIsThumbnailImageModalOpen }) => {\n const {\n values: { thumbnailImageUrl },\n setFieldValue,\n initialValues,\n submitForm,\n } = useFormikContext();\n\n const handleUpload = file => {\n const { url, signedId } = file;\n setFieldValue(\"thumbnailImage\", signedId);\n setFieldValue(\"thumbnailImageUrl\", url);\n setTimeout(() => {\n setIsThumbnailImageModalOpen(false);\n submitForm();\n });\n };\n\n if (isEmpty(initialValues)) {\n return <Spinner />;\n }\n\n return (\n <ImageUploader\n className=\"h-auto w-full\"\n key={thumbnailImageUrl}\n src={thumbnailImageUrl}\n uploadConfig={IMAGE_UPLOAD_CONFIG}\n onUploadComplete={handleUpload}\n />\n );\n};\n\nexport default MediaUploader;\n","import { t } from \"i18next\";\nimport { Image } from \"lucide-react\";\n\nexport const getThumbnailAddon = command => ({\n label: t(\"neetoMolecules.documentEditor.thumbnailImage\"),\n optionName: \"thumbnail-image\",\n command,\n icon: Image,\n isEnabled: true,\n \"data-testid\": \"thumbnail-image-addon\",\n});\n","import { memo, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { Dialog, DropdownMenu } from \"@bigbinary/neeto-atoms\";\nimport { Textarea as FormikTextarea } from \"@bigbinary/neeto-atoms/formik\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Ellipsis } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor/v2\";\nimport PropTypes from \"prop-types\";\nimport { mergeRight } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.css\";\nimport useEditor from \"./hooks/useEditor\";\nimport MediaUploader from \"./MediaUploader\";\nimport { getThumbnailAddon } from \"./utils\";\n\nconst Editor = ({\n attachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps: customEditorProps = {},\n titleProps = {},\n hasThumbnailImage = false,\n children,\n}) => {\n const { t } = useTranslation();\n const { values, setFieldValue, submitForm } = useFormikContext();\n const { thumbnailImageUrl } = values;\n\n const titleRef = useRef();\n const editorRef = useRef();\n const [isThumbnailImageModalOpen, setIsThumbnailImageModalOpen] =\n useState(false);\n\n const editorProps = useMemo(() => {\n const baseProps = mergeRight(DEFAULT_EDITOR_PROPS, customEditorProps);\n\n if (!hasThumbnailImage) return baseProps;\n\n const thumbnailAddon = getThumbnailAddon(() =>\n setIsThumbnailImageModalOpen(true)\n );\n\n return mergeRight(baseProps, { addonCommands: [thumbnailAddon] });\n }, [customEditorProps, hasThumbnailImage]);\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n const addons = useMemo(\n () => EDITOR_ADDONS.concat(editorProps.addons || []),\n [editorProps.addons]\n );\n\n const handleTab = () => {\n const isListActive =\n editorRef.current?.editor?.isActive(\"orderedList\") ||\n editorRef.current?.editor?.isActive(\"bulletList\");\n\n if (isListActive) {\n editorRef.current?.editor?.commands?.sinkListItem(\"listItem\");\n\n return true;\n }\n\n return true;\n };\n\n const handleDeleteThumbnail = () => {\n setFieldValue(\"thumbnailImage\", \"\");\n setFieldValue(\"thumbnailImageUrl\", \"\");\n setTimeout(submitForm);\n };\n\n return (\n <div\n className=\"nm-document-editor__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments w-full flex-shrink-0\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper nm-document-editor__container\"\n data-testid=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n errorWrapperClassName=\"w-full min-h-full flex flex-col items-center\"\n hideSlashCommands={false}\n menuClassName={classNames(\"nm-document-editor__menubar\", menuClassName)}\n name={editorContentFieldName}\n ref={setEditorRef}\n {...{ attachments, ...editorProps, addons }}\n contentWrapperClassName=\"w-full flex flex-col flex-grow\"\n keyboardShortcuts={{ Tab: handleTab, ...editorProps.keyboardShortcuts }}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n {children}\n <div className=\"nm-document-editor__container px-6\">\n <FormikTextarea\n nakedTextarea\n className=\"nm-document-editor__title\"\n data-testid=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {thumbnailImageUrl && (\n <div className=\"group relative mt-4\">\n <div className=\"nm-document-editor__thumbnail\">\n <img alt=\"Cover\" src={thumbnailImageUrl} />\n </div>\n <div className=\"absolute end-2 top-2\">\n <DropdownMenu\n buttonProps={{ variant: \"secondary\", size: \"icon-sm\" }}\n icon={Ellipsis}\n >\n <DropdownMenu.MenuItem onClick={handleDeleteThumbnail}>\n {t(\"neetoMolecules.documentEditor.delete\")}\n </DropdownMenu.MenuItem>\n </DropdownMenu>\n </div>\n </div>\n )}\n {errors[editorContentFieldName] && (\n <p\n className=\"text-destructive nm-document-editor__error text-sm font-normal\"\n data-slot=\"field-error\"\n data-testid=\"articles-content-input-error\"\n role=\"alert\"\n >\n {errors[editorContentFieldName]}\n </p>\n )}\n </div>\n </FormikEditor>\n <Dialog\n data-testid=\"thumbnail-image-modal\"\n isOpen={isThumbnailImageModalOpen}\n size=\"medium\"\n onClose={() => setIsThumbnailImageModalOpen(false)}\n >\n <Dialog.Header>\n <Dialog.Title>\n {t(\"neetoMolecules.documentEditor.uploadThumbnailImage\")}\n </Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <MediaUploader {...{ setIsThumbnailImageModalOpen }} />\n </Dialog.Body>\n </Dialog>\n </div>\n );\n};\n\nEditor.propTypes = {\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n onContentChange: PropTypes.func,\n onAttachmentChange: PropTypes.func,\n onTitleChange: PropTypes.func,\n getTitleRef: PropTypes.func,\n getEditorRef: PropTypes.func,\n editorContentFieldName: PropTypes.string,\n titleFieldName: PropTypes.string,\n editorProps: PropTypes.object,\n titleProps: PropTypes.object,\n menuClassName: PropTypes.string,\n children: PropTypes.node,\n hasThumbnailImage: PropTypes.bool,\n};\n\nEditor.displayName = \"DocumentEditor\";\n\nexport default memo(Editor);\n"],"names":["createLucideIcon","EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isMenuIndependent","addons","size","IMAGE_UPLOAD_CONFIG","maxImageSize","allowedImageTypes","useEditor","_ref","onContentChange","editorContentFieldName","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","useCallback","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current3","commands","insertContentAt","mode","editorHotkeyRef","MediaUploader","setIsThumbnailImageModalOpen","thumbnailImageUrl","values","initialValues","submitForm","handleUpload","file","url","signedId","setTimeout","isEmpty","_jsx","Spinner","ImageUploader","className","src","uploadConfig","onUploadComplete","getThumbnailAddon","command","label","t","optionName","icon","Image","isEnabled","Editor","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","customEditorProps","_ref$titleProps","titleProps","_ref$hasThumbnailImag","hasThumbnailImage","children","_useTranslation","useTranslation","useRef","_useState","useState","_useState2","_slicedToArray","isThumbnailImageModalOpen","useMemo","baseProps","mergeRight","thumbnailAddon","addonCommands","_useEditor","setTitleRef","node","setEditorRef","concat","handleTab","isListActive","isActive","sinkListItem","handleDeleteThumbnail","_jsxs","ref","FormikEditor","_objectSpread","attachmentsClassName","contentClassName","error","undefined","errorWrapperClassName","hideSlashCommands","classNames","name","contentWrapperClassName","keyboardShortcuts","Tab","onChange","onChangeAttachments","FormikTextarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","alt","DropdownMenu","buttonProps","variant","Ellipsis","MenuItem","onClick","role","Dialog","isOpen","onClose","Header","Title","Body","displayName","memo"],"mappings":"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","x_google_ignoreList":[0]}
|