@bigbinary/neeto-molecules 1.3.10 → 1.3.12

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 (118) hide show
  1. package/dist/ShareViaLink.js +14 -5
  2. package/dist/ShareViaLink.js.map +1 -1
  3. package/dist/cjs/Breadcrumbs.js +51 -0
  4. package/dist/cjs/Breadcrumbs.js.map +1 -0
  5. package/dist/cjs/BrowserSupport.js +426 -0
  6. package/dist/cjs/BrowserSupport.js.map +1 -0
  7. package/dist/cjs/Builder.js +712 -0
  8. package/dist/cjs/Builder.js.map +1 -0
  9. package/dist/cjs/CalendarView.js +549 -0
  10. package/dist/cjs/CalendarView.js.map +1 -0
  11. package/dist/cjs/Codeblock.js +251 -0
  12. package/dist/cjs/Codeblock.js.map +1 -0
  13. package/dist/cjs/Columns.js +248 -0
  14. package/dist/cjs/Columns.js.map +1 -0
  15. package/dist/cjs/ConfirmationModal.js +120 -0
  16. package/dist/cjs/ConfirmationModal.js.map +1 -0
  17. package/dist/cjs/Container.js +1218 -0
  18. package/dist/cjs/Container.js.map +1 -0
  19. package/dist/cjs/CopyToClipboardButton.js +215 -0
  20. package/dist/cjs/CopyToClipboardButton.js.map +1 -0
  21. package/dist/cjs/CustomDomain.js +743 -0
  22. package/dist/cjs/CustomDomain.js.map +1 -0
  23. package/dist/cjs/CustomDomainDashboard.js +2348 -0
  24. package/dist/cjs/CustomDomainDashboard.js.map +1 -0
  25. package/dist/cjs/DateFormat.js +53 -0
  26. package/dist/cjs/DateFormat.js.map +1 -0
  27. package/dist/cjs/DateRangeFilter.js +236 -0
  28. package/dist/cjs/DateRangeFilter.js.map +1 -0
  29. package/dist/cjs/DocumentEditor.js +283 -0
  30. package/dist/cjs/DocumentEditor.js.map +1 -0
  31. package/dist/cjs/DownloadMobileAppCallout.js +45 -0
  32. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -0
  33. package/dist/cjs/DynamicVariables.js +189 -0
  34. package/dist/cjs/DynamicVariables.js.map +1 -0
  35. package/dist/cjs/EmailForm.js +2057 -0
  36. package/dist/cjs/EmailForm.js.map +1 -0
  37. package/dist/cjs/EmailPreview.js +1319 -0
  38. package/dist/cjs/EmailPreview.js.map +1 -0
  39. package/dist/cjs/ErrorPage.js +188 -0
  40. package/dist/cjs/ErrorPage.js.map +1 -0
  41. package/dist/cjs/Header.js +179 -0
  42. package/dist/cjs/Header.js.map +1 -0
  43. package/dist/cjs/IconPicker.js +324 -0
  44. package/dist/cjs/IconPicker.js.map +1 -0
  45. package/dist/cjs/ImageWithFallback.js +188 -0
  46. package/dist/cjs/ImageWithFallback.js.map +1 -0
  47. package/dist/cjs/InlineInput.js +734 -0
  48. package/dist/cjs/InlineInput.js.map +1 -0
  49. package/dist/cjs/IntegrationCard.js +400 -0
  50. package/dist/cjs/IntegrationCard.js.map +1 -0
  51. package/dist/cjs/IntegrationDisconnectAlert.js +89 -0
  52. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -0
  53. package/dist/cjs/IntegrationWalkthroughModal.js +50 -0
  54. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -0
  55. package/dist/cjs/IpRestriction.js +683 -0
  56. package/dist/cjs/IpRestriction.js.map +1 -0
  57. package/dist/cjs/KeyboardShortcuts.js +370 -0
  58. package/dist/cjs/KeyboardShortcuts.js.map +1 -0
  59. package/dist/cjs/LoginPage.js +620 -0
  60. package/dist/cjs/LoginPage.js.map +1 -0
  61. package/dist/cjs/MenuBar.js +1468 -0
  62. package/dist/cjs/MenuBar.js.map +1 -0
  63. package/dist/cjs/Metadata.js +215 -0
  64. package/dist/cjs/Metadata.js.map +1 -0
  65. package/dist/cjs/MoreDropdown.js +210 -0
  66. package/dist/cjs/MoreDropdown.js.map +1 -0
  67. package/dist/cjs/NavigationHeader.js +867 -0
  68. package/dist/cjs/NavigationHeader.js.map +1 -0
  69. package/dist/cjs/NeetoWidget.js +1078 -0
  70. package/dist/cjs/NeetoWidget.js.map +1 -0
  71. package/dist/cjs/PageLoader.js +159 -0
  72. package/dist/cjs/PageLoader.js.map +1 -0
  73. package/dist/cjs/PhoneNumber.js +492 -0
  74. package/dist/cjs/PhoneNumber.js.map +1 -0
  75. package/dist/cjs/PublishBlock.js +165 -0
  76. package/dist/cjs/PublishBlock.js.map +1 -0
  77. package/dist/cjs/PublishYourItem.js +1239 -0
  78. package/dist/cjs/PublishYourItem.js.map +1 -0
  79. package/dist/cjs/Rename.js +625 -0
  80. package/dist/cjs/Rename.js.map +1 -0
  81. package/dist/cjs/ResponsiveDevicePicker.js +200 -0
  82. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -0
  83. package/dist/cjs/Schedule.js +1130 -0
  84. package/dist/cjs/Schedule.js.map +1 -0
  85. package/dist/cjs/Scrollable.js +129 -0
  86. package/dist/cjs/Scrollable.js.map +1 -0
  87. package/dist/cjs/Search.js +217 -0
  88. package/dist/cjs/Search.js.map +1 -0
  89. package/dist/cjs/Security.js +1930 -0
  90. package/dist/cjs/Security.js.map +1 -0
  91. package/dist/cjs/SendToFields.js +353 -0
  92. package/dist/cjs/SendToFields.js.map +1 -0
  93. package/dist/cjs/Settings.js +492 -0
  94. package/dist/cjs/Settings.js.map +1 -0
  95. package/dist/cjs/ShareViaEmail.js +2005 -0
  96. package/dist/cjs/ShareViaEmail.js.map +1 -0
  97. package/dist/cjs/ShareViaLink.js +738 -0
  98. package/dist/cjs/ShareViaLink.js.map +1 -0
  99. package/dist/cjs/Sidebar.js +930 -0
  100. package/dist/cjs/Sidebar.js.map +1 -0
  101. package/dist/cjs/SubHeader.js +224 -0
  102. package/dist/cjs/SubHeader.js.map +1 -0
  103. package/dist/cjs/SuffixedInput.js +216 -0
  104. package/dist/cjs/SuffixedInput.js.map +1 -0
  105. package/dist/cjs/TableWrapper.js +33 -0
  106. package/dist/cjs/TableWrapper.js.map +1 -0
  107. package/dist/cjs/Taxonomy.js +2125 -0
  108. package/dist/cjs/Taxonomy.js.map +1 -0
  109. package/dist/cjs/ThemeSidebar.js +2052 -0
  110. package/dist/cjs/ThemeSidebar.js.map +1 -0
  111. package/dist/cjs/TimeFormat.js +55 -0
  112. package/dist/cjs/TimeFormat.js.map +1 -0
  113. package/dist/cjs/TimezoneMismatchModal.js +176 -0
  114. package/dist/cjs/TimezoneMismatchModal.js.map +1 -0
  115. package/dist/cjs/ToggleFeatureCard.js +330 -0
  116. package/dist/cjs/ToggleFeatureCard.js.map +1 -0
  117. package/package.json +2 -1
  118. package/types/ShareViaLink.d.ts +2 -0
@@ -0,0 +1,683 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var neetoui = require('@bigbinary/neetoui');
5
+ var formik = require('@bigbinary/neetoui/formik');
6
+ var reactI18next = require('react-i18next');
7
+ var formik$1 = require('formik');
8
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
9
+ var neetoIcons = require('@bigbinary/neeto-icons');
10
+ var i18next = require('i18next');
11
+ var yup = require('yup');
12
+ var ipNum = require('ip-num');
13
+ var ramda = require('ramda');
14
+ var reactQuery = require('react-query');
15
+ var axios = require('axios');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n["default"] = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
38
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
39
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
40
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
41
+
42
+ function _arrayWithHoles(arr) {
43
+ if (Array.isArray(arr)) return arr;
44
+ }
45
+
46
+ function _iterableToArrayLimit(r, l) {
47
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
48
+ if (null != t) {
49
+ var e,
50
+ n,
51
+ i,
52
+ u,
53
+ a = [],
54
+ f = !0,
55
+ o = !1;
56
+ try {
57
+ if (i = (t = t.call(r)).next, 0 === l) {
58
+ if (Object(t) !== t) return;
59
+ f = !1;
60
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
61
+ } catch (r) {
62
+ o = !0, n = r;
63
+ } finally {
64
+ try {
65
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
66
+ } finally {
67
+ if (o) throw n;
68
+ }
69
+ }
70
+ return a;
71
+ }
72
+ }
73
+
74
+ function _arrayLikeToArray(arr, len) {
75
+ if (len == null || len > arr.length) len = arr.length;
76
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
77
+ return arr2;
78
+ }
79
+
80
+ function _unsupportedIterableToArray(o, minLen) {
81
+ if (!o) return;
82
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
83
+ var n = Object.prototype.toString.call(o).slice(8, -1);
84
+ if (n === "Object" && o.constructor) n = o.constructor.name;
85
+ if (n === "Map" || n === "Set") return Array.from(o);
86
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
87
+ }
88
+
89
+ function _nonIterableRest() {
90
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
91
+ }
92
+
93
+ function _slicedToArray(arr, i) {
94
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
95
+ }
96
+
97
+ function _extends$1() {
98
+ _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
99
+ for (var i = 1; i < arguments.length; i++) {
100
+ var source = arguments[i];
101
+ for (var key in source) {
102
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
103
+ target[key] = source[key];
104
+ }
105
+ }
106
+ }
107
+ return target;
108
+ };
109
+ return _extends$1.apply(this, arguments);
110
+ }
111
+
112
+ function _objectWithoutPropertiesLoose(source, excluded) {
113
+ if (source == null) return {};
114
+ var target = {};
115
+ var sourceKeys = Object.keys(source);
116
+ var key, i;
117
+ for (i = 0; i < sourceKeys.length; i++) {
118
+ key = sourceKeys[i];
119
+ if (excluded.indexOf(key) >= 0) continue;
120
+ target[key] = source[key];
121
+ }
122
+ return target;
123
+ }
124
+
125
+ function _objectWithoutProperties(source, excluded) {
126
+ if (source == null) return {};
127
+ var target = _objectWithoutPropertiesLoose(source, excluded);
128
+ var key, i;
129
+ if (Object.getOwnPropertySymbols) {
130
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
131
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
132
+ key = sourceSymbolKeys[i];
133
+ if (excluded.indexOf(key) >= 0) continue;
134
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
135
+ target[key] = source[key];
136
+ }
137
+ }
138
+ return target;
139
+ }
140
+
141
+ var _path, _path2, _g, _defs;
142
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
143
+ var SvgNeeto = function SvgNeeto(props) {
144
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends({
145
+ width: 50,
146
+ height: 50,
147
+ viewBox: "0 0 415 415",
148
+ fill: "none",
149
+ xmlns: "http://www.w3.org/2000/svg"
150
+ }, props), _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
151
+ d: "M414.989 207.495C414.989 92.899 322.091 0 207.495 0H0v414.989h414.989V207.495Z",
152
+ fill: "#0043AC"
153
+ })), /*#__PURE__*/React__namespace.createElement("mask", {
154
+ id: "neeto_svg__a",
155
+ style: {
156
+ maskType: "alpha"
157
+ },
158
+ maskUnits: "userSpaceOnUse",
159
+ x: 0,
160
+ y: 0,
161
+ width: 415,
162
+ height: 415
163
+ }, _path2 || (_path2 = /*#__PURE__*/React__namespace.createElement("path", {
164
+ d: "M414.989 207.495C414.989 92.899 322.091 0 207.495 0H0v414.989h414.989V207.495Z",
165
+ fill: "#0043AC"
166
+ }))), _g || (_g = /*#__PURE__*/React__namespace.createElement("g", {
167
+ mask: "url(#neeto_svg__a)"
168
+ }, /*#__PURE__*/React__namespace.createElement("path", {
169
+ d: "M233.747 348.74c88.579 101.145 172.015 116.411 202.661 111.401v32.491H-8.032V230.487c43.685-2.726 153.2 17.108 241.779 118.253Z",
170
+ fill: "url(#neeto_svg__b)"
171
+ }))), _defs || (_defs = /*#__PURE__*/React__namespace.createElement("defs", null, /*#__PURE__*/React__namespace.createElement("radialGradient", {
172
+ id: "neeto_svg__b",
173
+ cx: 0,
174
+ cy: 0,
175
+ r: 1,
176
+ gradientUnits: "userSpaceOnUse",
177
+ gradientTransform: "rotate(47.118 -220.556 214.818) scale(427.964 725.049)"
178
+ }, /*#__PURE__*/React__namespace.createElement("stop", {
179
+ stopColor: "#0043AC"
180
+ }), /*#__PURE__*/React__namespace.createElement("stop", {
181
+ offset: 1,
182
+ stopColor: "#3DB1CA",
183
+ stopOpacity: 0.8
184
+ })))));
185
+ };
186
+
187
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
188
+
189
+ var css = ".neeto-molecules-pageloader__wrapper{height:100%;position:relative;width:100%}.neeto-molecules-pageloader__wrapper .neeto-molecules-pageloader{height:100%;left:0;position:absolute;top:0;width:100%}.neeto-molecules-pageloader__wrapper .neeto-molecules-pageloader__content{height:66px;margin-bottom:16px;overflow:hidden;padding:8px;position:relative;width:66px}.neeto-molecules-pageloader__wrapper .neeto-molecules-pageloader__text{color:rgb(var(--neeto-ui-gray-800));font-size:1.25rem;line-height:1.75rem;margin-bottom:4rem;text-align:center}.neeto-molecules-pageloader__spinner{display:flex;gap:2px;height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.neeto-molecules-pageloader__spinner>div{animation:neeto-ui-stretch-delay 1.2s ease-in-out infinite;background-color:#fff;border-radius:2px;display:inline-flex;height:100%;width:2px}.neeto-molecules-pageloader__spinner .neeto-molecules-pageloader__rect2{animation-delay:-1.1s}.neeto-molecules-pageloader__spinner .neeto-molecules-pageloader__rect3{animation-delay:-1s}.neeto-molecules-pageloader__spinner .neeto-molecules-pageloader__rect4{animation-delay:-.9s}.neeto-molecules-pageloader__spinner .neeto-molecules-pageloader__rect5{animation-delay:-.8s}@keyframes neeto-ui-stretch-delay{0%,40%,to{transform:scaleY(.4);-webkit-transform:scaleY(.4)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}";
190
+ n(css,{});
191
+
192
+ var _excluded = ["text"];
193
+ var PageLoader = function PageLoader(_ref) {
194
+ var _ref$text = _ref.text,
195
+ text = _ref$text === void 0 ? "" : _ref$text,
196
+ otherProps = _objectWithoutProperties(_ref, _excluded);
197
+ return /*#__PURE__*/React__default["default"].createElement("div", _extends$1({
198
+ className: "neeto-molecules-pageloader__wrapper"
199
+ }, otherProps), /*#__PURE__*/React__default["default"].createElement("div", {
200
+ className: "neeto-molecules-pageloader neeto-ui-flex neeto-ui-flex-col neeto-ui-items-center neeto-ui-justify-center"
201
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
202
+ className: "neeto-molecules-pageloader__content neeto-ui-flex neeto-ui-flex-shrink-0 neeto-ui-items-center neeto-ui-justify-center",
203
+ "data-cy": "neeto-molecules-pageloader"
204
+ }, /*#__PURE__*/React__default["default"].createElement(SvgNeeto, {
205
+ className: "neeto-molecules-pageloader__logo",
206
+ size: 50
207
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
208
+ className: "neeto-molecules-pageloader__spinner"
209
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
210
+ className: "neeto-molecules-pageloader__rect1"
211
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
212
+ className: "neeto-molecules-pageloader__rect2"
213
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
214
+ className: "neeto-molecules-pageloader__rect3"
215
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
216
+ className: "neeto-molecules-pageloader__rect4"
217
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
218
+ className: "neeto-molecules-pageloader__rect5"
219
+ }))), text && /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
220
+ style: "h5",
221
+ weight: "semibold"
222
+ }, text)));
223
+ };
224
+ var PageLoader$1 = /*#__PURE__*/React__default["default"].memo(PageLoader);
225
+
226
+ // We need to apply a transformation for the label. Hence disabling this lint warning.
227
+ // eslint-disable-next-line @bigbinary/neeto/use-functions-and-hooks-from-neeto-commons-frontend
228
+ var toLabelAndValue = function toLabelAndValue(value) {
229
+ return {
230
+ label: humanizeIpAddressFormat(value),
231
+ value: value
232
+ };
233
+ };
234
+ var isValidIPv4String = function isValidIPv4String(ip) {
235
+ return ramda.isNotNil(ip) && ipNum.Validator.isValidIPv4String(ip)[0];
236
+ };
237
+ var isValidIPv6String = function isValidIPv6String(ip) {
238
+ return ramda.isNotNil(ip) && ipNum.Validator.isValidIPv6String(ip)[0];
239
+ };
240
+ var isValidIpString = function isValidIpString(ip) {
241
+ return isValidIPv4String(ip) || isValidIPv6String(ip);
242
+ };
243
+ var areIpAddressesInSameFormat = function areIpAddressesInSameFormat(ipStart, ipEnd) {
244
+ return isValidIPv4String(ipStart) && isValidIPv4String(ipEnd) || isValidIPv6String(ipStart) && isValidIPv6String(ipEnd);
245
+ };
246
+ var isValidIPv4Range = function isValidIPv4Range(ipStart, ipEnd) {
247
+ var ipStartAddr = ipNum.IPv4.fromDecimalDottedString(ipStart);
248
+ var ipEndAddr = ipNum.IPv4.fromDecimalDottedString(ipEnd);
249
+ return ipStartAddr.isLessThanOrEquals(ipEndAddr);
250
+ };
251
+ var isValidIPv6Range = function isValidIPv6Range(ipStart, ipEnd) {
252
+ var ipStartAddr = ipNum.IPv6.fromString(ipStart);
253
+ var ipEndAddr = ipNum.IPv6.fromString(ipEnd);
254
+ return ipStartAddr.isLessThanOrEquals(ipEndAddr);
255
+ };
256
+ var isValidIPRange = function isValidIPRange(ipStart, ipEnd) {
257
+ if (isValidIPv4String(ipStart) && isValidIPv4String(ipEnd)) {
258
+ return isValidIPv4Range(ipStart, ipEnd);
259
+ }
260
+ if (isValidIPv6String(ipStart) && isValidIPv6String(ipEnd)) {
261
+ return isValidIPv6Range(ipStart, ipEnd);
262
+ }
263
+ return false;
264
+ };
265
+ yup__namespace.addMethod(yup__namespace.string, "validIp", function (errorMessage) {
266
+ return this.test("valid-ip", errorMessage, function (value) {
267
+ if (ramda.isNil(value)) {
268
+ return this;
269
+ }
270
+ var isValidIp = isValidIpString(value);
271
+ return isValidIp || this.createError({
272
+ path: this.path,
273
+ message: errorMessage
274
+ });
275
+ });
276
+ });
277
+ var getIpRestrictionValidationSchema = function getIpRestrictionValidationSchema() {
278
+ return yup__namespace.object().shape({
279
+ ipStart: yup__namespace.string().validIp(i18next.t("neetoMolecules.ipRestriction.validations.invalidIp")).required(i18next.t("neetoMolecules.ipRestriction.validations.ipStartRequired")),
280
+ ipEnd: yup__namespace.string().validIp(i18next.t("neetoMolecules.ipRestriction.validations.invalidIp")).when("ipStart", function (ipStart, schema) {
281
+ return schema.test({
282
+ test: function test(ipEnd) {
283
+ return areIpAddressesInSameFormat(ipStart, ipEnd);
284
+ },
285
+ message: i18next.t("neetoMolecules.ipRestriction.validations.eitherIpv4OrIpv6")
286
+ });
287
+ }).when("ipStart", function (ipStart, schema) {
288
+ return schema.test({
289
+ test: function test(ipEnd) {
290
+ return isValidIPRange(ipStart, ipEnd);
291
+ },
292
+ message: i18next.t("neetoMolecules.ipRestriction.validations.ipEndGreaterThanIpStart")
293
+ });
294
+ }).required(i18next.t("neetoMolecules.ipRestriction.validations.ipEndRequired")),
295
+ addressType: yup__namespace.object().shape({
296
+ value: yup__namespace.string().required(),
297
+ label: yup__namespace.string().required()
298
+ }).nullable().required(i18next.t("neetoMolecules.ipRestriction.validations.addressTypeRequired"))
299
+ });
300
+ };
301
+ var humanizeIpAddressFormat = function humanizeIpAddressFormat(addressFormat) {
302
+ var addressFormats = {
303
+ ipv4: "IPv4",
304
+ ipv6: "IPv6"
305
+ };
306
+ return addressFormats[addressFormat];
307
+ };
308
+ var buildInitialValue = function buildInitialValue(isIpRestrictionEnabled, allowedIpRanges) {
309
+ return {
310
+ ipRestriction: isIpRestrictionEnabled,
311
+ allowedIpRanges: buildAllowedIpRangesFormData(allowedIpRanges)
312
+ };
313
+ };
314
+ var buildAllowedIpRangesFormData = function buildAllowedIpRangesFormData(allowedIpRanges) {
315
+ return allowedIpRanges.map(function (allowedIpRange) {
316
+ return ramda.assoc("addressType", toLabelAndValue(allowedIpRange.addressType), allowedIpRange);
317
+ });
318
+ };
319
+ var buildIpRestrictionPayload = function buildIpRestrictionPayload(values) {
320
+ var allowedIpRangesWithTransformedAddressType = values.allowedIpRanges.map(function (allowedIpRange) {
321
+ return ramda.assoc("addressType", allowedIpRange.addressType.value, allowedIpRange);
322
+ });
323
+ return {
324
+ isIpRestrictionEnabled: values.ipRestriction,
325
+ allowedIpRanges: allowedIpRangesWithTransformedAddressType
326
+ };
327
+ };
328
+
329
+ var IP_RESTRICTIONS_ENGINE_BASE_URL = "/ip_restrictions/api/v1";
330
+ var QUERY_KEYS = {
331
+ IP_RESTRICTION: "IP_RESTRICTION",
332
+ ALLOWED_IP_RANGES: "ALLOWED_IP_RANGES",
333
+ CURRENT_IP: "CURRENT_IP"
334
+ };
335
+ var ADDRESS_TYPE_SELECT_OPTIONS = [{
336
+ label: i18next.t("neetoMolecules.ipRestriction.ipv4"),
337
+ value: "ipv4"
338
+ }, {
339
+ label: i18next.t("neetoMolecules.ipRestriction.ipv6"),
340
+ value: "ipv6"
341
+ }];
342
+ ({
343
+ ipStart: "",
344
+ ipEnd: "",
345
+ addressType: ADDRESS_TYPE_SELECT_OPTIONS[0].value
346
+ });
347
+ var VALIDATION_SCHEMA = yup__namespace.object().shape({
348
+ ipRestriction: yup__namespace["boolean"](),
349
+ allowedIpRanges: yup__namespace.array().of(getIpRestrictionValidationSchema())
350
+ });
351
+ var NEW_ALLOWED_IP_RANGE = {
352
+ ipStart: "",
353
+ ipEnd: "",
354
+ addressType: null,
355
+ createdAt: new Date().toISOString()
356
+ };
357
+
358
+ var AllowedIpRange = reactUtils.withT(function (_ref) {
359
+ var t = _ref.t,
360
+ index = _ref.index,
361
+ arrayHelpers = _ref.arrayHelpers;
362
+ return /*#__PURE__*/React__default["default"].createElement("div", {
363
+ className: "neeto-ui-bg-white neeto-ui-rounded-lg grid grid-cols-2 gap-4 p-3 sm:grid-cols-12"
364
+ }, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
365
+ className: "col-span-1 text-left sm:col-span-4",
366
+ "data-cy": "ip-start-text-field",
367
+ label: t("neetoMolecules.ipRestriction.ipStart"),
368
+ labelProps: {
369
+ className: "sm:hidden"
370
+ },
371
+ name: "allowedIpRanges.".concat(index, ".ipStart"),
372
+ placeholder: t("neetoMolecules.ipRestriction.ipStart")
373
+ }), /*#__PURE__*/React__default["default"].createElement(formik.Input, {
374
+ className: "col-span-1 text-left sm:col-span-4",
375
+ "data-cy": "ip-end-text-field",
376
+ label: t("neetoMolecules.ipRestriction.ipEnd"),
377
+ labelProps: {
378
+ className: "sm:hidden"
379
+ },
380
+ name: "allowedIpRanges.".concat(index, ".ipEnd"),
381
+ placeholder: t("neetoMolecules.ipRestriction.ipEnd")
382
+ }), /*#__PURE__*/React__default["default"].createElement(formik.Select, {
383
+ className: "col-span-1 text-left sm:col-span-2",
384
+ "data-testid": "address-type-select-field",
385
+ label: t("neetoMolecules.ipRestriction.type"),
386
+ labelProps: {
387
+ className: "sm:hidden"
388
+ },
389
+ name: "allowedIpRanges.".concat(index, ".addressType"),
390
+ options: ADDRESS_TYPE_SELECT_OPTIONS
391
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
392
+ className: "col-span-1 flex sm:col-span-2 sm:justify-center"
393
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
394
+ className: "mt-auto sm:mt-0",
395
+ "data-testid": "allowed-ip-range-delete-btn",
396
+ icon: neetoIcons.Delete,
397
+ style: "text",
398
+ tooltipProps: {
399
+ content: t("neetoMolecules.common.actions.discard"),
400
+ position: "top"
401
+ },
402
+ onClick: function onClick() {
403
+ return arrayHelpers.remove(index);
404
+ }
405
+ })));
406
+ });
407
+
408
+ var AllowedIpRanges = reactUtils.withT(function (_ref) {
409
+ var t = _ref.t;
410
+ return /*#__PURE__*/React__default["default"].createElement("div", {
411
+ className: "space-y-6",
412
+ "data-cy": "allowed-ip-range-container"
413
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
414
+ "data-cy": "allowed-ip-range-heading",
415
+ style: "h4"
416
+ }, t("neetoMolecules.ipRestriction.allowedIpRangeTitle")), /*#__PURE__*/React__default["default"].createElement("div", {
417
+ className: "space-y-4"
418
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
419
+ className: "hidden grid-cols-12 gap-4 px-3 sm:grid"
420
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
421
+ className: "neeto-ui-text-gray-700 col-span-4 uppercase",
422
+ style: "h6"
423
+ }, t("neetoMolecules.ipRestriction.ipStart"), "*"), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
424
+ className: "neeto-ui-text-gray-700 col-span-4 uppercase",
425
+ style: "h6"
426
+ }, t("neetoMolecules.ipRestriction.ipEnd"), "*"), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
427
+ className: "neeto-ui-text-gray-700 col-span-2 uppercase",
428
+ style: "h6"
429
+ }, t("neetoMolecules.ipRestriction.type"), "*"), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
430
+ className: "neeto-ui-text-gray-700 col-span-2 text-center uppercase",
431
+ style: "h6"
432
+ }, t("neetoMolecules.ipRestriction.actions"))), /*#__PURE__*/React__default["default"].createElement("div", {
433
+ className: "w-full space-y-2"
434
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.FieldArray, {
435
+ name: "allowedIpRanges"
436
+ }, function (arrayHelpers) {
437
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, arrayHelpers.form.values.allowedIpRanges.map(function (allowedIpRange, index) {
438
+ return /*#__PURE__*/React__default["default"].createElement(AllowedIpRange, {
439
+ allowedIpRange: allowedIpRange,
440
+ arrayHelpers: arrayHelpers,
441
+ index: index,
442
+ key: allowedIpRange.createdAt
443
+ });
444
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
445
+ "data-cy": "add-allowed-ip-range-button",
446
+ label: t("neetoMolecules.ipRestriction.addNew"),
447
+ style: "link",
448
+ onClick: function onClick() {
449
+ return arrayHelpers.push(NEW_ALLOWED_IP_RANGE);
450
+ }
451
+ }));
452
+ }))));
453
+ });
454
+ var AllowedIpRanges$1 = /*#__PURE__*/React__default["default"].memo(AllowedIpRanges);
455
+
456
+ var show$1 = function show(params) {
457
+ return axios__default["default"].get("".concat(IP_RESTRICTIONS_ENGINE_BASE_URL, "/current_ip"), {
458
+ params: params
459
+ });
460
+ };
461
+ var currentIpApi = {
462
+ show: show$1
463
+ };
464
+
465
+ var CURRENT_IP = QUERY_KEYS.CURRENT_IP;
466
+ var useShowCurrentIp = function useShowCurrentIp() {
467
+ return reactQuery.useQuery([CURRENT_IP], function () {
468
+ return currentIpApi.show();
469
+ });
470
+ };
471
+
472
+ var CurrentIp = function CurrentIp() {
473
+ var _useShowCurrentIp = useShowCurrentIp(),
474
+ data = _useShowCurrentIp.data,
475
+ isLoading = _useShowCurrentIp.isLoading;
476
+ return /*#__PURE__*/React__default["default"].createElement("div", {
477
+ className: "flex flex-wrap items-baseline gap-1",
478
+ "data-cy": "current-ip-container"
479
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, null, /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
480
+ i18nKey: "neetoMolecules.ipRestriction.currentIpMessage",
481
+ values: {
482
+ ip: isLoading ? "..." : data.ip
483
+ }
484
+ })));
485
+ };
486
+ var CurrentIp$1 = /*#__PURE__*/React__default["default"].memo(CurrentIp);
487
+
488
+ var allowedIpRangesUrl = "".concat(IP_RESTRICTIONS_ENGINE_BASE_URL, "/allowed_ips");
489
+ var fetch = function fetch() {
490
+ return axios__default["default"].get(allowedIpRangesUrl);
491
+ };
492
+ var create = function create(payload) {
493
+ return axios__default["default"].post(allowedIpRangesUrl, {
494
+ allowedIpRange: payload
495
+ });
496
+ };
497
+ var destroy = function destroy(id) {
498
+ return axios__default["default"]["delete"]("".concat(allowedIpRangesUrl, "/").concat(id));
499
+ };
500
+ var update$1 = function update(_ref) {
501
+ var id = _ref.id,
502
+ payload = _ref.payload;
503
+ return axios__default["default"].patch("".concat(allowedIpRangesUrl, "/").concat(id), {
504
+ allowedIpRange: payload
505
+ });
506
+ };
507
+ var allowedIpRangesApi = {
508
+ fetch: fetch,
509
+ create: create,
510
+ destroy: destroy,
511
+ update: update$1
512
+ };
513
+
514
+ var ALLOWED_IP_RANGES$1 = QUERY_KEYS.ALLOWED_IP_RANGES;
515
+ var useFetchAllowedIpRanges = function useFetchAllowedIpRanges(options) {
516
+ return reactQuery.useQuery([ALLOWED_IP_RANGES$1], function () {
517
+ return allowedIpRangesApi.fetch();
518
+ }, options);
519
+ };
520
+
521
+ var ipRestrictionUrl = "".concat(IP_RESTRICTIONS_ENGINE_BASE_URL, "/ip_restriction");
522
+ var update = function update(params) {
523
+ return axios__default["default"].patch(ipRestrictionUrl, {
524
+ ipRestriction: params
525
+ });
526
+ };
527
+ var show = function show() {
528
+ return axios__default["default"].get(ipRestrictionUrl);
529
+ };
530
+ var ipRestrictionApi = {
531
+ update: update,
532
+ show: show
533
+ };
534
+
535
+ var IP_RESTRICTION = QUERY_KEYS.IP_RESTRICTION,
536
+ ALLOWED_IP_RANGES = QUERY_KEYS.ALLOWED_IP_RANGES;
537
+ var useShowIpRestriction = function useShowIpRestriction() {
538
+ return reactQuery.useQuery([IP_RESTRICTION], function () {
539
+ return ipRestrictionApi.show();
540
+ });
541
+ };
542
+ var useUpdateIpRestriction = function useUpdateIpRestriction() {
543
+ return reactUtils.useMutationWithInvalidation(ipRestrictionApi.update, {
544
+ keysToInvalidate: [IP_RESTRICTION, ALLOWED_IP_RANGES]
545
+ });
546
+ };
547
+
548
+ var IpRestriction = function IpRestriction() {
549
+ var _useTranslation = reactI18next.useTranslation(),
550
+ t = _useTranslation.t;
551
+ var _useState = React.useState(false),
552
+ _useState2 = _slicedToArray(_useState, 2),
553
+ isAlertOpen = _useState2[0],
554
+ setIsAlertOpen = _useState2[1];
555
+ var _useShowIpRestriction = useShowIpRestriction(),
556
+ _useShowIpRestriction2 = _useShowIpRestriction.data,
557
+ _useShowIpRestriction3 = _useShowIpRestriction2 === void 0 ? {} : _useShowIpRestriction2,
558
+ isIpRestrictionEnabled = _useShowIpRestriction3.isIpRestrictionEnabled,
559
+ isFetchingIpRestriction = _useShowIpRestriction.isLoading;
560
+ var _useFetchAllowedIpRan = useFetchAllowedIpRanges({
561
+ enabled: isIpRestrictionEnabled
562
+ }),
563
+ allowedIpRanges = _useFetchAllowedIpRan.data,
564
+ isFetchingAllowedIpRanges = _useFetchAllowedIpRan.isLoading,
565
+ isRefetching = _useFetchAllowedIpRan.isRefetching;
566
+ var _useUpdateIpRestricti = useUpdateIpRestriction(),
567
+ updateIpRestriction = _useUpdateIpRestricti.mutate,
568
+ isUpdating = _useUpdateIpRestricti.isLoading;
569
+ if (isFetchingIpRestriction || isFetchingAllowedIpRanges || isRefetching) {
570
+ return /*#__PURE__*/React__default["default"].createElement("div", {
571
+ className: "h-screen"
572
+ }, /*#__PURE__*/React__default["default"].createElement(PageLoader$1, null));
573
+ }
574
+ var handleSubmit = function handleSubmit(values, formikBag) {
575
+ if (values.ipRestriction) setIsAlertOpen(true);else handleUpdateIpRestriction(values, formikBag);
576
+ };
577
+ var handleCloseAlert = function handleCloseAlert(setSubmitting) {
578
+ setIsAlertOpen(false);
579
+ setSubmitting(false);
580
+ };
581
+ var handleUpdateIpRestriction = function handleUpdateIpRestriction(values, _ref) {
582
+ var setSubmitting = _ref.setSubmitting,
583
+ resetForm = _ref.resetForm;
584
+ updateIpRestriction(buildIpRestrictionPayload(values), {
585
+ onSuccess: function onSuccess() {
586
+ setIsAlertOpen(false);
587
+ setSubmitting(false);
588
+ resetForm({
589
+ values: values
590
+ });
591
+ },
592
+ onError: function onError() {
593
+ setIsAlertOpen(false);
594
+ setSubmitting(false);
595
+ }
596
+ });
597
+ };
598
+ return /*#__PURE__*/React__default["default"].createElement(formik.Form, {
599
+ className: "mx-auto mb-4 w-full sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl",
600
+ formikProps: {
601
+ initialValues: buildInitialValue(isIpRestrictionEnabled, allowedIpRanges),
602
+ validationSchema: VALIDATION_SCHEMA,
603
+ validateOnBlur: true,
604
+ enableReinitialize: true,
605
+ onSubmit: handleSubmit
606
+ }
607
+ }, function (_ref2) {
608
+ var values = _ref2.values,
609
+ dirty = _ref2.dirty,
610
+ setFieldValue = _ref2.setFieldValue,
611
+ resetForm = _ref2.resetForm,
612
+ setSubmitting = _ref2.setSubmitting;
613
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(formik.BlockNavigation, null), /*#__PURE__*/React__default["default"].createElement("div", {
614
+ className: "neeto-ui-bg-white neeto-ui-border-gray-200 neeto-ui-rounded-lg mx-auto mb-4 w-full overflow-hidden border sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl",
615
+ "data-cy": "ip-restrictions-card"
616
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
617
+ className: "space-y-2 p-6"
618
+ }, /*#__PURE__*/React__default["default"].createElement(formik.Checkbox, {
619
+ checked: values.ipRestriction,
620
+ className: "flex-grow-0",
621
+ "data-cy": "enable-ip-restriction-checkbox",
622
+ disabled: isFetchingIpRestriction || isUpdating,
623
+ name: "ipRestriction",
624
+ label: /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
625
+ style: "h3"
626
+ }, t("neetoMolecules.ipRestriction.switchLabel")),
627
+ onChange: function onChange() {
628
+ return setFieldValue("ipRestriction", !values.ipRestriction);
629
+ }
630
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
631
+ "data-cy": "ip-restriction-description",
632
+ style: "body2"
633
+ }, t("neetoMolecules.ipRestriction.description"))), values.ipRestriction && /*#__PURE__*/React__default["default"].createElement("div", {
634
+ className: "neeto-ui-bg-gray-100 w-full space-y-6 p-6"
635
+ }, /*#__PURE__*/React__default["default"].createElement(CurrentIp$1, null), /*#__PURE__*/React__default["default"].createElement(AllowedIpRanges$1, null), /*#__PURE__*/React__default["default"].createElement(neetoui.Callout, {
636
+ style: "warning"
637
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
638
+ className: "leading-2 block whitespace-pre-wrap py-1"
639
+ }, /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
640
+ i18nKey: "neetoMolecules.ipRestriction.warningMessage"
641
+ }))))), /*#__PURE__*/React__default["default"].createElement("div", {
642
+ className: "flex flex-wrap items-center justify-between gap-4"
643
+ }, dirty && /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
644
+ className: "neeto-ui-text-error-500",
645
+ style: "body2"
646
+ }, t("neetoMolecules.ipRestriction.validations.unsavedChanges")), /*#__PURE__*/React__default["default"].createElement("div", {
647
+ className: "ml-auto flex justify-between"
648
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
649
+ className: "mr-2",
650
+ disabled: !dirty,
651
+ label: t("neetoMolecules.common.actions.reset"),
652
+ style: "secondary",
653
+ type: "reset",
654
+ onClick: resetForm
655
+ }), /*#__PURE__*/React__default["default"].createElement(formik.Button, {
656
+ "data-cy": "ip-restriction-save-changes",
657
+ "data-testid": "save-changes-button",
658
+ isLoading: isUpdating,
659
+ type: "submit"
660
+ }, t("neetoMolecules.common.actions.saveChanges")))), /*#__PURE__*/React__default["default"].createElement(neetoui.Alert, {
661
+ isOpen: isAlertOpen,
662
+ isSubmitting: isUpdating,
663
+ title: t("neetoMolecules.ipRestriction.enableAlert.title"),
664
+ message: /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
665
+ i18nKey: "neetoMolecules.ipRestriction.enableAlert.message"
666
+ }),
667
+ submitButtonLabel: t("neetoMolecules.ipRestriction.enableAlert.submitButtonLabel"),
668
+ onClose: function onClose() {
669
+ return handleCloseAlert(setSubmitting);
670
+ },
671
+ onSubmit: function onSubmit() {
672
+ return handleUpdateIpRestriction(values, {
673
+ setSubmitting: setSubmitting,
674
+ resetForm: resetForm
675
+ });
676
+ }
677
+ }));
678
+ });
679
+ };
680
+ var index = /*#__PURE__*/React__default["default"].memo(IpRestriction);
681
+
682
+ module.exports = index;
683
+ //# sourceMappingURL=IpRestriction.js.map