@commercetools-frontend-extensions/import-resources-modal 0.0.0-bw-test-preview-deploy-20250115163227

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 (58) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +76 -0
  3. package/dist/active-drag-drop-area-373d643b.cjs.prod.js +62 -0
  4. package/dist/active-drag-drop-area-4dc1357c.esm.js +60 -0
  5. package/dist/active-drag-drop-area-89acd82d.cjs.dev.js +62 -0
  6. package/dist/commercetools-frontend-extensions-import-resources-modal.cjs.d.ts +3 -0
  7. package/dist/commercetools-frontend-extensions-import-resources-modal.cjs.dev.js +61 -0
  8. package/dist/commercetools-frontend-extensions-import-resources-modal.cjs.js +7 -0
  9. package/dist/commercetools-frontend-extensions-import-resources-modal.cjs.prod.js +61 -0
  10. package/dist/commercetools-frontend-extensions-import-resources-modal.esm.js +52 -0
  11. package/dist/de-22a8eb66.cjs.prod.js +246 -0
  12. package/dist/de-3d74f145.esm.js +244 -0
  13. package/dist/de-fd3b70e4.cjs.dev.js +246 -0
  14. package/dist/declarations/src/@hooks/index.d.ts +3 -0
  15. package/dist/declarations/src/@hooks/use-import-permission.d.ts +7 -0
  16. package/dist/declarations/src/@hooks/use-import-resources-context.d.ts +1 -0
  17. package/dist/declarations/src/@hooks/use-upload.d.ts +3 -0
  18. package/dist/declarations/src/@types/api.d.ts +13 -0
  19. package/dist/declarations/src/@types/basic-error-data-type.d.ts +5 -0
  20. package/dist/declarations/src/@types/current-step.d.ts +6 -0
  21. package/dist/declarations/src/@types/file-upload.d.ts +63 -0
  22. package/dist/declarations/src/@types/import-container.d.ts +34 -0
  23. package/dist/declarations/src/@types/import-resources-modal-props.d.ts +7 -0
  24. package/dist/declarations/src/@types/import-states.d.ts +9 -0
  25. package/dist/declarations/src/@types/import-summary.d.ts +12 -0
  26. package/dist/declarations/src/@types/index.d.ts +10 -0
  27. package/dist/declarations/src/@types/resource-type.d.ts +1 -0
  28. package/dist/declarations/src/@types/shared.d.ts +7 -0
  29. package/dist/declarations/src/import-resources-modal.d.ts +6 -0
  30. package/dist/declarations/src/index.d.ts +3 -0
  31. package/dist/disabled-drop-area-2c088477.esm.js +37 -0
  32. package/dist/disabled-drop-area-99c1fa0b.cjs.prod.js +50 -0
  33. package/dist/disabled-drop-area-aa78075b.cjs.dev.js +50 -0
  34. package/dist/en-2d941c45.esm.js +244 -0
  35. package/dist/en-c12caec6.cjs.dev.js +246 -0
  36. package/dist/en-c80bec2f.cjs.prod.js +246 -0
  37. package/dist/enabled-drop-area-86d22a1c.cjs.prod.js +123 -0
  38. package/dist/enabled-drop-area-a65a870a.cjs.dev.js +123 -0
  39. package/dist/enabled-drop-area-dd70e62e.esm.js +110 -0
  40. package/dist/es-01b24cea.cjs.prod.js +246 -0
  41. package/dist/es-561e774f.esm.js +244 -0
  42. package/dist/es-a45120de.cjs.dev.js +246 -0
  43. package/dist/file-dropped-area-741b7c1f.cjs.dev.js +82 -0
  44. package/dist/file-dropped-area-967a82f7.esm.js +80 -0
  45. package/dist/file-dropped-area-a5e8e576.cjs.prod.js +82 -0
  46. package/dist/fr-FR-1c33adf1.esm.js +244 -0
  47. package/dist/fr-FR-2a0f5518.cjs.prod.js +246 -0
  48. package/dist/fr-FR-d51f6a8e.cjs.dev.js +246 -0
  49. package/dist/index-8cca2fab.cjs.prod.js +2239 -0
  50. package/dist/index-ca3e541b.cjs.dev.js +2266 -0
  51. package/dist/index-e6460364.esm.js +2232 -0
  52. package/dist/ja-37632763.cjs.prod.js +6 -0
  53. package/dist/ja-73c088a7.esm.js +4 -0
  54. package/dist/ja-9bd5f452.cjs.dev.js +6 -0
  55. package/dist/pt-BR-6b7a389e.cjs.prod.js +246 -0
  56. package/dist/pt-BR-8b999c2f.cjs.dev.js +246 -0
  57. package/dist/pt-BR-c09d735f.esm.js +244 -0
  58. package/package.json +93 -0
@@ -0,0 +1,2266 @@
1
+ 'use strict';
2
+
3
+ var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
4
+ var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
5
+ var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
6
+ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
7
+ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
8
+ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
9
+ var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
10
+ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
11
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
12
+ var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
13
+ var reactIntl = require('react-intl');
14
+ var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
15
+ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
16
+ var React = require('react');
17
+ var sdk = require('@commercetools-frontend/sdk');
18
+ var constants = require('@commercetools-frontend/constants');
19
+ var applicationShell = require('@commercetools-frontend/application-shell');
20
+ var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
21
+ var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
22
+ var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
23
+ var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
24
+ var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
25
+ var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
26
+ var _wrapNativeSuper = require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
27
+ var pluralize = require('pluralize');
28
+ var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
29
+ var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
30
+ var _flatMapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat-map');
31
+ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
32
+ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
33
+ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
34
+ var Papa = require('papaparse');
35
+ var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
36
+ var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
37
+ var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
38
+ require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
39
+ require('@babel/runtime-corejs3/core-js-stable/url-search-params');
40
+ require('@babel/runtime-corejs3/core-js-stable/object/entries');
41
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
42
+ var applicationComponents = require('@commercetools-frontend/application-components');
43
+ var fullstory = require('@commercetools-frontend/fullstory');
44
+ var uiKit = require('@commercetools-frontend/ui-kit');
45
+ var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
46
+ var reactDropzone = require('react-dropzone');
47
+ var actionsGlobal = require('@commercetools-frontend/actions-global');
48
+ var _styled = require('@emotion/styled/base');
49
+ var react = require('@emotion/react');
50
+ var sentry = require('@commercetools-frontend/sentry');
51
+ var permissions = require('@commercetools-frontend/permissions');
52
+ var DataTable = require('@commercetools-uikit/data-table');
53
+ var i18n = require('@commercetools-frontend/i18n');
54
+
55
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
56
+
57
+ var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
58
+ var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
59
+ var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
60
+ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
61
+ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
62
+ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
63
+ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
64
+ var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
65
+ var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
66
+ var React__default = /*#__PURE__*/_interopDefault(React);
67
+ var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
68
+ var _Promise__default = /*#__PURE__*/_interopDefault(_Promise);
69
+ var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
70
+ var _flatMapInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatMapInstanceProperty);
71
+ var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
72
+ var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
73
+ var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
74
+ var Papa__default = /*#__PURE__*/_interopDefault(Papa);
75
+ var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
76
+ var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
77
+ var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
78
+ var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
79
+ var _styled__default = /*#__PURE__*/_interopDefault(_styled);
80
+ var DataTable__default = /*#__PURE__*/_interopDefault(DataTable);
81
+
82
+ const EnabledResourceType = {
83
+ category: true,
84
+ product: true,
85
+ inventory: true,
86
+ 'discount-code': true,
87
+ customer: false,
88
+ order: false,
89
+ 'product-type': false
90
+ };
91
+ function isResourceType(maybeResourceType) {
92
+ return typeof maybeResourceType === 'string' && maybeResourceType in EnabledResourceType;
93
+ }
94
+ function assertResourceType(maybeResourceType) {
95
+ if (isResourceType(maybeResourceType)) return;
96
+ throw new Error(`Invalid value: ${maybeResourceType}`);
97
+ }
98
+ function isError(maybeError) {
99
+ if (maybeError instanceof Error) return true;
100
+ return false;
101
+ }
102
+
103
+ // eslint-disable-next-line @typescript-eslint/ban-types
104
+ function hasOwnProperty(obj, prop) {
105
+ return typeof obj === 'object' && obj !== null && obj.hasOwnProperty(prop);
106
+ }
107
+ function hasRequiredFields(maybeValidObject, requiredFields) {
108
+ return typeof maybeValidObject === 'object' && maybeValidObject !== null && _everyInstanceProperty__default["default"](requiredFields).call(requiredFields, property => hasOwnProperty(maybeValidObject, property));
109
+ }
110
+
111
+ let CurrentStep$1 = /*#__PURE__*/function (CurrentStep) {
112
+ CurrentStep["Upload"] = "upload";
113
+ CurrentStep["Uploading"] = "uploading";
114
+ CurrentStep["UploadResult"] = "upload-result";
115
+ CurrentStep["ImportConfirmationModal"] = "import-confirmation-modal";
116
+ return CurrentStep;
117
+ }({});
118
+
119
+ function ownKeys$i(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
120
+ function _objectSpread$i(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$i(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$i(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
121
+
122
+ // TODO: make this resource type specific
123
+
124
+ function reducer(state, action) {
125
+ if (action.type === 'setCurrentStep') return _objectSpread$i(_objectSpread$i({}, state), {}, {
126
+ currentStep: action.currentStep,
127
+ progress: 0
128
+ });
129
+ if (action.type === 'setUploadFileResponse') return _objectSpread$i(_objectSpread$i({}, state), {}, {
130
+ uploadFileResponse: action.uploadFileResponse
131
+ });
132
+ if (action.type === 'setResourceType') return _objectSpread$i(_objectSpread$i({}, state), {}, {
133
+ settings: undefined,
134
+ resourceType: action.resourceType
135
+ });
136
+ if (action.type === 'setContainerKey') return _objectSpread$i(_objectSpread$i({}, state), {}, {
137
+ containerKey: action.containerKey
138
+ });
139
+ if (action.type === 'cancelImport') return _objectSpread$i(_objectSpread$i({}, state), {}, {
140
+ currentStep: CurrentStep$1.Upload,
141
+ containerKey: undefined,
142
+ fileUploadErrors: [],
143
+ uploadFileResponse: undefined,
144
+ droppedFile: undefined,
145
+ dropAreaState: 'disabled',
146
+ progress: 0
147
+ });
148
+ if (action.type === 'uploadNewFile') return _objectSpread$i(_objectSpread$i({}, state), {}, {
149
+ currentStep: CurrentStep$1.Upload,
150
+ containerKey: undefined,
151
+ fileUploadErrors: [],
152
+ uploadFileResponse: undefined,
153
+ droppedFile: undefined,
154
+ dropAreaState: 'ready-for-drop',
155
+ progress: 0
156
+ });
157
+ if (action.type === 'setDroppedFile') {
158
+ return _objectSpread$i(_objectSpread$i({}, state), {}, {
159
+ droppedFile: action.droppedFile
160
+ });
161
+ }
162
+ if (action.type === 'setFileUploadErrors') {
163
+ return _objectSpread$i(_objectSpread$i({}, state), {}, {
164
+ fileUploadErrors: action.fileUploadErrors
165
+ });
166
+ }
167
+ if (action.type === 'setAbortController') {
168
+ return _objectSpread$i(_objectSpread$i({}, state), {}, {
169
+ abortController: action.abortController
170
+ });
171
+ }
172
+ if (action.type === 'setProgress') {
173
+ return _objectSpread$i(_objectSpread$i({}, state), {}, {
174
+ progress: action.progress
175
+ });
176
+ }
177
+ if (action.type === 'setUploadSettings') {
178
+ return _objectSpread$i(_objectSpread$i({}, state), {}, {
179
+ settings: _objectSpread$i(_objectSpread$i({}, state.settings), action.settings)
180
+ });
181
+ }
182
+ throw new Error(getUnknownActionError(action));
183
+ }
184
+ function getUnknownActionError(actionType) {
185
+ return `Unkown type: ${actionType}`;
186
+ }
187
+ const initialState = {
188
+ currentStep: CurrentStep$1.Upload,
189
+ abortController: new AbortController(),
190
+ dropAreaState: 'disabled',
191
+ uploadFileResponse: undefined,
192
+ fileUploadErrors: [],
193
+ resourceType: 'category',
194
+ containerKey: undefined,
195
+ progress: 0
196
+ };
197
+
198
+ function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
199
+ function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function () { return !!t; })(); }
200
+ let MissingImportResourceProviderError = /*#__PURE__*/function (_Error) {
201
+ function MissingImportResourceProviderError() {
202
+ var _this;
203
+ _classCallCheck(this, MissingImportResourceProviderError);
204
+ _this = _callSuper$2(this, MissingImportResourceProviderError, ['useImportResourcesContext must be used within ImportResourcesProvider']);
205
+ _this.name = 'MissingImportResourceProviderError';
206
+ return _this;
207
+ }
208
+ _inherits(MissingImportResourceProviderError, _Error);
209
+ return _createClass(MissingImportResourceProviderError);
210
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
211
+
212
+ function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
213
+ function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function () { return !!t; })(); }
214
+ let UnexpectedColumnError = /*#__PURE__*/function (_Error) {
215
+ function UnexpectedColumnError(columnName) {
216
+ var _this;
217
+ _classCallCheck(this, UnexpectedColumnError);
218
+ _this = _callSuper$1(this, UnexpectedColumnError, [`Unexpected column "${columnName}"`]);
219
+ _this.name = 'UnexpectedColumnError';
220
+ return _this;
221
+ }
222
+ _inherits(UnexpectedColumnError, _Error);
223
+ return _createClass(UnexpectedColumnError);
224
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
225
+
226
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
227
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
228
+ let HttpError = /*#__PURE__*/function (_Error) {
229
+ function HttpError(statusCode, statusText, errorData) {
230
+ var _this;
231
+ _classCallCheck(this, HttpError);
232
+ _this = _callSuper(this, HttpError, [`HTTP Error! Status code: ${statusCode}, message: "${statusText ? statusText : ''}"`]);
233
+ _this.statusCode = void 0;
234
+ _this.errorData = void 0;
235
+ _this.name = 'HttpError';
236
+ _this.statusCode = statusCode;
237
+ _this.errorData = errorData;
238
+ return _this;
239
+ }
240
+ _inherits(HttpError, _Error);
241
+ return _createClass(HttpError);
242
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
243
+
244
+ function ownKeys$h(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
245
+ function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$h(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$h(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
246
+ const addProxyPrefixToUrl = (uri, proxy) => {
247
+ return proxy ? `/proxy/${proxy}${uri}` : uri;
248
+ };
249
+ const fetchUsingXhr = _ref2 => {
250
+ let url = _ref2.url,
251
+ payload = _ref2.payload,
252
+ config = _ref2.config,
253
+ onProgress = _ref2.onProgress,
254
+ onSuccess = _ref2.onSuccess,
255
+ onError = _ref2.onError;
256
+ const options = applicationShell.createHttpClientOptions({
257
+ headers: _objectSpread$h({
258
+ 'Content-Type': 'application/json'
259
+ }, config?.headers)
260
+ });
261
+ const xhr = new XMLHttpRequest();
262
+ xhr.open(config?.method, applicationShell.buildApiUrl(addProxyPrefixToUrl(url, config?.proxy)), true);
263
+ // Include cookies in the request
264
+ xhr.withCredentials = true;
265
+ if (options.headers) {
266
+ var _context;
267
+ _forEachInstanceProperty__default["default"](_context = _Object$keys__default["default"](options.headers)).call(_context, key => {
268
+ xhr.setRequestHeader(key, options.headers[key]);
269
+ });
270
+ }
271
+ xhr.upload.onprogress = function (event) {
272
+ if (event.lengthComputable) {
273
+ const percentComplete = event.loaded / event.total * 100;
274
+ onProgress(percentComplete);
275
+ }
276
+ };
277
+ xhr.onload = function () {
278
+ const data = JSON.parse(xhr.responseText);
279
+ // Code copied from `executeHttpClientRequest` to replicate the same behavior
280
+ const refreshedSessionToken = xhr.getResponseHeader('x-refreshed-session-token');
281
+ if (refreshedSessionToken) {
282
+ applicationShellConnectors.oidcStorage.setActiveSession(refreshedSessionToken);
283
+ }
284
+ if (xhr.status >= 200 && xhr.status < 300) {
285
+ onSuccess(data);
286
+ } else {
287
+ onError(new HttpError(xhr.status, xhr.statusText, data));
288
+ }
289
+ };
290
+ xhr.onerror = function () {
291
+ const errorData = JSON.parse(xhr.responseText);
292
+ onError(new HttpError(xhr.status, xhr.statusText, errorData));
293
+ };
294
+ xhr.onabort = function () {
295
+ onError(new DOMException('Aborted', 'AbortError'));
296
+ };
297
+ xhr.send(payload);
298
+ return xhr;
299
+ };
300
+
301
+ const DEFAULT_DELIMITER = ',';
302
+ const INITIAL_COLUMN_DISPLAY_COUNT = 8;
303
+ const IMPORT_TAG_KEYS = {
304
+ source: 'source'
305
+ };
306
+ const IMPORT_TAG_VALUES = {
307
+ fileUpload: 'file-upload'
308
+ };
309
+ const TAG_KEY_SOURCE_FILE_UPLOAD = `${IMPORT_TAG_KEYS.source}:${IMPORT_TAG_VALUES.fileUpload}`;
310
+
311
+ const IMPORTABLE_RESOURCES = {
312
+ CATEGORY: 'category',
313
+ PRODUCT: 'product',
314
+ INVENTORY: 'inventory',
315
+ DISCOUNT_CODE: 'discount-code',
316
+ CUSTOMER: 'customer',
317
+ ORDER: 'order',
318
+ PRODUCT_TYPE: 'product-type'
319
+ };
320
+
321
+ const FILE_SIZE_LIMITS_MB = {
322
+ [IMPORTABLE_RESOURCES.CATEGORY]: 35,
323
+ [IMPORTABLE_RESOURCES.INVENTORY]: 35,
324
+ [IMPORTABLE_RESOURCES.PRODUCT]: 35,
325
+ [IMPORTABLE_RESOURCES.DISCOUNT_CODE]: 35,
326
+ [IMPORTABLE_RESOURCES.CUSTOMER]: 0,
327
+ [IMPORTABLE_RESOURCES.ORDER]: 0,
328
+ [IMPORTABLE_RESOURCES.PRODUCT_TYPE]: 35
329
+ };
330
+ const ROW_LIMITS = {
331
+ [IMPORTABLE_RESOURCES.CATEGORY]: 80_000,
332
+ [IMPORTABLE_RESOURCES.INVENTORY]: 80_000,
333
+ [IMPORTABLE_RESOURCES.PRODUCT]: 80_000,
334
+ [IMPORTABLE_RESOURCES.DISCOUNT_CODE]: 80_000,
335
+ [IMPORTABLE_RESOURCES.CUSTOMER]: 0,
336
+ [IMPORTABLE_RESOURCES.ORDER]: 0,
337
+ [IMPORTABLE_RESOURCES.PRODUCT_TYPE]: 80_000
338
+ };
339
+ const RESOURCE_TYPE_TEMPLATE_DOWNLOAD_LINKS = {
340
+ [IMPORTABLE_RESOURCES.CATEGORY]: 'https://docs.commercetools.com/merchant-center/downloads/category_import_template.csv',
341
+ [IMPORTABLE_RESOURCES.PRODUCT]: 'https://docs.commercetools.com/merchant-center/import-data#download-a-csv-template',
342
+ [IMPORTABLE_RESOURCES.INVENTORY]: 'https://docs.commercetools.com/merchant-center/downloads/inventory_entry_import_template.csv',
343
+ [IMPORTABLE_RESOURCES.DISCOUNT_CODE]: 'https://docs.commercetools.com/merchant-center/downloads/discount_code_import_template.csv',
344
+ [IMPORTABLE_RESOURCES.CUSTOMER]: 'https://docs.commercetools.com/merchant-center/import-data#download-a-csv-template',
345
+ [IMPORTABLE_RESOURCES.ORDER]: 'https://docs.commercetools.com/merchant-center/import-data#download-a-csv-template',
346
+ [IMPORTABLE_RESOURCES.PRODUCT_TYPE]: 'https://docs.commercetools.com/merchant-center/downloads/product_type_import_template.csv'
347
+ };
348
+ const RESOURCE_TYPE_DOCUMENTATION_LINKS = {
349
+ [IMPORTABLE_RESOURCES.CATEGORY]: 'https://docs.commercetools.com/merchant-center/import-categories#supported-headers-and-values',
350
+ [IMPORTABLE_RESOURCES.PRODUCT]: 'https://docs.commercetools.com/merchant-center/import-products#supported-headers-and-values',
351
+ [IMPORTABLE_RESOURCES.INVENTORY]: 'https://docs.commercetools.com/merchant-center/import-inventory#supported-headers-and-values',
352
+ [IMPORTABLE_RESOURCES.DISCOUNT_CODE]: 'https://docs.commercetools.com/merchant-center/import-discount-codes#supported-headers-and-values',
353
+ [IMPORTABLE_RESOURCES.CUSTOMER]: 'https://docs.commercetools.com/merchant-center/import-customers#supported-headers-and-values',
354
+ [IMPORTABLE_RESOURCES.ORDER]: 'https://docs.commercetools.com/merchant-center/import-orders#supported-headers-and-values',
355
+ [IMPORTABLE_RESOURCES.PRODUCT_TYPE]: 'https://docs.commercetools.com/merchant-center/import-product-types#supported-headers-and-values'
356
+ };
357
+
358
+ const CT__API_DOCS_URL = 'https://docs.commercetools.com/api/';
359
+
360
+ const PERMISSIONS = {
361
+ // Categories
362
+ ManageCategories: 'ManageCategories',
363
+ ViewCategories: 'ViewCategories',
364
+ // Products
365
+ ManageProducts: 'ManageProducts',
366
+ ViewProducts: 'ViewProducts',
367
+ // ProductTypes
368
+ ManageProductTypes: 'ManageProductTypes',
369
+ ViewProductTypes: 'ViewProductTypes',
370
+ // DiscountCodes
371
+ ManageDiscountCodes: 'ManageDiscountCodes',
372
+ ViewDiscountCodes: 'ViewDiscountCodes'
373
+ };
374
+ const ACTION_RIGHTS = {
375
+ PublishProducts: {
376
+ group: 'products',
377
+ name: 'PublishProducts'
378
+ },
379
+ UnpublishProducts: {
380
+ group: 'products',
381
+ name: 'UnpublishProducts'
382
+ }
383
+ };
384
+
385
+ function ownKeys$g(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
386
+ function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$g(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$g(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
387
+ const PUBLISH_PRODUCTS = 'publishProducts';
388
+ const DEFAULT_SHORT_LIVED_FLAGS = {
389
+ [PUBLISH_PRODUCTS]: false
390
+ };
391
+ const DEFAULT_LONG_LIVED_FLAGS = {};
392
+ _objectSpread$g(_objectSpread$g({}, DEFAULT_SHORT_LIVED_FLAGS), DEFAULT_LONG_LIVED_FLAGS);
393
+
394
+ function ownKeys$f(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
395
+ function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$f(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$f(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
396
+ /**
397
+ * This function checks if the provided `expectedDelimiter` is used consistently in the first 10 lines of a CSV file.
398
+ * Returns a Promise that resolves to an object containing a boolean `isValid` property and the detected delimiter `delimiter`.
399
+ *
400
+ * @param {File} file - The CSV file to check.
401
+ * @param {string} [expectedDelimiter=DEFAULT_DELIMITER] - The expected delimiter to check for in the file.
402
+ * @returns {Promise<DelimiterCheck>} A Promise that resolves to a DelimiterCheck object.
403
+ */
404
+ const checkDelimiter = function (file) {
405
+ let expectedDelimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_DELIMITER;
406
+ return new _Promise__default["default"](resolve => {
407
+ let lineCount = 0;
408
+ let correctDelimiterCount = 0;
409
+ let detectedDelimiter = null;
410
+ Papa__default["default"].parse(file, {
411
+ step: (results, parser) => {
412
+ lineCount++;
413
+ if (detectedDelimiter === null) {
414
+ detectedDelimiter = results.meta.delimiter;
415
+ }
416
+ if (results.meta.delimiter === expectedDelimiter) {
417
+ correctDelimiterCount++;
418
+ }
419
+ if (lineCount >= 10) {
420
+ parser.abort();
421
+ }
422
+ },
423
+ complete: () => {
424
+ const isValid = correctDelimiterCount === lineCount;
425
+ resolve({
426
+ isValid,
427
+ delimiter: detectedDelimiter
428
+ });
429
+ }
430
+ });
431
+ });
432
+ };
433
+ const mapUploadFileErrorsResponseToUploadFileErrorRows = uploadFileErrorsResponse => {
434
+ if (!uploadFileErrorsResponse || !_Array$isArray__default["default"](uploadFileErrorsResponse)) return [];
435
+ let idCounter = 1;
436
+ return _flatMapInstanceProperty__default["default"](uploadFileErrorsResponse).call(uploadFileErrorsResponse, rowErrorsResponse => {
437
+ var _context;
438
+ return _mapInstanceProperty__default["default"](_context = rowErrorsResponse.errors).call(_context, rowError => ({
439
+ // DataTable component requires unique `id` field
440
+ id: String(idCounter++),
441
+ row: rowErrorsResponse.row,
442
+ field: rowError.field,
443
+ code: rowError.code,
444
+ validationMessage: rowError.message
445
+ }));
446
+ });
447
+ };
448
+ const mapFileUploadErrorsToUploadFileErrorRows = uploadFileErrors => {
449
+ let idCounter = 1;
450
+ return _mapInstanceProperty__default["default"](uploadFileErrors).call(uploadFileErrors, uploadFileError => _objectSpread$f(_objectSpread$f({}, uploadFileError), {}, {
451
+ id: String(idCounter++)
452
+ }));
453
+ };
454
+ const extractErrorDescriptionFromValidationMessage = message => {
455
+ return message.split('"').pop();
456
+ };
457
+
458
+ /**
459
+ * Returns the number of rows in a CSV file excluding the header
460
+ * @param file The CSV file to process.
461
+ * @returns A promise that resolves to the number of rows
462
+ */
463
+ const getRowCount = file => {
464
+ return new _Promise__default["default"](resolve => {
465
+ let lineCount = 0;
466
+ Papa__default["default"].parse(file, {
467
+ step: _ref => {
468
+ let data = _ref.data;
469
+ // empty lines at the end of the file should not be counted
470
+ if (_Array$isArray__default["default"](data) && _findInstanceProperty__default["default"](data).call(data, Boolean)) lineCount++;
471
+ },
472
+ complete: () => {
473
+ // Subtract 1 for the header row
474
+ // We use Math.max to make sure the count is not less than 0, this is needed for empty files
475
+ resolve(Math.max(0, lineCount - 1));
476
+ }
477
+ });
478
+ });
479
+ };
480
+ const toBytes = megabytes => megabytes * 1024 * 1024;
481
+
482
+ /**
483
+ * Returns columns from the provided `columns` excluding those specified in the `ignoredColumns`
484
+ */
485
+ const getValidatedColumns = (columns, ignoredColumns) => {
486
+ return _filterInstanceProperty__default["default"](columns).call(columns, column => !_includesInstanceProperty__default["default"](ignoredColumns).call(ignoredColumns, column));
487
+ };
488
+
489
+ function getFileUploadErrorsCount(errors) {
490
+ if (!errors || !_Array$isArray__default["default"](errors)) return 0;
491
+ return _reduceInstanceProperty__default["default"](errors).call(errors, (acc, curr) => acc += curr.errors.length, 0);
492
+ }
493
+ function convertFileSizeToKB(sizeInBytes) {
494
+ return sizeInBytes / 1000;
495
+ }
496
+ function isAbortError(error) {
497
+ return error instanceof DOMException && error.name === 'AbortError';
498
+ }
499
+ function formatKeys(obj) {
500
+ var _context;
501
+ if (typeof obj !== 'object' || obj === null) return '';
502
+ const keys = _mapInstanceProperty__default["default"](_context = _Object$keys__default["default"](obj)).call(_context, key => key.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase());
503
+ if (keys.length === 0) return '';
504
+ if (keys.length === 1) return keys[0];
505
+ return `${_sliceInstanceProperty__default["default"](keys).call(keys, 0, -1).join(', ')} and ${keys[keys.length - 1]}`;
506
+ }
507
+ function formatErrorCode(code) {
508
+ try {
509
+ const formattedCode = code.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2').toLowerCase();
510
+ let result = formattedCode.charAt(0).toUpperCase() + _sliceInstanceProperty__default["default"](formattedCode).call(formattedCode, 1);
511
+ return result;
512
+ } catch (error) {
513
+ return code;
514
+ }
515
+ }
516
+
517
+ const encodeFileNameWithTimestampToContainerKey = fileName => {
518
+ return btoa(_JSON$stringify__default["default"]({
519
+ timestamp: new Date().getTime(),
520
+ fileName
521
+ })).replace(/=+$/g, '');
522
+ };
523
+
524
+ function getCreateImportContainerURL(projectKey) {
525
+ return `/${projectKey}/import-containers`;
526
+ }
527
+ function getDeleteImportContainerURL(projectKey, containerKey) {
528
+ return `/${projectKey}/import-containers/${containerKey}`;
529
+ }
530
+ function getFileUploadURL(projectKey, resourceType, containerKey) {
531
+ return `/${projectKey}/${pluralize.plural(resourceType)}/import-containers/${containerKey}/file-upload`;
532
+ }
533
+ function getProccessFileURL(projectKey, resourceType, containerKey) {
534
+ return `/${projectKey}/${pluralize.plural(resourceType)}/import-containers/${containerKey}/process-file`;
535
+ }
536
+
537
+ function uploadFileForImport(_ref) {
538
+ let projectKey = _ref.projectKey,
539
+ containerKey = _ref.containerKey,
540
+ resourceType = _ref.resourceType,
541
+ file = _ref.file,
542
+ abortSignal = _ref.abortSignal,
543
+ onSuccess = _ref.onSuccess,
544
+ onProgress = _ref.onProgress,
545
+ onError = _ref.onError;
546
+ const uri = getFileUploadURL(projectKey, resourceType, containerKey);
547
+ const formData = new FormData();
548
+ formData.append('file', file, file.name);
549
+ return fetchUsingXhr({
550
+ url: uri,
551
+ payload: formData,
552
+ config: {
553
+ abortSignal,
554
+ proxy: constants.MC_API_PROXY_TARGETS.IMPORT,
555
+ method: 'POST',
556
+ headers: {
557
+ 'Content-Type': null
558
+ }
559
+ },
560
+ onProgress,
561
+ onSuccess,
562
+ onError
563
+ });
564
+ }
565
+
566
+ function createImportContainerForFileUpload(importContainerDraft, projectKey, asyncDispatch) {
567
+ return asyncDispatch(sdk.actions.post({
568
+ mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.IMPORT,
569
+ uri: getCreateImportContainerURL(projectKey),
570
+ headers: {
571
+ accept: 'application/json',
572
+ 'Content-Type': 'application/json'
573
+ },
574
+ payload: _JSON$stringify__default["default"](importContainerDraft)
575
+ }));
576
+ }
577
+ function deleteImportContainer(projectKey, containerKey, asyncDispatch) {
578
+ return asyncDispatch(sdk.actions.del({
579
+ mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.IMPORT,
580
+ uri: getDeleteImportContainerURL(projectKey, containerKey),
581
+ headers: {
582
+ accept: 'application/json'
583
+ }
584
+ }));
585
+ }
586
+
587
+ async function processUploadedFile(_ref) {
588
+ let projectKey = _ref.projectKey,
589
+ containerKey = _ref.containerKey,
590
+ resourceType = _ref.resourceType,
591
+ asyncDispatch = _ref.asyncDispatch;
592
+ const uri = getProccessFileURL(projectKey, resourceType, containerKey);
593
+ const response = await asyncDispatch(sdk.actions.post({
594
+ mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.IMPORT,
595
+ uri: uri,
596
+ headers: {
597
+ accept: 'application/json',
598
+ 'Content-Type': 'application/json'
599
+ },
600
+ payload: {}
601
+ }));
602
+ assertProcessFileResponse(response);
603
+ return response;
604
+ }
605
+ function assertProcessFileResponse(maybeProcessFileResponse) {
606
+ const requiredFields = ['message'];
607
+ if (hasRequiredFields(maybeProcessFileResponse, requiredFields)) return;
608
+ throw new Error('Invalid response');
609
+ }
610
+
611
+ function ownKeys$e(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
612
+ function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$e(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$e(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
613
+ const ImportResourcesContext = /*#__PURE__*/React__default["default"].createContext();
614
+ const ImportResourcesProvider = props => {
615
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(context => ({
616
+ projectKey: context.project?.key
617
+ })),
618
+ projectKey = _useApplicationContex.projectKey;
619
+ const asyncDispatch = sdk.useAsyncDispatch();
620
+ const _React$useReducer = React__default["default"].useReducer(reducer, _objectSpread$e(_objectSpread$e({}, initialState), {}, {
621
+ resourceType: props.resourceTypes[0]
622
+ })),
623
+ _React$useReducer2 = _slicedToArray(_React$useReducer, 2),
624
+ state = _React$useReducer2[0],
625
+ dispatch = _React$useReducer2[1];
626
+ const setCurrentStep = currentStep => dispatch({
627
+ type: 'setCurrentStep',
628
+ currentStep
629
+ });
630
+ const setUploadFileResponse = uploadFileResponse => dispatch({
631
+ type: 'setUploadFileResponse',
632
+ uploadFileResponse: uploadFileResponse
633
+ });
634
+ const setResourceType = resourceType => dispatch({
635
+ type: 'setResourceType',
636
+ resourceType: resourceType
637
+ });
638
+ const setContainerKey = containerKey => dispatch({
639
+ type: 'setContainerKey',
640
+ containerKey
641
+ });
642
+ const cancelImport = () => dispatch({
643
+ type: 'cancelImport'
644
+ });
645
+ const uploadNewFile = () => dispatch({
646
+ type: 'uploadNewFile'
647
+ });
648
+ const setDroppedFile = droppedFile => dispatch({
649
+ type: 'setDroppedFile',
650
+ droppedFile: droppedFile
651
+ });
652
+ const setAbortController = abortController => dispatch({
653
+ type: 'setAbortController',
654
+ abortController: abortController
655
+ });
656
+ const setFileUploadErrors = fileUploadErrors => dispatch({
657
+ type: 'setFileUploadErrors',
658
+ fileUploadErrors: fileUploadErrors
659
+ });
660
+ const setProgress = progress => dispatch({
661
+ type: 'setProgress',
662
+ progress
663
+ });
664
+ const setUploadSettings = nextSettings => {
665
+ dispatch({
666
+ type: 'setUploadSettings',
667
+ settings: nextSettings
668
+ });
669
+ };
670
+ const handleClose = function () {
671
+ let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
672
+ shouldDeleteImportContainer = _ref.shouldDeleteImportContainer;
673
+ if (state.abortController) state.abortController.abort();
674
+ if (typeof props.onClose === 'function') props.onClose();
675
+ // Removes the associated import container when the import is closed
676
+ if (shouldDeleteImportContainer && projectKey && state.containerKey) deleteImportContainer(projectKey, state.containerKey, asyncDispatch);
677
+ };
678
+ const handleStartImportSuccess = () => {
679
+ if (typeof props.onStartImportSuccess === 'function') props.onStartImportSuccess();
680
+ };
681
+ return jsxRuntime.jsx(ImportResourcesContext.Provider, {
682
+ value: {
683
+ state,
684
+ resourceTypes: props.resourceTypes,
685
+ onClose: handleClose,
686
+ onStartImportSuccess: handleStartImportSuccess,
687
+ actions: {
688
+ setCurrentStep,
689
+ cancelImport,
690
+ uploadNewFile,
691
+ setUploadFileResponse,
692
+ setResourceType,
693
+ setDroppedFile,
694
+ setContainerKey,
695
+ setAbortController,
696
+ setFileUploadErrors,
697
+ setProgress,
698
+ setUploadSettings
699
+ }
700
+ },
701
+ children: props.children
702
+ });
703
+ };
704
+
705
+ const getBorderColor = state => {
706
+ const borderColors = {
707
+ default: '#909dbc',
708
+ error: '#e60050',
709
+ active: uiKit.customProperties.colorPrimary
710
+ };
711
+ return borderColors[state] || borderColors.default;
712
+ };
713
+ const getDashedBorder = function () {
714
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';
715
+ const color = getBorderColor(state);
716
+ const svgContent = `
717
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
718
+ <rect width="100%" height="100%" fill="none" stroke="${color}" stroke-width="2px" stroke-dasharray="6,6" stroke-dashoffset="0" stroke-linecap="square"/>
719
+ </svg>
720
+ `;
721
+ return `data:image/svg+xml,${encodeURIComponent(svgContent)}`;
722
+ };
723
+ const base = /*#__PURE__*/react.css("border-radius:", uiKit.customProperties.borderRadius6, ";min-height:136px;display:flex;justify-content:center;align-items:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:base;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QmdCIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcblxudHlwZSBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnIHwgJ2Vycm9yJyB8ICdhY3RpdmUnXG5cbmNvbnN0IGdldEJvcmRlckNvbG9yID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9ycyA9IHtcbiAgICBkZWZhdWx0OiAnIzkwOWRiYycsXG4gICAgZXJyb3I6ICcjZTYwMDUwJyxcbiAgICBhY3RpdmU6IGN1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5LFxuICB9XG5cbiAgcmV0dXJuIGJvcmRlckNvbG9yc1tzdGF0ZV0gfHwgYm9yZGVyQ29sb3JzLmRlZmF1bHRcbn1cblxuY29uc3QgZ2V0RGFzaGVkQm9yZGVyID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gZ2V0Qm9yZGVyQ29sb3Ioc3RhdGUpXG4gIGNvbnN0IHN2Z0NvbnRlbnQgPSBgXG4gICAgPHN2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJHtjb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIycHhcIiBzdHJva2UtZGFzaGFycmF5PVwiNiw2XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIi8+XG4gICAgPC9zdmc+XG4gIGBcbiAgcmV0dXJuIGBkYXRhOmltYWdlL3N2Zyt4bWwsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnQ29udGVudCl9YFxufVxuXG5jb25zdCBiYXNlID0gY3NzYFxuICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNn07XG4gIG1pbi1oZWlnaHQ6IDEzNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbmNvbnN0IGRpc2FibGVkID0gY3NzYGBcbmNvbnN0IHJlYWR5Rm9yRHJvcCA9IGNzc2BcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCIke2dldERhc2hlZEJvcmRlcigpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbmBcbmNvbnN0IGFjdGl2ZURyYWcgPSBjc3NgXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiJHtnZXREYXNoZWRCb3JkZXIoJ2FjdGl2ZScpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5OTV9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcbmNvbnN0IGZpbGVEcm9wcGVkID0gY3NzYFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcIiR7Z2V0RGFzaGVkQm9yZGVyKCl9XFxcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHtcbiAgYmFzZSxcbiAgcmVhZHlGb3JEcm9wLFxuICBmaWxlRHJvcHBlZCxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZURyYWcsXG59XG4iXX0= */");
724
+ const disabled = /*#__PURE__*/react.css(process.env.NODE_ENV === "production" ? "" : ";label:disabled;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ29CIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcblxudHlwZSBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnIHwgJ2Vycm9yJyB8ICdhY3RpdmUnXG5cbmNvbnN0IGdldEJvcmRlckNvbG9yID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9ycyA9IHtcbiAgICBkZWZhdWx0OiAnIzkwOWRiYycsXG4gICAgZXJyb3I6ICcjZTYwMDUwJyxcbiAgICBhY3RpdmU6IGN1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5LFxuICB9XG5cbiAgcmV0dXJuIGJvcmRlckNvbG9yc1tzdGF0ZV0gfHwgYm9yZGVyQ29sb3JzLmRlZmF1bHRcbn1cblxuY29uc3QgZ2V0RGFzaGVkQm9yZGVyID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gZ2V0Qm9yZGVyQ29sb3Ioc3RhdGUpXG4gIGNvbnN0IHN2Z0NvbnRlbnQgPSBgXG4gICAgPHN2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJHtjb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIycHhcIiBzdHJva2UtZGFzaGFycmF5PVwiNiw2XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIi8+XG4gICAgPC9zdmc+XG4gIGBcbiAgcmV0dXJuIGBkYXRhOmltYWdlL3N2Zyt4bWwsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnQ29udGVudCl9YFxufVxuXG5jb25zdCBiYXNlID0gY3NzYFxuICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNn07XG4gIG1pbi1oZWlnaHQ6IDEzNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbmNvbnN0IGRpc2FibGVkID0gY3NzYGBcbmNvbnN0IHJlYWR5Rm9yRHJvcCA9IGNzc2BcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCIke2dldERhc2hlZEJvcmRlcigpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbmBcbmNvbnN0IGFjdGl2ZURyYWcgPSBjc3NgXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiJHtnZXREYXNoZWRCb3JkZXIoJ2FjdGl2ZScpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5OTV9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcbmNvbnN0IGZpbGVEcm9wcGVkID0gY3NzYFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcIiR7Z2V0RGFzaGVkQm9yZGVyKCl9XFxcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHtcbiAgYmFzZSxcbiAgcmVhZHlGb3JEcm9wLFxuICBmaWxlRHJvcHBlZCxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZURyYWcsXG59XG4iXX0= */");
725
+ const readyForDrop = /*#__PURE__*/react.css("background-image:url(\"", getDashedBorder(), "\");background-color:", uiKit.customProperties.colorSurface, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:readyForDrop;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ3dCIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcblxudHlwZSBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnIHwgJ2Vycm9yJyB8ICdhY3RpdmUnXG5cbmNvbnN0IGdldEJvcmRlckNvbG9yID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9ycyA9IHtcbiAgICBkZWZhdWx0OiAnIzkwOWRiYycsXG4gICAgZXJyb3I6ICcjZTYwMDUwJyxcbiAgICBhY3RpdmU6IGN1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5LFxuICB9XG5cbiAgcmV0dXJuIGJvcmRlckNvbG9yc1tzdGF0ZV0gfHwgYm9yZGVyQ29sb3JzLmRlZmF1bHRcbn1cblxuY29uc3QgZ2V0RGFzaGVkQm9yZGVyID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gZ2V0Qm9yZGVyQ29sb3Ioc3RhdGUpXG4gIGNvbnN0IHN2Z0NvbnRlbnQgPSBgXG4gICAgPHN2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJHtjb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIycHhcIiBzdHJva2UtZGFzaGFycmF5PVwiNiw2XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIi8+XG4gICAgPC9zdmc+XG4gIGBcbiAgcmV0dXJuIGBkYXRhOmltYWdlL3N2Zyt4bWwsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnQ29udGVudCl9YFxufVxuXG5jb25zdCBiYXNlID0gY3NzYFxuICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNn07XG4gIG1pbi1oZWlnaHQ6IDEzNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbmNvbnN0IGRpc2FibGVkID0gY3NzYGBcbmNvbnN0IHJlYWR5Rm9yRHJvcCA9IGNzc2BcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCIke2dldERhc2hlZEJvcmRlcigpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbmBcbmNvbnN0IGFjdGl2ZURyYWcgPSBjc3NgXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiJHtnZXREYXNoZWRCb3JkZXIoJ2FjdGl2ZScpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5OTV9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcbmNvbnN0IGZpbGVEcm9wcGVkID0gY3NzYFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcIiR7Z2V0RGFzaGVkQm9yZGVyKCl9XFxcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHtcbiAgYmFzZSxcbiAgcmVhZHlGb3JEcm9wLFxuICBmaWxlRHJvcHBlZCxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZURyYWcsXG59XG4iXX0= */");
726
+ const activeDrag = /*#__PURE__*/react.css("background-image:url(\"", getDashedBorder('active'), "\");background-color:", uiKit.customProperties.colorPrimary95, ";padding:", uiKit.customProperties.spacing50, " 100px;" + (process.env.NODE_ENV === "production" ? "" : ";label:activeDrag;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ3NCIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcblxudHlwZSBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnIHwgJ2Vycm9yJyB8ICdhY3RpdmUnXG5cbmNvbnN0IGdldEJvcmRlckNvbG9yID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9ycyA9IHtcbiAgICBkZWZhdWx0OiAnIzkwOWRiYycsXG4gICAgZXJyb3I6ICcjZTYwMDUwJyxcbiAgICBhY3RpdmU6IGN1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5LFxuICB9XG5cbiAgcmV0dXJuIGJvcmRlckNvbG9yc1tzdGF0ZV0gfHwgYm9yZGVyQ29sb3JzLmRlZmF1bHRcbn1cblxuY29uc3QgZ2V0RGFzaGVkQm9yZGVyID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gZ2V0Qm9yZGVyQ29sb3Ioc3RhdGUpXG4gIGNvbnN0IHN2Z0NvbnRlbnQgPSBgXG4gICAgPHN2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJHtjb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIycHhcIiBzdHJva2UtZGFzaGFycmF5PVwiNiw2XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIi8+XG4gICAgPC9zdmc+XG4gIGBcbiAgcmV0dXJuIGBkYXRhOmltYWdlL3N2Zyt4bWwsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnQ29udGVudCl9YFxufVxuXG5jb25zdCBiYXNlID0gY3NzYFxuICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNn07XG4gIG1pbi1oZWlnaHQ6IDEzNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbmNvbnN0IGRpc2FibGVkID0gY3NzYGBcbmNvbnN0IHJlYWR5Rm9yRHJvcCA9IGNzc2BcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCIke2dldERhc2hlZEJvcmRlcigpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbmBcbmNvbnN0IGFjdGl2ZURyYWcgPSBjc3NgXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiJHtnZXREYXNoZWRCb3JkZXIoJ2FjdGl2ZScpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5OTV9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcbmNvbnN0IGZpbGVEcm9wcGVkID0gY3NzYFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcIiR7Z2V0RGFzaGVkQm9yZGVyKCl9XFxcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHtcbiAgYmFzZSxcbiAgcmVhZHlGb3JEcm9wLFxuICBmaWxlRHJvcHBlZCxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZURyYWcsXG59XG4iXX0= */");
727
+ const fileDropped = /*#__PURE__*/react.css("background-image:url(\"", getDashedBorder(), "\");background-color:", uiKit.customProperties.colorSurface, ";padding:", uiKit.customProperties.spacing50, " 100px;" + (process.env.NODE_ENV === "production" ? "" : ";label:fileDropped;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQ3VCIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcblxudHlwZSBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnIHwgJ2Vycm9yJyB8ICdhY3RpdmUnXG5cbmNvbnN0IGdldEJvcmRlckNvbG9yID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9ycyA9IHtcbiAgICBkZWZhdWx0OiAnIzkwOWRiYycsXG4gICAgZXJyb3I6ICcjZTYwMDUwJyxcbiAgICBhY3RpdmU6IGN1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5LFxuICB9XG5cbiAgcmV0dXJuIGJvcmRlckNvbG9yc1tzdGF0ZV0gfHwgYm9yZGVyQ29sb3JzLmRlZmF1bHRcbn1cblxuY29uc3QgZ2V0RGFzaGVkQm9yZGVyID0gKHN0YXRlOiBEcm9wQXJlYVN0YXRlID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gZ2V0Qm9yZGVyQ29sb3Ioc3RhdGUpXG4gIGNvbnN0IHN2Z0NvbnRlbnQgPSBgXG4gICAgPHN2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJHtjb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIycHhcIiBzdHJva2UtZGFzaGFycmF5PVwiNiw2XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIi8+XG4gICAgPC9zdmc+XG4gIGBcbiAgcmV0dXJuIGBkYXRhOmltYWdlL3N2Zyt4bWwsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnQ29udGVudCl9YFxufVxuXG5jb25zdCBiYXNlID0gY3NzYFxuICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNn07XG4gIG1pbi1oZWlnaHQ6IDEzNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbmNvbnN0IGRpc2FibGVkID0gY3NzYGBcbmNvbnN0IHJlYWR5Rm9yRHJvcCA9IGNzc2BcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCIke2dldERhc2hlZEJvcmRlcigpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbmBcbmNvbnN0IGFjdGl2ZURyYWcgPSBjc3NgXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiJHtnZXREYXNoZWRCb3JkZXIoJ2FjdGl2ZScpfVxcXCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5OTV9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcbmNvbnN0IGZpbGVEcm9wcGVkID0gY3NzYFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcIiR7Z2V0RGFzaGVkQm9yZGVyKCl9XFxcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZzUwfSAxMDBweDtcbmBcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHtcbiAgYmFzZSxcbiAgcmVhZHlGb3JEcm9wLFxuICBmaWxlRHJvcHBlZCxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZURyYWcsXG59XG4iXX0= */");
728
+ const styles = {
729
+ base,
730
+ readyForDrop,
731
+ fileDropped,
732
+ disabled,
733
+ activeDrag
734
+ };
735
+
736
+ const DropWrapper = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? {
737
+ target: "ef0z5en0"
738
+ } : {
739
+ target: "ef0z5en0",
740
+ label: "DropWrapper"
741
+ })(styles.base, " ", props => {
742
+ if (props.dropAreaState === 'disabled') {
743
+ return styles.disabled;
744
+ }
745
+ if (props.dropAreaState === 'ready-for-drop') {
746
+ return styles.readyForDrop;
747
+ }
748
+ if (props.dropAreaState === 'active-drag') {
749
+ return styles.activeDrag;
750
+ }
751
+ if (props.dropAreaState === 'file-dropped') {
752
+ return styles.fileDropped;
753
+ }
754
+ return getDefaultDropWrapperStyles(props.dropAreaState);
755
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3AtYXJlYS13cmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTdUQiLCJmaWxlIjoiZHJvcC1hcmVhLXdyYXBwZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEcm9wem9uZVJvb3RQcm9wcyB9IGZyb20gJ3JlYWN0LWRyb3B6b25lJ1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHN0eWxlcyB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdHlwZSBEcm9wQXJlYVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzJ1xuXG5pbnRlcmZhY2UgRHJvcFdyYXBwZXJQcm9wcyBleHRlbmRzIERyb3B6b25lUm9vdFByb3BzIHtcbiAgZHJvcEFyZWFTdGF0ZTogRHJvcEFyZWFTdGF0ZVxufVxuZXhwb3J0IGNvbnN0IERyb3BXcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wV3JhcHBlclByb3BzPmBcbiAgJHtzdHlsZXMuYmFzZX1cbiAgJHsocHJvcHMpID0+IHtcbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgcmV0dXJuIHN0eWxlcy5kaXNhYmxlZFxuICAgIH1cbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ3JlYWR5LWZvci1kcm9wJykge1xuICAgICAgcmV0dXJuIHN0eWxlcy5yZWFkeUZvckRyb3BcbiAgICB9XG4gICAgaWYgKHByb3BzLmRyb3BBcmVhU3RhdGUgPT09ICdhY3RpdmUtZHJhZycpIHtcbiAgICAgIHJldHVybiBzdHlsZXMuYWN0aXZlRHJhZ1xuICAgIH1cbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ2ZpbGUtZHJvcHBlZCcpIHtcbiAgICAgIHJldHVybiBzdHlsZXMuZmlsZURyb3BwZWRcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHREcm9wV3JhcHBlclN0eWxlcyhwcm9wcy5kcm9wQXJlYVN0YXRlKVxuICB9fVxuYFxuZnVuY3Rpb24gZ2V0RGVmYXVsdERyb3BXcmFwcGVyU3R5bGVzKF9kcm9wQXJlYVN0YXRlOiBuZXZlcikge1xuICByZXR1cm4gY3NzYGBcbn1cbiJdfQ== */"));
756
+ function getDefaultDropWrapperStyles(_dropAreaState) {
757
+ return /*#__PURE__*/react.css(process.env.NODE_ENV === "production" ? "" : ";label:getDefaultDropWrapperStyles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3AtYXJlYS13cmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0QlkiLCJmaWxlIjoiZHJvcC1hcmVhLXdyYXBwZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEcm9wem9uZVJvb3RQcm9wcyB9IGZyb20gJ3JlYWN0LWRyb3B6b25lJ1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHN0eWxlcyB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdHlwZSBEcm9wQXJlYVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzJ1xuXG5pbnRlcmZhY2UgRHJvcFdyYXBwZXJQcm9wcyBleHRlbmRzIERyb3B6b25lUm9vdFByb3BzIHtcbiAgZHJvcEFyZWFTdGF0ZTogRHJvcEFyZWFTdGF0ZVxufVxuZXhwb3J0IGNvbnN0IERyb3BXcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wV3JhcHBlclByb3BzPmBcbiAgJHtzdHlsZXMuYmFzZX1cbiAgJHsocHJvcHMpID0+IHtcbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgcmV0dXJuIHN0eWxlcy5kaXNhYmxlZFxuICAgIH1cbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ3JlYWR5LWZvci1kcm9wJykge1xuICAgICAgcmV0dXJuIHN0eWxlcy5yZWFkeUZvckRyb3BcbiAgICB9XG4gICAgaWYgKHByb3BzLmRyb3BBcmVhU3RhdGUgPT09ICdhY3RpdmUtZHJhZycpIHtcbiAgICAgIHJldHVybiBzdHlsZXMuYWN0aXZlRHJhZ1xuICAgIH1cbiAgICBpZiAocHJvcHMuZHJvcEFyZWFTdGF0ZSA9PT0gJ2ZpbGUtZHJvcHBlZCcpIHtcbiAgICAgIHJldHVybiBzdHlsZXMuZmlsZURyb3BwZWRcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHREcm9wV3JhcHBlclN0eWxlcyhwcm9wcy5kcm9wQXJlYVN0YXRlKVxuICB9fVxuYFxuZnVuY3Rpb24gZ2V0RGVmYXVsdERyb3BXcmFwcGVyU3R5bGVzKF9kcm9wQXJlYVN0YXRlOiBuZXZlcikge1xuICByZXR1cm4gY3NzYGBcbn1cbiJdfQ== */");
758
+ }
759
+
760
+ var ActiveDragDropArea = /*#__PURE__*/React.lazy(() => Promise.resolve().then(function () { return require('./active-drag-drop-area-89acd82d.cjs.dev.js' /* webpackChunkName: "active-drag-drop-area" */); }));
761
+
762
+ var DisabledDropArea = /*#__PURE__*/React.lazy(() => Promise.resolve().then(function () { return require('./disabled-drop-area-aa78075b.cjs.dev.js' /* webpackChunkName: "disabled-drop-area" */); }));
763
+
764
+ var EnabledDropArea = /*#__PURE__*/React.lazy(() => Promise.resolve().then(function () { return require('./enabled-drop-area-a65a870a.cjs.dev.js' /* webpackChunkName: "enabled-drop-area" */); }));
765
+
766
+ var FileDropped = /*#__PURE__*/React.lazy(() => Promise.resolve().then(function () { return require('./file-dropped-area-741b7c1f.cjs.dev.js' /* webpackChunkName: "filed-dropped-area" */); }));
767
+
768
+ function getDropArea(_ref) {
769
+ let dropAreaState = _ref.dropAreaState,
770
+ resourceType = _ref.resourceType,
771
+ isFileDropped = _ref.isFileDropped;
772
+ if (dropAreaState === 'file-dropped') {
773
+ return jsxRuntime.jsx(FileDropped, {});
774
+ }
775
+ if (dropAreaState === 'disabled' || !resourceType) {
776
+ return jsxRuntime.jsx(DisabledDropArea, {});
777
+ }
778
+ if (dropAreaState === 'ready-for-drop') {
779
+ return jsxRuntime.jsx(EnabledDropArea, {});
780
+ }
781
+ if (dropAreaState === 'active-drag') {
782
+ return jsxRuntime.jsx(ActiveDragDropArea, {
783
+ isFileDropped: isFileDropped
784
+ });
785
+ }
786
+ return fallbackDropArea();
787
+ }
788
+ function fallbackDropArea(_invalidDropAreaState) {
789
+ return jsxRuntime.jsx(DisabledDropArea, {});
790
+ }
791
+ function getDropAreaState(flags) {
792
+ if (flags.isDragActive) {
793
+ return 'active-drag';
794
+ }
795
+ if (flags.hasResourceType) {
796
+ return 'disabled';
797
+ }
798
+ if (flags.isReady) {
799
+ return 'file-dropped';
800
+ }
801
+ return 'ready-for-drop';
802
+ }
803
+
804
+ var messages$7 = reactIntl.defineMessages({
805
+ dragAndDropCSV: {
806
+ id: "ImportResourcesModal.dragAndDropCSV",
807
+ defaultMessage: "Drag and drop CSV"
808
+ },
809
+ or: {
810
+ id: "ImportResourcesModal.or",
811
+ defaultMessage: "or"
812
+ },
813
+ browseButton: {
814
+ id: "ImportResourcesModal.browseFile",
815
+ defaultMessage: "Browse file"
816
+ },
817
+ uploadFile: {
818
+ id: "ImportResourcesModal.uploadFile",
819
+ defaultMessage: "Upload file"
820
+ },
821
+ chooseFile: {
822
+ id: "ImportResourcesModal.chooseFile",
823
+ defaultMessage: "Choose file"
824
+ },
825
+ fileUploadFailed: {
826
+ id: "ImportResourcesModal.fileUploadFailed",
827
+ defaultMessage: "File upload failed"
828
+ },
829
+ fileFormatNotSupported: {
830
+ id: "ImportResourcesModal.fileFormatNotSupported",
831
+ defaultMessage: "Invalid file format: The file is not in CSV format and cannot be processed."
832
+ },
833
+ tooManyFilesError: {
834
+ id: "ImportResourcesModal.tooManyFilesError",
835
+ defaultMessage: "Multiple files detected: You can only drag and drop one file at a time."
836
+ },
837
+ genericError: {
838
+ id: "ImportResourcesModal.genericError",
839
+ defaultMessage: "Error occurred: Please try uploading the file again or contact our support team for assistance."
840
+ },
841
+ dataType: {
842
+ id: "ImportResourcesModal.dataType",
843
+ defaultMessage: "Data type"
844
+ },
845
+ instructions: {
846
+ id: "ImportResourcesModal.instructions",
847
+ defaultMessage: "Instructions"
848
+ }
849
+ });
850
+
851
+ function useImportResourcesContext() {
852
+ const context = React.useContext(ImportResourcesContext);
853
+ if (!context) {
854
+ throw new MissingImportResourceProviderError();
855
+ }
856
+ return context;
857
+ }
858
+
859
+ var messages$6 = reactIntl.defineMessages({
860
+ fileSizeExceededTitle: {
861
+ id: "ImportResourcesModal.sizeExceededTitle",
862
+ defaultMessage: "File size exceeded"
863
+ },
864
+ fileSizeExceededDescription: {
865
+ id: "ImportResourcesModal.sizeExceededDescription",
866
+ defaultMessage: "The file exceeds the maximum allowed size of {fileSizeLimit} MB"
867
+ },
868
+ rowLimitExceededTitle: {
869
+ id: "ImportResourcesModal.rowLimitExceededTitle",
870
+ defaultMessage: "Row limit exceeded"
871
+ },
872
+ rowLimitExceededDescription: {
873
+ id: "ImportResourcesModal.rowLimitExceededDescription",
874
+ defaultMessage: "The file contains more than the allowable maximum of {rowLimit} rows"
875
+ },
876
+ dropAreaWrongDelimiterTitle: {
877
+ id: "ImportResourcesModal.wrongDelimiterTitle",
878
+ defaultMessage: "Wrong delimiter"
879
+ },
880
+ dropAreaWrongDelimiterDescription: {
881
+ id: "ImportResourcesModal.wrongDelimiterDescription",
882
+ defaultMessage: "The file is using an incorrect delimiter. Please use comma (,) instead."
883
+ },
884
+ dropAreaNotEnoughRowsTitle: {
885
+ id: "ImportResourcesModal.dropAreaNotEnoughRowsTitle",
886
+ defaultMessage: "Invalid CSV file"
887
+ },
888
+ dropAreaNotEnoughRowsDescription: {
889
+ id: "ImportResourcesModal.dropAreaNotEnoughRowsDescription",
890
+ defaultMessage: "Make sure the file contains a header and at least one row of data"
891
+ },
892
+ unexpectedError: {
893
+ id: "ImportResourcesModal.unexpectedError",
894
+ defaultMessage: "An unexpected error occurred during the file upload. Please try again, or contact support if this error occurs again."
895
+ },
896
+ missingRequiredField: {
897
+ id: "ImportResourcesModal.missingRequiredField",
898
+ defaultMessage: "Missing required field"
899
+ },
900
+ missingKeyError: {
901
+ id: "ImportResourcesModal.missingKeyError",
902
+ defaultMessage: "The 'key' field is missing or incomplete in some rows. Please ensure every row has a 'key' value."
903
+ },
904
+ missingRequiredKeys: {
905
+ id: "ImportResourcesModal.missingRequiredKeys",
906
+ defaultMessage: "Make sure the file contains required keys for the elements including {fieldNames}"
907
+ }
908
+ });
909
+
910
+ function ownKeys$d(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
911
+ function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$d(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$d(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
912
+ const useUpload = () => {
913
+ const intl = reactIntl.useIntl();
914
+ const projectKey = applicationShellConnectors.useApplicationContext(context => context.project?.key);
915
+ const _useImportResourcesCo = useImportResourcesContext(),
916
+ state = _useImportResourcesCo.state,
917
+ actions = _useImportResourcesCo.actions;
918
+ const asyncDispatch = sdk.useAsyncDispatch();
919
+ const showNotification = actionsGlobal.useShowNotification();
920
+ React__default["default"].useEffect(() => {
921
+ return () => {
922
+ if (state.abortController) state.abortController.abort();
923
+ };
924
+ }, [state.abortController]);
925
+ const isFileValid = async file => {
926
+ const errors = [];
927
+ const delimiterCheck = await checkDelimiter(file);
928
+ if (!delimiterCheck.isValid) errors.push({
929
+ title: intl.formatMessage(messages$6.dropAreaWrongDelimiterTitle),
930
+ description: intl.formatMessage(messages$6.dropAreaWrongDelimiterDescription)
931
+ });
932
+ const rowCount = await getRowCount(file);
933
+ if (rowCount < 1) errors.push({
934
+ title: intl.formatMessage(messages$6.dropAreaNotEnoughRowsTitle),
935
+ description: intl.formatMessage(messages$6.dropAreaNotEnoughRowsDescription)
936
+ });
937
+ if (state.resourceType && file.size > toBytes(FILE_SIZE_LIMITS_MB[state.resourceType])) errors.push({
938
+ title: intl.formatMessage(messages$6.fileSizeExceededTitle),
939
+ description: intl.formatMessage(messages$6.fileSizeExceededDescription, {
940
+ fileSizeLimit: intl.formatNumber(FILE_SIZE_LIMITS_MB[state.resourceType])
941
+ })
942
+ });
943
+ if (state.resourceType && rowCount > ROW_LIMITS[state.resourceType]) errors.push({
944
+ title: intl.formatMessage(messages$6.rowLimitExceededTitle),
945
+ description: intl.formatMessage(messages$6.rowLimitExceededDescription, {
946
+ rowLimit: intl.formatNumber(ROW_LIMITS[state.resourceType])
947
+ })
948
+ });
949
+ if (errors.length > 0) {
950
+ actions.setFileUploadErrors(errors);
951
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
952
+ return false;
953
+ }
954
+ return true;
955
+ };
956
+ const handleUploadError = error => {
957
+ if (isAbortError(error)) {
958
+ actions.cancelImport();
959
+ return;
960
+ }
961
+ if (error instanceof HttpError) {
962
+ if (error.errorData?.code === 'MISSING_KEY_ERROR') {
963
+ actions.setFileUploadErrors([{
964
+ title: intl.formatMessage(messages$6.missingRequiredField),
965
+ description: intl.formatMessage(messages$6.missingKeyError)
966
+ }]);
967
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
968
+ } else if (error.errorData?.code === 'MissingCsvFieldIdentifier') {
969
+ const MissingCsvFieldIdentifierError = error.errorData;
970
+ const fieldNames = formatKeys(MissingCsvFieldIdentifierError.rowValue);
971
+ actions.setFileUploadErrors([{
972
+ title: intl.formatMessage(messages$6.missingRequiredField),
973
+ description: intl.formatMessage(messages$6.missingRequiredKeys, {
974
+ fieldNames
975
+ })
976
+ }]);
977
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
978
+ } else if (error.errorData?.invalid > 0) {
979
+ actions.setUploadFileResponse(error.errorData);
980
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
981
+ } else {
982
+ actions.cancelImport();
983
+ showNotification({
984
+ kind: 'error',
985
+ domain: constants.DOMAINS.PAGE,
986
+ text: intl.formatMessage(messages$6.unexpectedError)
987
+ });
988
+ }
989
+ } else {
990
+ actions.cancelImport();
991
+ showNotification({
992
+ kind: 'error',
993
+ domain: constants.DOMAINS.PAGE,
994
+ text: isError(error) ? error.toString() : String(error)
995
+ });
996
+ sentry.reportErrorToSentry(new Error('Upload File Error: An unexpected issue occurred while uploading the file'), {
997
+ extra: {
998
+ error,
999
+ projectKey,
1000
+ containerKey: state.containerKey,
1001
+ resourceType: state.resourceType,
1002
+ fileSizeInBytes: state.droppedFile?.size
1003
+ }
1004
+ });
1005
+ }
1006
+ };
1007
+ const handleUploadAndValidation = async () => {
1008
+ if (!projectKey || !state.droppedFile || !state.resourceType) return;
1009
+ const canUpload = await isFileValid(state.droppedFile);
1010
+ if (!canUpload) return;
1011
+ actions.setCurrentStep(CurrentStep$1.Uploading);
1012
+ const containerKey = encodeFileNameWithTimestampToContainerKey(state.droppedFile.name);
1013
+ actions.setContainerKey(containerKey);
1014
+ try {
1015
+ // TODO: Temporarily apply settings only for products
1016
+ const shouldApplySettings = state.resourceType === 'product';
1017
+ await createImportContainerForFileUpload(_objectSpread$d({
1018
+ key: containerKey,
1019
+ resourceType: state.resourceType,
1020
+ tags: [TAG_KEY_SOURCE_FILE_UPLOAD]
1021
+ }, shouldApplySettings ? {
1022
+ settings: {
1023
+ resourceType: state.resourceType === 'product' ? 'product-draft' : state.resourceType,
1024
+ format: 'CSV',
1025
+ options: {
1026
+ publishAllChanges: state.settings?.publish ?? false
1027
+ }
1028
+ }
1029
+ } : {}), projectKey, asyncDispatch);
1030
+ const newAbortController = uploadFileForImport({
1031
+ projectKey,
1032
+ containerKey,
1033
+ resourceType: state.resourceType,
1034
+ file: state.droppedFile,
1035
+ onSuccess: fileUploadResponse => {
1036
+ actions.setUploadFileResponse(fileUploadResponse);
1037
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
1038
+ },
1039
+ onProgress: progress => {
1040
+ actions.setProgress(progress);
1041
+ },
1042
+ onError: error => {
1043
+ deleteImportContainer(projectKey, containerKey, asyncDispatch);
1044
+ handleUploadError(error);
1045
+ }
1046
+ });
1047
+ actions.setAbortController(newAbortController);
1048
+ } catch (error) {
1049
+ deleteImportContainer(projectKey, containerKey, asyncDispatch);
1050
+ handleUploadError(error);
1051
+ actions.setCurrentStep(CurrentStep$1.UploadResult);
1052
+ }
1053
+ };
1054
+ return {
1055
+ handleUploadAndValidation
1056
+ };
1057
+ };
1058
+
1059
+ const useImportPermission = () => {
1060
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => ({
1061
+ actionRights: applicationContext.actionRights?.products
1062
+ })),
1063
+ actionRights = _useApplicationContex.actionRights;
1064
+ const canManageProducts = permissions.useIsAuthorized({
1065
+ demandedPermissions: [PERMISSIONS.ManageProducts]
1066
+ });
1067
+ const canImportCategories = permissions.useIsAuthorized({
1068
+ demandedPermissions: [PERMISSIONS.ManageCategories]
1069
+ });
1070
+ const canImportDiscountCodes = permissions.useIsAuthorized({
1071
+ demandedPermissions: [PERMISSIONS.ManageDiscountCodes]
1072
+ });
1073
+ const canImportProducts = React.useMemo(() => {
1074
+ if (!actionRights) return false;
1075
+ const canAddPrices = actionRights.canAddPrices,
1076
+ canAddProducts = actionRights.canAddProducts,
1077
+ canEditAttributesAll = actionRights['canEditAttributes:all'],
1078
+ canEditPrices = actionRights.canEditPrices;
1079
+ return canManageProducts && canAddPrices && canAddProducts && canEditAttributesAll && canEditPrices;
1080
+ }, [canManageProducts, actionRights]);
1081
+ return {
1082
+ canImportProducts,
1083
+ canImportCategories,
1084
+ canImportDiscountCodes,
1085
+ canImportInventories: canManageProducts,
1086
+ canImportProductTypes: canManageProducts
1087
+ };
1088
+ };
1089
+
1090
+ function ownKeys$c(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1091
+ function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$c(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$c(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1092
+ const FileDropArea = () => {
1093
+ const intl = reactIntl.useIntl();
1094
+ const _useImportResourcesCo = useImportResourcesContext(),
1095
+ state = _useImportResourcesCo.state,
1096
+ actions = _useImportResourcesCo.actions;
1097
+ const isResourceTypeSelected = Boolean(state.resourceType);
1098
+ const showNotification = actionsGlobal.useShowNotification();
1099
+ const onDrop = React__default["default"].useCallback(_ref => {
1100
+ let _ref2 = _slicedToArray(_ref, 1),
1101
+ file = _ref2[0];
1102
+ if (!file) return;
1103
+ assertResourceType(state.resourceType);
1104
+ actions.setDroppedFile(file);
1105
+ }, [state.resourceType]);
1106
+ const _useDropzone = reactDropzone.useDropzone({
1107
+ onDrop,
1108
+ multiple: false,
1109
+ disabled: !isResourceTypeSelected,
1110
+ accept: {
1111
+ 'text/csv': ['.csv']
1112
+ },
1113
+ onDropRejected: _ref3 => {
1114
+ var _context, _context2;
1115
+ let _ref4 = _slicedToArray(_ref3, 1),
1116
+ rejectedFile = _ref4[0];
1117
+ if (_someInstanceProperty__default["default"](_context = rejectedFile.errors).call(_context, error => error.code === 'too-many-files')) {
1118
+ showNotification({
1119
+ kind: 'error',
1120
+ domain: constants.DOMAINS.PAGE,
1121
+ text: intl.formatMessage(messages$7.tooManyFilesError)
1122
+ });
1123
+ return;
1124
+ }
1125
+ if (_someInstanceProperty__default["default"](_context2 = rejectedFile.errors).call(_context2, error => error.code === 'file-invalid-type')) {
1126
+ showNotification({
1127
+ kind: 'error',
1128
+ domain: constants.DOMAINS.PAGE,
1129
+ text: intl.formatMessage(messages$7.fileFormatNotSupported)
1130
+ });
1131
+ } else {
1132
+ showNotification({
1133
+ kind: 'error',
1134
+ domain: constants.DOMAINS.PAGE,
1135
+ text: intl.formatMessage(messages$7.genericError)
1136
+ });
1137
+ }
1138
+ }
1139
+ }),
1140
+ getRootProps = _useDropzone.getRootProps,
1141
+ getInputProps = _useDropzone.getInputProps,
1142
+ isDragActive = _useDropzone.isDragActive;
1143
+ const dropAreaState = React__default["default"].useMemo(() => getDropAreaState({
1144
+ isReady: Boolean(state.droppedFile),
1145
+ hasResourceType: !state.resourceType,
1146
+ isDragActive
1147
+ }), [state.resourceType, state.droppedFile, isDragActive]);
1148
+ const dropArea = getDropArea({
1149
+ dropAreaState,
1150
+ resourceType: 'category',
1151
+ isFileDropped: Boolean(state.droppedFile)
1152
+ });
1153
+ return jsxRuntime.jsxs(DropWrapper, _objectSpread$c(_objectSpread$c({
1154
+ role: "presentation"
1155
+ }, getRootProps()), {}, {
1156
+ dropAreaState: dropAreaState,
1157
+ children: [jsxRuntime.jsx("input", _objectSpread$c({
1158
+ "data-testid": "file-input"
1159
+ }, getInputProps())), jsxRuntime.jsx(uiKit.Constraints.Horizontal, {
1160
+ children: dropArea
1161
+ })]
1162
+ }));
1163
+ };
1164
+
1165
+ var messages$5 = reactIntl.defineMessages({
1166
+ publishProducts: {
1167
+ id: "ImportResourcesModal.settings.publishProducts",
1168
+ defaultMessage: "Publish all products in the file"
1169
+ }
1170
+ });
1171
+
1172
+ function ownKeys$b(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1173
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$b(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$b(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1174
+ const UploadProductSettings = () => {
1175
+ const _useImportResourcesCo = useImportResourcesContext(),
1176
+ state = _useImportResourcesCo.state,
1177
+ actions = _useImportResourcesCo.actions;
1178
+ return jsxRuntime.jsx(uiKit.CheckboxInput, {
1179
+ isChecked: state.settings?.publish,
1180
+ onChange: e => {
1181
+ actions.setUploadSettings({
1182
+ publish: e.target.checked
1183
+ });
1184
+ },
1185
+ children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$b({}, messages$5.publishProducts))
1186
+ });
1187
+ };
1188
+ const UploadSettings = () => {
1189
+ const isPublishProductsEnabled = applicationShell.useFeatureToggle(PUBLISH_PRODUCTS);
1190
+ const _useImportResourcesCo2 = useImportResourcesContext(),
1191
+ state = _useImportResourcesCo2.state;
1192
+ const canPublishProducts = permissions.useIsAuthorized({
1193
+ demandedPermissions: [PERMISSIONS.ManageProducts],
1194
+ demandedActionRights: [ACTION_RIGHTS.PublishProducts]
1195
+ });
1196
+ if (state.resourceType === 'product' && canPublishProducts && isPublishProductsEnabled) return jsxRuntime.jsx(UploadProductSettings, {});
1197
+ return null;
1198
+ };
1199
+
1200
+ var sharedMessages = reactIntl.defineMessages({
1201
+ [`modalTitle.${IMPORTABLE_RESOURCES.CATEGORY}`]: {
1202
+ id: "ImportResourcesModal.modalTitle.category",
1203
+ defaultMessage: "Import categories by CSV"
1204
+ },
1205
+ [`modalTitle.${IMPORTABLE_RESOURCES.PRODUCT}`]: {
1206
+ id: "ImportResourcesModal.modalTitle.product",
1207
+ defaultMessage: "Import products by CSV"
1208
+ },
1209
+ [`modalTitle.${IMPORTABLE_RESOURCES.INVENTORY}`]: {
1210
+ id: "ImportResourcesModal.modalTitle.inventoryEntry",
1211
+ defaultMessage: "Import inventories by CSV"
1212
+ },
1213
+ [`modalTitle.${IMPORTABLE_RESOURCES.DISCOUNT_CODE}`]: {
1214
+ id: "ImportResourcesModal.modalTitle.discountCode",
1215
+ defaultMessage: "Import discount codes by CSV"
1216
+ },
1217
+ [`modalTitle.${IMPORTABLE_RESOURCES.CUSTOMER}`]: {
1218
+ id: "ImportResourcesModal.modalTitle.customer",
1219
+ defaultMessage: "Import customers by CSV"
1220
+ },
1221
+ [`modalTitle.${IMPORTABLE_RESOURCES.ORDER}`]: {
1222
+ id: "ImportResourcesModal.modalTitle.order",
1223
+ defaultMessage: "Import orders by CSV"
1224
+ },
1225
+ [`modalTitle.${IMPORTABLE_RESOURCES.PRODUCT_TYPE}`]: {
1226
+ id: "ImportResourcesModal.modalTitle.productType",
1227
+ defaultMessage: "Import product types by CSV"
1228
+ },
1229
+ uploadButton: {
1230
+ id: "ImportResourcesModal.uploadButton",
1231
+ defaultMessage: "Upload and preview"
1232
+ },
1233
+ cancel: {
1234
+ id: "ImportResourcesModal.cancel",
1235
+ defaultMessage: "Cancel"
1236
+ },
1237
+ close: {
1238
+ id: "ImportResourcesModal.close",
1239
+ defaultMessage: "Close"
1240
+ }
1241
+ });
1242
+
1243
+ const Upload = () => {
1244
+ const _useImportResourcesCo = useImportResourcesContext(),
1245
+ state = _useImportResourcesCo.state,
1246
+ onClose = _useImportResourcesCo.onClose,
1247
+ resourceTypes = _useImportResourcesCo.resourceTypes;
1248
+ const intl = reactIntl.useIntl();
1249
+ const _useUpload = useUpload(),
1250
+ handleUploadAndValidation = _useUpload.handleUploadAndValidation;
1251
+ const isMultipleResourceTypes = resourceTypes.length > 1;
1252
+ return jsxRuntime.jsx(applicationComponents.FormDialog, {
1253
+ size: 16,
1254
+ isOpen: true,
1255
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1256
+ labelPrimary: intl.formatMessage(sharedMessages.uploadButton),
1257
+ onPrimaryButtonClick: handleUploadAndValidation,
1258
+ isPrimaryButtonDisabled: !Boolean(state.droppedFile),
1259
+ onSecondaryButtonClick: () => onClose({
1260
+ shouldDeleteImportContainer: true
1261
+ }),
1262
+ onClose: () => onClose({
1263
+ shouldDeleteImportContainer: true
1264
+ }),
1265
+ dataAttributesPrimaryButton: {
1266
+ 'data-tracking-target': `${state.resourceType}_import-upload_and_preview_button`
1267
+ },
1268
+ children: jsxRuntime.jsx(fullstory.Masking.Unmask, {
1269
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1270
+ scale: "m",
1271
+ children: [isMultipleResourceTypes ? jsxRuntime.jsxs(uiKit.Grid, {
1272
+ gridRowGap: uiKit.designTokens.spacingL,
1273
+ gridTemplateColumns: `calc(${uiKit.designTokens.constraint3} + ${uiKit.designTokens.spacingL}) auto`,
1274
+ children: [jsxRuntime.jsx(uiKit.Grid.Item, {
1275
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1276
+ isBold: true,
1277
+ intlMessage: messages$7.dataType
1278
+ })
1279
+ }), jsxRuntime.jsx(uiKit.Grid.Item, {
1280
+ children: jsxRuntime.jsx(ResourceTypeSelection, {})
1281
+ }), jsxRuntime.jsx(uiKit.Grid.Item, {
1282
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1283
+ isBold: true,
1284
+ intlMessage: messages$7.instructions
1285
+ })
1286
+ }), jsxRuntime.jsx(uiKit.Grid.Item, {
1287
+ children: jsxRuntime.jsx(Instructions, {})
1288
+ })]
1289
+ }) : jsxRuntime.jsx(jsxRuntime.Fragment, {
1290
+ children: jsxRuntime.jsx(Instructions, {})
1291
+ }), jsxRuntime.jsx(InfoBox, {}), jsxRuntime.jsx(fullstory.Masking.Mask, {
1292
+ children: jsxRuntime.jsx(FileDropArea, {})
1293
+ }), jsxRuntime.jsx(UploadSettings, {})]
1294
+ })
1295
+ })
1296
+ });
1297
+ };
1298
+
1299
+ var messages$4 = reactIntl.defineMessages({
1300
+ row: {
1301
+ id: "ImportResourcesModal.row",
1302
+ defaultMessage: "Row"
1303
+ },
1304
+ errorType: {
1305
+ id: "ImportResourcesModal.errorType",
1306
+ defaultMessage: "Error type"
1307
+ },
1308
+ details: {
1309
+ id: "ImportResourcesModal.details",
1310
+ defaultMessage: "Details"
1311
+ },
1312
+ uploadErrorDescription: {
1313
+ id: "ImportResourcesModal.uploadErrorDescription",
1314
+ defaultMessage: "There {errorsCount, plural, one {is <b>{errorsCount}</b> error} other {are <b>{errorsCount}</b> errors}} detected while uploading the file <b>{fileName}</b>."
1315
+ },
1316
+ supportedValuesDocumentation: {
1317
+ id: "ImportResourcesModal.supportedValuesDocumentation",
1318
+ defaultMessage: "<documentationLink>View the documentation</documentationLink> for supported values."
1319
+ },
1320
+ uploadNewFile: {
1321
+ id: "ImportResourcesModal.uploadNewFile",
1322
+ defaultMessage: "Upload new file"
1323
+ }
1324
+ });
1325
+
1326
+ function ownKeys$a(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1327
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$a(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$a(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1328
+ const getColumns$1 = () => [{
1329
+ key: 'errorType',
1330
+ label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$a({}, messages$4.errorType)),
1331
+ width: 'max-content'
1332
+ }, {
1333
+ key: 'details',
1334
+ label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$a({}, messages$4.details))
1335
+ }];
1336
+ const UploadErrorTable = props => {
1337
+ var _context;
1338
+ const pagination = uiKit.usePaginationState({
1339
+ perPage: 10
1340
+ });
1341
+ const startIndex = (pagination.page.value - 1) * pagination.perPage.value;
1342
+ const endIndex = startIndex + pagination.perPage.value;
1343
+ const currentPageRows = _sliceInstanceProperty__default["default"](_context = props.rows).call(_context, startIndex, endIndex);
1344
+ const shouldShowPagination = props.rows.length > pagination.perPage.value;
1345
+ return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1346
+ scale: "l",
1347
+ children: [jsxRuntime.jsx(DataTable__default["default"], {
1348
+ verticalCellAlignment: "center",
1349
+ isCondensed: true,
1350
+ rows: currentPageRows,
1351
+ columns: getColumns$1(),
1352
+ itemRenderer: itemRenderer$1
1353
+ }), shouldShowPagination && jsxRuntime.jsx(uiKit.PageNavigator, {
1354
+ onPageChange: pagination.page.onChange,
1355
+ page: pagination.page.value,
1356
+ totalPages: Math.ceil(props.rows.length / pagination.perPage.value)
1357
+ })]
1358
+ });
1359
+ };
1360
+ function itemRenderer$1(item, column) {
1361
+ switch (column.key) {
1362
+ case 'errorType':
1363
+ return jsxRuntime.jsx(uiKit.Stamp, {
1364
+ isCondensed: true,
1365
+ label: item.title,
1366
+ tone: "critical"
1367
+ });
1368
+ case 'details':
1369
+ return jsxRuntime.jsx(uiKit.Text.Body, {
1370
+ children: item.description
1371
+ });
1372
+ default:
1373
+ throw new UnexpectedColumnError(column.key);
1374
+ }
1375
+ }
1376
+
1377
+ function ownKeys$9(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1378
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$9(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$9(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1379
+ const UploadErrorsModal = () => {
1380
+ const intl = reactIntl.useIntl();
1381
+ const _useImportResourcesCo = useImportResourcesContext(),
1382
+ state = _useImportResourcesCo.state,
1383
+ actions = _useImportResourcesCo.actions,
1384
+ onClose = _useImportResourcesCo.onClose;
1385
+ const errorsCount = state.fileUploadErrors.length;
1386
+ return jsxRuntime.jsx(applicationComponents.InfoDialog, {
1387
+ size: 16,
1388
+ isOpen: true,
1389
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1390
+ onClose: () => onClose(),
1391
+ children: jsxRuntime.jsx(fullstory.Masking.Unmask, {
1392
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1393
+ scale: "l",
1394
+ children: [jsxRuntime.jsx(fullstory.Masking.Mask, {
1395
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1396
+ intlMessage: _objectSpread$9(_objectSpread$9({}, messages$4.uploadErrorDescription), {}, {
1397
+ values: {
1398
+ fileName: state.droppedFile?.name,
1399
+ errorsCount: intl.formatNumber(errorsCount),
1400
+ b: getBold$3
1401
+ }
1402
+ })
1403
+ })
1404
+ }), jsxRuntime.jsx(UploadErrorTable, {
1405
+ rows: mapFileUploadErrorsToUploadFileErrorRows(state.fileUploadErrors)
1406
+ }), jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1407
+ scale: "m",
1408
+ justifyContent: "flex-end",
1409
+ children: [jsxRuntime.jsx(uiKit.SecondaryButton, {
1410
+ label: intl.formatMessage(sharedMessages.close),
1411
+ onClick: () => onClose()
1412
+ }), jsxRuntime.jsx(uiKit.PrimaryButton, {
1413
+ iconLeft: jsxRuntime.jsx(uiKit.ImportIcon, {}),
1414
+ label: intl.formatMessage(messages$4.uploadNewFile),
1415
+ onClick: () => actions.uploadNewFile()
1416
+ })]
1417
+ })]
1418
+ })
1419
+ })
1420
+ });
1421
+ };
1422
+ function getBold$3(msg) {
1423
+ return jsxRuntime.jsx(uiKit.Text.Body, {
1424
+ as: "span",
1425
+ isBold: true,
1426
+ children: msg
1427
+ });
1428
+ }
1429
+
1430
+ function ownKeys$8(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1431
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$8(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$8(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1432
+ const getColumns = () => [{
1433
+ key: 'row',
1434
+ label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$8({}, messages$4.row)),
1435
+ width: 'max-content'
1436
+ }, {
1437
+ key: 'errorType',
1438
+ label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$8({}, messages$4.errorType)),
1439
+ width: 'max-content'
1440
+ }, {
1441
+ key: 'details',
1442
+ label: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$8({}, messages$4.details))
1443
+ }];
1444
+ const UploadRowErrorTable = props => {
1445
+ var _context;
1446
+ const pagination = uiKit.usePaginationState({
1447
+ perPage: 10
1448
+ });
1449
+ const startIndex = (pagination.page.value - 1) * pagination.perPage.value;
1450
+ const endIndex = startIndex + pagination.perPage.value;
1451
+ const currentPageRows = _sliceInstanceProperty__default["default"](_context = props.rows).call(_context, startIndex, endIndex);
1452
+ const shouldShowPagination = props.rows.length > pagination.perPage.value;
1453
+ return jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1454
+ scale: "l",
1455
+ children: [jsxRuntime.jsx(DataTable__default["default"], {
1456
+ verticalCellAlignment: "center",
1457
+ isCondensed: true,
1458
+ rows: currentPageRows,
1459
+ columns: getColumns(),
1460
+ itemRenderer: itemRenderer
1461
+ }), shouldShowPagination && jsxRuntime.jsx(uiKit.PageNavigator, {
1462
+ onPageChange: pagination.page.onChange,
1463
+ page: pagination.page.value,
1464
+ totalPages: Math.ceil(props.rows.length / pagination.perPage.value)
1465
+ })]
1466
+ });
1467
+ };
1468
+ function itemRenderer(item, column) {
1469
+ switch (column.key) {
1470
+ case 'row':
1471
+ return item.row;
1472
+ case 'errorType':
1473
+ return jsxRuntime.jsx(uiKit.Stamp, {
1474
+ isCondensed: true,
1475
+ label: formatErrorCode(item.code),
1476
+ tone: "critical"
1477
+ });
1478
+ case 'details':
1479
+ return jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1480
+ scale: "xs",
1481
+ children: [jsxRuntime.jsx(uiKit.Text.Body, {
1482
+ tone: "information",
1483
+ children: item.field
1484
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1485
+ children: extractErrorDescriptionFromValidationMessage(item.validationMessage)
1486
+ })]
1487
+ });
1488
+ default:
1489
+ throw new UnexpectedColumnError(column.key);
1490
+ }
1491
+ }
1492
+
1493
+ function ownKeys$7(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1494
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$7(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$7(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1495
+ const UploadRowErrorsModal = () => {
1496
+ const intl = reactIntl.useIntl();
1497
+ const _useImportResourcesCo = useImportResourcesContext(),
1498
+ state = _useImportResourcesCo.state,
1499
+ actions = _useImportResourcesCo.actions,
1500
+ onClose = _useImportResourcesCo.onClose;
1501
+ const errorsCount = getFileUploadErrorsCount(state.uploadFileResponse?.results);
1502
+ const documentationLink = RESOURCE_TYPE_DOCUMENTATION_LINKS[state.resourceType];
1503
+ return jsxRuntime.jsx(applicationComponents.InfoDialog, {
1504
+ size: 16,
1505
+ isOpen: true,
1506
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1507
+ onClose: onClose,
1508
+ children: jsxRuntime.jsx(fullstory.Masking.Unmask, {
1509
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1510
+ scale: "l",
1511
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1512
+ scale: "xs",
1513
+ children: [jsxRuntime.jsx(fullstory.Masking.Mask, {
1514
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1515
+ intlMessage: _objectSpread$7(_objectSpread$7({}, messages$4.uploadErrorDescription), {}, {
1516
+ values: {
1517
+ fileName: state.droppedFile?.name,
1518
+ errorsCount: intl.formatNumber(errorsCount),
1519
+ b: getBold$2
1520
+ }
1521
+ })
1522
+ })
1523
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1524
+ intlMessage: _objectSpread$7(_objectSpread$7({}, messages$4.supportedValuesDocumentation), {}, {
1525
+ values: {
1526
+ documentationLink: msg => jsxRuntime.jsx(uiKit.Link, {
1527
+ tone: "secondary",
1528
+ isExternal: true,
1529
+ to: documentationLink,
1530
+ children: msg
1531
+ })
1532
+ }
1533
+ })
1534
+ })]
1535
+ }), jsxRuntime.jsx(UploadRowErrorTable, {
1536
+ rows: mapUploadFileErrorsResponseToUploadFileErrorRows(state.uploadFileResponse?.results)
1537
+ }), jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1538
+ scale: "m",
1539
+ justifyContent: "flex-end",
1540
+ children: [jsxRuntime.jsx(uiKit.SecondaryButton, {
1541
+ label: intl.formatMessage(sharedMessages.close),
1542
+ onClick: () => onClose()
1543
+ }), jsxRuntime.jsx(uiKit.PrimaryButton, {
1544
+ iconLeft: jsxRuntime.jsx(uiKit.ImportIcon, {}),
1545
+ label: intl.formatMessage(messages$4.uploadNewFile),
1546
+ onClick: () => actions.uploadNewFile()
1547
+ })]
1548
+ })]
1549
+ })
1550
+ })
1551
+ });
1552
+ };
1553
+ function getBold$2(msg) {
1554
+ return jsxRuntime.jsx(uiKit.Text.Body, {
1555
+ as: "span",
1556
+ isBold: true,
1557
+ children: msg
1558
+ });
1559
+ }
1560
+
1561
+ var messages$3 = reactIntl.defineMessages({
1562
+ startImportButton: {
1563
+ id: "ImportResourcesModal.startImportButton",
1564
+ defaultMessage: "Start import"
1565
+ },
1566
+ importNotificationSuccessMessage: {
1567
+ id: "ImportResourcesModal.successMessage",
1568
+ defaultMessage: "<b>Your import has started.</b><newline></newline> <logsLink>Go to Import logs</logsLink> to view the progress."
1569
+ },
1570
+ importNotificationPrepareMessage: {
1571
+ id: "ImportResourcesModal.prepareMessage",
1572
+ defaultMessage: "<b>Prepare import</b><newline></newline>Once preparation is complete, you can track the import progress <logsLink>in the Import logs</logsLink>."
1573
+ },
1574
+ previewOfYourImport: {
1575
+ id: "ImportResourcesModal.previewOfYourImport",
1576
+ defaultMessage: "Here's a preview of your import"
1577
+ },
1578
+ rowsToBeImported: {
1579
+ id: "ImportResourcesModal.rowsToBeImported",
1580
+ defaultMessage: "{rowCount, plural, one {<b>1</b> row to be imported} other {<b>{rowCount}</b> rows to be imported}}{publish, select, true { and published} other {}}"
1581
+ },
1582
+ columnsToBeImported: {
1583
+ id: "ImportResourcesModal.columnsToBeImported",
1584
+ defaultMessage: "<b>{columnCount}</b> columns to be imported"
1585
+ },
1586
+ columnsToBeIgnored: {
1587
+ id: "ImportResourcesModal.columnsToBeIgnored",
1588
+ defaultMessage: "We will intentionally ignore <b>{columnCount}</b> columns as they can't be imported"
1589
+ },
1590
+ showMore: {
1591
+ id: "ImportResourcesModal.showMore",
1592
+ defaultMessage: "Show more"
1593
+ },
1594
+ showLess: {
1595
+ id: "ImportResourcesModal.showLess",
1596
+ defaultMessage: "Show less"
1597
+ },
1598
+ continue: {
1599
+ id: "ImportResourcesModal.continue",
1600
+ defaultMessage: "Continue"
1601
+ },
1602
+ confirmationBodyText: {
1603
+ id: "ImportResourcesModal.confirmationBodyText",
1604
+ defaultMessage: "You are about to import {count, plural, one {<bold>1</bold> row} other {<bold>{count}</bold> rows}} in the project: <bold>{projectName}</bold>."
1605
+ },
1606
+ confirmationBodyNote: {
1607
+ id: "ImportResourcesModal.confirmationBodyNote",
1608
+ defaultMessage: "Please be aware that existing values with the same keys will be overwritten by the data included in the CSV."
1609
+ },
1610
+ confirmationBodyQuestion: {
1611
+ id: "ImportResourcesModal.confirmationBodyQuestion",
1612
+ defaultMessage: "Proceed with the import?"
1613
+ }
1614
+ });
1615
+
1616
+ function ownKeys$6(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1617
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$6(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1618
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
1619
+ const AlignedContainer = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? {
1620
+ target: "e1amawj91"
1621
+ } : {
1622
+ target: "e1amawj91",
1623
+ label: "AlignedContainer"
1624
+ })(process.env.NODE_ENV === "production" ? {
1625
+ name: "1x0d6yz",
1626
+ styles: "padding-top:5px"
1627
+ } : {
1628
+ name: "1x0d6yz",
1629
+ styles: "padding-top:5px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbHVtbi1saXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXMEMiLCJmaWxlIjoiY29sdW1uLWxpc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSB9IGZyb20gJ3JlYWN0LWludGwnXG5pbXBvcnQgeyBMaW5rLCBTdGFtcCwgVGFnTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnXG5pbXBvcnQgeyBJTklUSUFMX0NPTFVNTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSAnLi4vLi4vQGNvbnN0YW50cydcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgY29sdW1uczogQXJyYXk8c3RyaW5nPlxufVxuXG5leHBvcnQgY29uc3QgQWxpZ25lZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmctdG9wOiA1cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBNb2RpZmllZFRhZ0xpc3QgPSBzdHlsZWQoVGFnTGlzdClgXG4gID4gZGl2IHtcbiAgICBtYXJnaW46IDhweCA4cHggMCAwO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBDb2x1bW5MaXN0ID0gKHByb3BzOiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbjxQcm9wcz4pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNob3VsZFNob3dFeHBhbmRCdXR0b24gPVxuICAgIHByb3BzLmNvbHVtbnMubGVuZ3RoID4gSU5JVElBTF9DT0xVTU5fRElTUExBWV9DT1VOVFxuICBjb25zdCBmaW5hbENvbHVtbnMgPSBpc0V4cGFuZGVkXG4gICAgPyBwcm9wcy5jb2x1bW5zXG4gICAgOiBwcm9wcy5jb2x1bW5zLnNsaWNlKDAsIElOSVRJQUxfQ09MVU1OX0RJU1BMQVlfQ09VTlQpXG5cbiAgcmV0dXJuIChcbiAgICA8TW9kaWZpZWRUYWdMaXN0PlxuICAgICAge2ZpbmFsQ29sdW1ucy5tYXAoKGNvbHVtbjogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoXG4gICAgICAgIDxTdGFtcCBrZXk9e2luZGV4fSBsYWJlbD17Y29sdW1ufSB0b25lPVwic2Vjb25kYXJ5XCIgLz5cbiAgICAgICkpfVxuICAgICAge3Nob3VsZFNob3dFeHBhbmRCdXR0b24gJiYgKFxuICAgICAgICA8QWxpZ25lZENvbnRhaW5lcj5cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCJcIlxuICAgICAgICAgICAgdG9uZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzRXhwYW5kZWQgPyAoXG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5zaG93TGVzc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5zaG93TW9yZX0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0FsaWduZWRDb250YWluZXI+XG4gICAgICApfVxuICAgIDwvTW9kaWZpZWRUYWdMaXN0PlxuICApXG59XG4iXX0= */",
1630
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
1631
+ });
1632
+ const ModifiedTagList = /*#__PURE__*/_styled__default["default"](uiKit.TagList, process.env.NODE_ENV === "production" ? {
1633
+ target: "e1amawj90"
1634
+ } : {
1635
+ target: "e1amawj90",
1636
+ label: "ModifiedTagList"
1637
+ })(process.env.NODE_ENV === "production" ? {
1638
+ name: "u9abxe",
1639
+ styles: ">div{margin:8px 8px 0 0;}"
1640
+ } : {
1641
+ name: "u9abxe",
1642
+ styles: ">div{margin:8px 8px 0 0;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbHVtbi1saXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlOEMiLCJmaWxlIjoiY29sdW1uLWxpc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSB9IGZyb20gJ3JlYWN0LWludGwnXG5pbXBvcnQgeyBMaW5rLCBTdGFtcCwgVGFnTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnXG5pbXBvcnQgeyBJTklUSUFMX0NPTFVNTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSAnLi4vLi4vQGNvbnN0YW50cydcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgY29sdW1uczogQXJyYXk8c3RyaW5nPlxufVxuXG5leHBvcnQgY29uc3QgQWxpZ25lZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmctdG9wOiA1cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBNb2RpZmllZFRhZ0xpc3QgPSBzdHlsZWQoVGFnTGlzdClgXG4gID4gZGl2IHtcbiAgICBtYXJnaW46IDhweCA4cHggMCAwO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBDb2x1bW5MaXN0ID0gKHByb3BzOiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbjxQcm9wcz4pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHNob3VsZFNob3dFeHBhbmRCdXR0b24gPVxuICAgIHByb3BzLmNvbHVtbnMubGVuZ3RoID4gSU5JVElBTF9DT0xVTU5fRElTUExBWV9DT1VOVFxuICBjb25zdCBmaW5hbENvbHVtbnMgPSBpc0V4cGFuZGVkXG4gICAgPyBwcm9wcy5jb2x1bW5zXG4gICAgOiBwcm9wcy5jb2x1bW5zLnNsaWNlKDAsIElOSVRJQUxfQ09MVU1OX0RJU1BMQVlfQ09VTlQpXG5cbiAgcmV0dXJuIChcbiAgICA8TW9kaWZpZWRUYWdMaXN0PlxuICAgICAge2ZpbmFsQ29sdW1ucy5tYXAoKGNvbHVtbjogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoXG4gICAgICAgIDxTdGFtcCBrZXk9e2luZGV4fSBsYWJlbD17Y29sdW1ufSB0b25lPVwic2Vjb25kYXJ5XCIgLz5cbiAgICAgICkpfVxuICAgICAge3Nob3VsZFNob3dFeHBhbmRCdXR0b24gJiYgKFxuICAgICAgICA8QWxpZ25lZENvbnRhaW5lcj5cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCJcIlxuICAgICAgICAgICAgdG9uZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzRXhwYW5kZWQgPyAoXG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5zaG93TGVzc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5zaG93TW9yZX0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0FsaWduZWRDb250YWluZXI+XG4gICAgICApfVxuICAgIDwvTW9kaWZpZWRUYWdMaXN0PlxuICApXG59XG4iXX0= */",
1643
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
1644
+ });
1645
+ const ColumnList = props => {
1646
+ var _context;
1647
+ const _React$useState = React__default["default"].useState(false),
1648
+ _React$useState2 = _slicedToArray(_React$useState, 2),
1649
+ isExpanded = _React$useState2[0],
1650
+ setIsExpanded = _React$useState2[1];
1651
+ const shouldShowExpandButton = props.columns.length > INITIAL_COLUMN_DISPLAY_COUNT;
1652
+ const finalColumns = isExpanded ? props.columns : _sliceInstanceProperty__default["default"](_context = props.columns).call(_context, 0, INITIAL_COLUMN_DISPLAY_COUNT);
1653
+ return jsxRuntime.jsxs(ModifiedTagList, {
1654
+ children: [_mapInstanceProperty__default["default"](finalColumns).call(finalColumns, (column, index) => jsxRuntime.jsx(uiKit.Stamp, {
1655
+ label: column,
1656
+ tone: "secondary"
1657
+ }, index)), shouldShowExpandButton && jsxRuntime.jsx(AlignedContainer, {
1658
+ children: jsxRuntime.jsx(uiKit.Link, {
1659
+ to: "",
1660
+ tone: "secondary",
1661
+ onClick: e => {
1662
+ e.preventDefault();
1663
+ setIsExpanded(!isExpanded);
1664
+ },
1665
+ children: isExpanded ? jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$6({}, messages$3.showLess)) : jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$6({}, messages$3.showMore))
1666
+ })
1667
+ })]
1668
+ });
1669
+ };
1670
+
1671
+ function ownKeys$5(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1672
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$5(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$5(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1673
+ function UploadPreviewModal() {
1674
+ const _useImportResourcesCo = useImportResourcesContext(),
1675
+ state = _useImportResourcesCo.state;
1676
+ const intl = reactIntl.useIntl();
1677
+ const _useImportResourcesCo2 = useImportResourcesContext(),
1678
+ actions = _useImportResourcesCo2.actions,
1679
+ onClose = _useImportResourcesCo2.onClose;
1680
+ if (!state.resourceType || !state.uploadFileResponse) return null;
1681
+ const ignoredColumns = state.uploadFileResponse.ignoredColumns;
1682
+ const validatedColumns = getValidatedColumns(state.uploadFileResponse.columns, ignoredColumns);
1683
+ return jsxRuntime.jsx(applicationComponents.FormDialog, {
1684
+ size: 16,
1685
+ isOpen: true,
1686
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1687
+ labelPrimary: intl.formatMessage(messages$3.continue),
1688
+ onSecondaryButtonClick: () => onClose({
1689
+ shouldDeleteImportContainer: true
1690
+ }),
1691
+ onPrimaryButtonClick: () => {
1692
+ actions.setCurrentStep(CurrentStep$1.ImportConfirmationModal);
1693
+ },
1694
+ onClose: () => onClose({
1695
+ shouldDeleteImportContainer: true
1696
+ }),
1697
+ children: jsxRuntime.jsx(fullstory.Masking.Unmask, {
1698
+ children: jsxRuntime.jsx(applicationComponents.PageContentNarrow, {
1699
+ children: jsxRuntime.jsx(uiKit.Spacings.Stack, {
1700
+ scale: "xxxl",
1701
+ children: jsxRuntime.jsx(uiKit.Spacings.Stack, {
1702
+ scale: "xl",
1703
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1704
+ scale: "m",
1705
+ children: [jsxRuntime.jsx("div", {}), jsxRuntime.jsx(uiKit.Text.Body, {
1706
+ intlMessage: messages$3.previewOfYourImport
1707
+ }), jsxRuntime.jsx(uiKit.Card, {
1708
+ insetScale: "xl",
1709
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1710
+ scale: "s",
1711
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1712
+ scale: "xs",
1713
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1714
+ alignItems: "center",
1715
+ children: [jsxRuntime.jsx(uiKit.CheckBoldIcon, {
1716
+ color: "success"
1717
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1718
+ intlMessage: _objectSpread$5(_objectSpread$5({}, messages$3.rowsToBeImported), {}, {
1719
+ values: {
1720
+ rowCount: intl.formatNumber(state.uploadFileResponse.rowsCount),
1721
+ publish: state.resourceType === 'product' && state.settings?.publish,
1722
+ b: getBold$1
1723
+ }
1724
+ })
1725
+ })]
1726
+ }), jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1727
+ alignItems: "center",
1728
+ children: [jsxRuntime.jsx(uiKit.CheckBoldIcon, {
1729
+ color: "success"
1730
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1731
+ intlMessage: _objectSpread$5(_objectSpread$5({}, messages$3.columnsToBeImported), {}, {
1732
+ values: {
1733
+ columnCount: intl.formatNumber(validatedColumns.length),
1734
+ b: getBold$1
1735
+ }
1736
+ })
1737
+ })]
1738
+ })]
1739
+ }), jsxRuntime.jsx(ColumnList, {
1740
+ columns: validatedColumns
1741
+ })]
1742
+ })
1743
+ }), ignoredColumns.length > 0 && jsxRuntime.jsx(uiKit.Card, {
1744
+ insetScale: "xl",
1745
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1746
+ scale: "s",
1747
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1748
+ alignItems: "center",
1749
+ children: [jsxRuntime.jsx(uiKit.EyeCrossedIcon, {
1750
+ color: "neutral60"
1751
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1752
+ intlMessage: _objectSpread$5(_objectSpread$5({}, messages$3.columnsToBeIgnored), {}, {
1753
+ values: {
1754
+ columnCount: intl.formatNumber(ignoredColumns.length),
1755
+ b: getBold$1
1756
+ }
1757
+ })
1758
+ })]
1759
+ }), jsxRuntime.jsx(ColumnList, {
1760
+ columns: ignoredColumns
1761
+ })]
1762
+ })
1763
+ })]
1764
+ })
1765
+ })
1766
+ })
1767
+ })
1768
+ })
1769
+ });
1770
+ }
1771
+ function getBold$1(msg) {
1772
+ return jsxRuntime.jsx(uiKit.Text.Body, {
1773
+ as: "span",
1774
+ isBold: true,
1775
+ children: msg
1776
+ });
1777
+ }
1778
+
1779
+ function ownKeys$4(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1780
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1781
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
1782
+ const getNewLine = () => jsxRuntime.jsx("br", {});
1783
+ const getImportLogsLink = (msg, projectKey) => jsxRuntime.jsx(uiKit.Link, {
1784
+ to: `/${projectKey}/operations/import/logs`,
1785
+ children: msg
1786
+ });
1787
+ var _ref2 = process.env.NODE_ENV === "production" ? {
1788
+ name: "1vs9i7r",
1789
+ styles: "width:360px"
1790
+ } : {
1791
+ name: "g36yzl-ImportRunningTextNotification",
1792
+ styles: "width:360px;label:ImportRunningTextNotification;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImltcG9ydC1jb25maXJtYXRpb24tbW9kYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCWSIsImZpbGUiOiJpbXBvcnQtY29uZmlybWF0aW9uLW1vZGFsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJ1xuaW1wb3J0IHsgdXNlU2hvd05vdGlmaWNhdGlvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FjdGlvbnMtZ2xvYmFsJ1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cydcbmltcG9ydCB7IHVzZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnXG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJ1xuaW1wb3J0IHsgTWFza2luZyBhcyBGdWxsU3RvcnlNYXNraW5nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvZnVsbHN0b3J5J1xuaW1wb3J0IHsgdXNlQXN5bmNEaXNwYXRjaCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NkaydcbmltcG9ydCB7IExpbmssIFNwYWNpbmdzLCBUZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0J1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcydcbmltcG9ydCB7IHByb2Nlc3NVcGxvYWRlZEZpbGUgfSBmcm9tICcuLi8uLi9AYXBpJ1xuaW1wb3J0IHsgdXNlSW1wb3J0UmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4uLy4uL0Bob29rcydcbmltcG9ydCB7IGlzRXJyb3IgfSBmcm9tICcuLi8uLi9AdHlwZXMnXG5pbXBvcnQgc2hhcmVkTWVzc2FnZXMgZnJvbSAnLi4vLi4vbWVzc2FnZXMnXG5cbmNvbnN0IGdldE5ld0xpbmUgPSAoKSA9PiA8YnIgLz5cbmNvbnN0IGdldEltcG9ydExvZ3NMaW5rID0gKG1zZzogc3RyaW5nLCBwcm9qZWN0S2V5Pzogc3RyaW5nKSA9PiAoXG4gIDxMaW5rIHRvPXtgLyR7cHJvamVjdEtleX0vb3BlcmF0aW9ucy9pbXBvcnQvbG9nc2B9Pnttc2d9PC9MaW5rPlxuKVxuXG5jb25zdCBJbXBvcnRSdW5uaW5nVGV4dE5vdGlmaWNhdGlvbiA9IChwcm9wczogeyBwcm9qZWN0S2V5OiBzdHJpbmcgfSkgPT4gKFxuICA8ZGl2XG4gICAgY3NzPXtjc3NgXG4gICAgICB3aWR0aDogMzYwcHg7XG4gICAgYH1cbiAgPlxuICAgIDxUZXh0LkJvZHlcbiAgICAgIGludGxNZXNzYWdlPXt7XG4gICAgICAgIC4uLm1lc3NhZ2VzLmltcG9ydE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlLFxuICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICBuZXdsaW5lOiBnZXROZXdMaW5lLFxuICAgICAgICAgIGxvZ3NMaW5rOiAobXNnOiBzdHJpbmcpID0+IGdldEltcG9ydExvZ3NMaW5rKG1zZywgcHJvcHMucHJvamVjdEtleSksXG4gICAgICAgICAgYjogZ2V0Qm9sZCxcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgLz5cbiAgPC9kaXY+XG4pXG5cbmNvbnN0IEltcG9ydFByZXBhcmluZ1RleHROb3RpZmljYXRpb24gPSAocHJvcHM6IHsgcHJvamVjdEtleTogc3RyaW5nIH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17Y3NzYFxuICAgICAgd2lkdGg6IDM2MHB4O1xuICAgIGB9XG4gID5cbiAgICA8VGV4dC5Cb2R5XG4gICAgICBpbnRsTWVzc2FnZT17e1xuICAgICAgICAuLi5tZXNzYWdlcy5pbXBvcnROb3RpZmljYXRpb25QcmVwYXJlTWVzc2FnZSxcbiAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgbmV3bGluZTogZ2V0TmV3TGluZSxcbiAgICAgICAgICBsb2dzTGluazogKG1zZzogc3RyaW5nKSA9PiBnZXRJbXBvcnRMb2dzTGluayhtc2csIHByb3BzLnByb2plY3RLZXkpLFxuICAgICAgICAgIGI6IGdldEJvbGQsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgIC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgSW1wb3J0Q29uZmlybWF0aW9uTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKClcbiAgY29uc3QgeyBzdGF0ZSwgb25TdGFydEltcG9ydFN1Y2Nlc3MsIG9uQ2xvc2UgfSA9IHVzZUltcG9ydFJlc291cmNlc0NvbnRleHQoKVxuICBjb25zdCB7IHByb2plY3RLZXksIHByb2plY3ROYW1lIH0gPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoKGNvbnRleHQpID0+ICh7XG4gICAgcHJvamVjdEtleTogY29udGV4dC5wcm9qZWN0Py5rZXksXG4gICAgcHJvamVjdE5hbWU6IGNvbnRleHQucHJvamVjdD8ubmFtZSxcbiAgfSkpXG5cbiAgY29uc3QgYXN5bmNEaXNwYXRjaCA9IHVzZUFzeW5jRGlzcGF0Y2goKVxuXG4gIGNvbnN0IHNob3dOb3RpZmljYXRpb24gPSB1c2VTaG93Tm90aWZpY2F0aW9uKClcblxuICByZXR1cm4gKFxuICAgIDxDb25maXJtYXRpb25EaWFsb2dcbiAgICAgIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHNoYXJlZE1lc3NhZ2VzW2Btb2RhbFRpdGxlLiR7c3RhdGUucmVzb3VyY2VUeXBlfWBdXG4gICAgICApfVxuICAgICAgbGFiZWxQcmltYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc3RhcnRJbXBvcnRCdXR0b24pfVxuICAgICAgaXNPcGVuPXt0cnVlfVxuICAgICAgb25DbG9zZT17KCkgPT4gb25DbG9zZSh7IHNob3VsZERlbGV0ZUltcG9ydENvbnRhaW5lcjogdHJ1ZSB9KX1cbiAgICAgIG9uQ2FuY2VsPXsoKSA9PiBvbkNsb3NlKHsgc2hvdWxkRGVsZXRlSW1wb3J0Q29udGFpbmVyOiB0cnVlIH0pfVxuICAgICAgZGF0YUF0dHJpYnV0ZXNQcmltYXJ5QnV0dG9uPXt7XG4gICAgICAgICdkYXRhLXRlc3QtaWQnOiAnY29uZmlybWF0aW9uLWRpYWxvZy1jb25maXJtJyxcbiAgICAgIH19XG4gICAgICBkYXRhQXR0cmlidXRlc1NlY29uZGFyeUJ1dHRvbj17e1xuICAgICAgICAnZGF0YS10ZXN0LWlkJzogJ2NvbmZpcm1hdGlvbi1kaWFsb2ctY2FuY2VsJyxcbiAgICAgICAgJ2RhdGEtdHJhY2tpbmctdGFyZ2V0JzogYCR7c3RhdGUucmVzb3VyY2VUeXBlfV9pbXBvcnQtc3RhcnRfaW1wb3J0X2J1dHRvbmAsXG4gICAgICB9fVxuICAgICAgb25Db25maXJtPXthc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY2FuQ29uZmlybSA9XG4gICAgICAgICAgICBwcm9qZWN0S2V5ICYmXG4gICAgICAgICAgICBzdGF0ZS5jb250YWluZXJLZXkgJiZcbiAgICAgICAgICAgIHN0YXRlLmRyb3BwZWRGaWxlPy5uYW1lICYmXG4gICAgICAgICAgICBzdGF0ZS5yZXNvdXJjZVR5cGVcbiAgICAgICAgICBpZiAoIWNhbkNvbmZpcm0pIHJldHVyblxuICAgICAgICAgIG9uQ2xvc2UoKVxuICAgICAgICAgIHNob3dOb3RpZmljYXRpb24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtpbmQ6ICdpbmZvJyxcbiAgICAgICAgICAgICAgZG9tYWluOiBET01BSU5TLlNJREUsXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGV4dDogPEltcG9ydFByZXBhcmluZ1RleHROb3RpZmljYXRpb24gcHJvamVjdEtleT17cHJvamVjdEtleX0gLz4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXNtaXNzQWZ0ZXI6IDUwMDAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHByb2Nlc3NVcGxvYWRlZEZpbGUoe1xuICAgICAgICAgICAgcHJvamVjdEtleSxcbiAgICAgICAgICAgIGNvbnRhaW5lcktleTogc3RhdGUuY29udGFpbmVyS2V5ISxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogc3RhdGUucmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgIGFzeW5jRGlzcGF0Y2gsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBvblN0YXJ0SW1wb3J0U3VjY2VzcygpXG4gICAgICAgICAgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2luZDogJ2luZm8nLFxuICAgICAgICAgICAgICBkb21haW46IERPTUFJTlMuU0lERSxcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICB0ZXh0OiA8SW1wb3J0UnVubmluZ1RleHROb3RpZmljYXRpb24gcHJvamVjdEtleT17cHJvamVjdEtleX0gLz4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXNtaXNzQWZ0ZXI6IDUwMDAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIG9uQ2xvc2UoeyBzaG91bGREZWxldGVJbXBvcnRDb250YWluZXI6IHRydWUgfSlcbiAgICAgICAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIGtpbmQ6ICdlcnJvcicsXG4gICAgICAgICAgICBkb21haW46IERPTUFJTlMuUEFHRSxcbiAgICAgICAgICAgIHRleHQ6IGlzRXJyb3IoZXJyb3IpID8gZXJyb3IudG9TdHJpbmcoKSA6IFN0cmluZyhlcnJvciksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIHNpemU9ezE2fVxuICAgID5cbiAgICAgIDxGdWxsU3RvcnlNYXNraW5nLlVubWFzaz5cbiAgICAgICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwieGxcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFRleHQuQm9keVxuICAgICAgICAgICAgICBpbnRsTWVzc2FnZT17e1xuICAgICAgICAgICAgICAgIC4uLm1lc3NhZ2VzLmNvbmZpcm1hdGlvbkJvZHlUZXh0LFxuICAgICAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lLFxuICAgICAgICAgICAgICAgICAgY291bnQ6IGludGwuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZT8udXBsb2FkRmlsZVJlc3BvbnNlPy5yb3dzQ291bnQgfHwgMFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGdldEJvbGQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGV4dC5Cb2R5IGludGxNZXNzYWdlPXttZXNzYWdlcy5jb25maXJtYXRpb25Cb2R5Tm90ZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8VGV4dC5Cb2R5IGludGxNZXNzYWdlPXttZXNzYWdlcy5jb25maXJtYXRpb25Cb2R5UXVlc3Rpb259IC8+XG4gICAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgICA8L0Z1bGxTdG9yeU1hc2tpbmcuVW5tYXNrPlxuICAgIDwvQ29uZmlybWF0aW9uRGlhbG9nPlxuICApXG59XG5cbmZ1bmN0aW9uIGdldEJvbGQobXNnOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICA8VGV4dC5Cb2R5IGFzPVwic3BhblwiIGlzQm9sZD5cbiAgICAgIHttc2d9XG4gICAgPC9UZXh0LkJvZHk+XG4gIClcbn1cbiJdfQ== */",
1793
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
1794
+ };
1795
+ const ImportRunningTextNotification = props => jsxRuntime.jsx("div", {
1796
+ css: _ref2,
1797
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1798
+ intlMessage: _objectSpread$4(_objectSpread$4({}, messages$3.importNotificationSuccessMessage), {}, {
1799
+ values: {
1800
+ newline: getNewLine,
1801
+ logsLink: msg => getImportLogsLink(msg, props.projectKey),
1802
+ b: getBold
1803
+ }
1804
+ })
1805
+ })
1806
+ });
1807
+ var _ref = process.env.NODE_ENV === "production" ? {
1808
+ name: "1vs9i7r",
1809
+ styles: "width:360px"
1810
+ } : {
1811
+ name: "mjwslu-ImportPreparingTextNotification",
1812
+ styles: "width:360px;label:ImportPreparingTextNotification;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImltcG9ydC1jb25maXJtYXRpb24tbW9kYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlDWSIsImZpbGUiOiJpbXBvcnQtY29uZmlybWF0aW9uLW1vZGFsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJ1xuaW1wb3J0IHsgdXNlU2hvd05vdGlmaWNhdGlvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FjdGlvbnMtZ2xvYmFsJ1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cydcbmltcG9ydCB7IHVzZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnXG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJ1xuaW1wb3J0IHsgTWFza2luZyBhcyBGdWxsU3RvcnlNYXNraW5nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvZnVsbHN0b3J5J1xuaW1wb3J0IHsgdXNlQXN5bmNEaXNwYXRjaCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NkaydcbmltcG9ydCB7IExpbmssIFNwYWNpbmdzLCBUZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0J1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcydcbmltcG9ydCB7IHByb2Nlc3NVcGxvYWRlZEZpbGUgfSBmcm9tICcuLi8uLi9AYXBpJ1xuaW1wb3J0IHsgdXNlSW1wb3J0UmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4uLy4uL0Bob29rcydcbmltcG9ydCB7IGlzRXJyb3IgfSBmcm9tICcuLi8uLi9AdHlwZXMnXG5pbXBvcnQgc2hhcmVkTWVzc2FnZXMgZnJvbSAnLi4vLi4vbWVzc2FnZXMnXG5cbmNvbnN0IGdldE5ld0xpbmUgPSAoKSA9PiA8YnIgLz5cbmNvbnN0IGdldEltcG9ydExvZ3NMaW5rID0gKG1zZzogc3RyaW5nLCBwcm9qZWN0S2V5Pzogc3RyaW5nKSA9PiAoXG4gIDxMaW5rIHRvPXtgLyR7cHJvamVjdEtleX0vb3BlcmF0aW9ucy9pbXBvcnQvbG9nc2B9Pnttc2d9PC9MaW5rPlxuKVxuXG5jb25zdCBJbXBvcnRSdW5uaW5nVGV4dE5vdGlmaWNhdGlvbiA9IChwcm9wczogeyBwcm9qZWN0S2V5OiBzdHJpbmcgfSkgPT4gKFxuICA8ZGl2XG4gICAgY3NzPXtjc3NgXG4gICAgICB3aWR0aDogMzYwcHg7XG4gICAgYH1cbiAgPlxuICAgIDxUZXh0LkJvZHlcbiAgICAgIGludGxNZXNzYWdlPXt7XG4gICAgICAgIC4uLm1lc3NhZ2VzLmltcG9ydE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlLFxuICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICBuZXdsaW5lOiBnZXROZXdMaW5lLFxuICAgICAgICAgIGxvZ3NMaW5rOiAobXNnOiBzdHJpbmcpID0+IGdldEltcG9ydExvZ3NMaW5rKG1zZywgcHJvcHMucHJvamVjdEtleSksXG4gICAgICAgICAgYjogZ2V0Qm9sZCxcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgLz5cbiAgPC9kaXY+XG4pXG5cbmNvbnN0IEltcG9ydFByZXBhcmluZ1RleHROb3RpZmljYXRpb24gPSAocHJvcHM6IHsgcHJvamVjdEtleTogc3RyaW5nIH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17Y3NzYFxuICAgICAgd2lkdGg6IDM2MHB4O1xuICAgIGB9XG4gID5cbiAgICA8VGV4dC5Cb2R5XG4gICAgICBpbnRsTWVzc2FnZT17e1xuICAgICAgICAuLi5tZXNzYWdlcy5pbXBvcnROb3RpZmljYXRpb25QcmVwYXJlTWVzc2FnZSxcbiAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgbmV3bGluZTogZ2V0TmV3TGluZSxcbiAgICAgICAgICBsb2dzTGluazogKG1zZzogc3RyaW5nKSA9PiBnZXRJbXBvcnRMb2dzTGluayhtc2csIHByb3BzLnByb2plY3RLZXkpLFxuICAgICAgICAgIGI6IGdldEJvbGQsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgIC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgSW1wb3J0Q29uZmlybWF0aW9uTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKClcbiAgY29uc3QgeyBzdGF0ZSwgb25TdGFydEltcG9ydFN1Y2Nlc3MsIG9uQ2xvc2UgfSA9IHVzZUltcG9ydFJlc291cmNlc0NvbnRleHQoKVxuICBjb25zdCB7IHByb2plY3RLZXksIHByb2plY3ROYW1lIH0gPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoKGNvbnRleHQpID0+ICh7XG4gICAgcHJvamVjdEtleTogY29udGV4dC5wcm9qZWN0Py5rZXksXG4gICAgcHJvamVjdE5hbWU6IGNvbnRleHQucHJvamVjdD8ubmFtZSxcbiAgfSkpXG5cbiAgY29uc3QgYXN5bmNEaXNwYXRjaCA9IHVzZUFzeW5jRGlzcGF0Y2goKVxuXG4gIGNvbnN0IHNob3dOb3RpZmljYXRpb24gPSB1c2VTaG93Tm90aWZpY2F0aW9uKClcblxuICByZXR1cm4gKFxuICAgIDxDb25maXJtYXRpb25EaWFsb2dcbiAgICAgIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHNoYXJlZE1lc3NhZ2VzW2Btb2RhbFRpdGxlLiR7c3RhdGUucmVzb3VyY2VUeXBlfWBdXG4gICAgICApfVxuICAgICAgbGFiZWxQcmltYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc3RhcnRJbXBvcnRCdXR0b24pfVxuICAgICAgaXNPcGVuPXt0cnVlfVxuICAgICAgb25DbG9zZT17KCkgPT4gb25DbG9zZSh7IHNob3VsZERlbGV0ZUltcG9ydENvbnRhaW5lcjogdHJ1ZSB9KX1cbiAgICAgIG9uQ2FuY2VsPXsoKSA9PiBvbkNsb3NlKHsgc2hvdWxkRGVsZXRlSW1wb3J0Q29udGFpbmVyOiB0cnVlIH0pfVxuICAgICAgZGF0YUF0dHJpYnV0ZXNQcmltYXJ5QnV0dG9uPXt7XG4gICAgICAgICdkYXRhLXRlc3QtaWQnOiAnY29uZmlybWF0aW9uLWRpYWxvZy1jb25maXJtJyxcbiAgICAgIH19XG4gICAgICBkYXRhQXR0cmlidXRlc1NlY29uZGFyeUJ1dHRvbj17e1xuICAgICAgICAnZGF0YS10ZXN0LWlkJzogJ2NvbmZpcm1hdGlvbi1kaWFsb2ctY2FuY2VsJyxcbiAgICAgICAgJ2RhdGEtdHJhY2tpbmctdGFyZ2V0JzogYCR7c3RhdGUucmVzb3VyY2VUeXBlfV9pbXBvcnQtc3RhcnRfaW1wb3J0X2J1dHRvbmAsXG4gICAgICB9fVxuICAgICAgb25Db25maXJtPXthc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY2FuQ29uZmlybSA9XG4gICAgICAgICAgICBwcm9qZWN0S2V5ICYmXG4gICAgICAgICAgICBzdGF0ZS5jb250YWluZXJLZXkgJiZcbiAgICAgICAgICAgIHN0YXRlLmRyb3BwZWRGaWxlPy5uYW1lICYmXG4gICAgICAgICAgICBzdGF0ZS5yZXNvdXJjZVR5cGVcbiAgICAgICAgICBpZiAoIWNhbkNvbmZpcm0pIHJldHVyblxuICAgICAgICAgIG9uQ2xvc2UoKVxuICAgICAgICAgIHNob3dOb3RpZmljYXRpb24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtpbmQ6ICdpbmZvJyxcbiAgICAgICAgICAgICAgZG9tYWluOiBET01BSU5TLlNJREUsXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGV4dDogPEltcG9ydFByZXBhcmluZ1RleHROb3RpZmljYXRpb24gcHJvamVjdEtleT17cHJvamVjdEtleX0gLz4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXNtaXNzQWZ0ZXI6IDUwMDAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIGF3YWl0IHByb2Nlc3NVcGxvYWRlZEZpbGUoe1xuICAgICAgICAgICAgcHJvamVjdEtleSxcbiAgICAgICAgICAgIGNvbnRhaW5lcktleTogc3RhdGUuY29udGFpbmVyS2V5ISxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogc3RhdGUucmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgIGFzeW5jRGlzcGF0Y2gsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBvblN0YXJ0SW1wb3J0U3VjY2VzcygpXG4gICAgICAgICAgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2luZDogJ2luZm8nLFxuICAgICAgICAgICAgICBkb21haW46IERPTUFJTlMuU0lERSxcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICB0ZXh0OiA8SW1wb3J0UnVubmluZ1RleHROb3RpZmljYXRpb24gcHJvamVjdEtleT17cHJvamVjdEtleX0gLz4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXNtaXNzQWZ0ZXI6IDUwMDAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIG9uQ2xvc2UoeyBzaG91bGREZWxldGVJbXBvcnRDb250YWluZXI6IHRydWUgfSlcbiAgICAgICAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIGtpbmQ6ICdlcnJvcicsXG4gICAgICAgICAgICBkb21haW46IERPTUFJTlMuUEFHRSxcbiAgICAgICAgICAgIHRleHQ6IGlzRXJyb3IoZXJyb3IpID8gZXJyb3IudG9TdHJpbmcoKSA6IFN0cmluZyhlcnJvciksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIHNpemU9ezE2fVxuICAgID5cbiAgICAgIDxGdWxsU3RvcnlNYXNraW5nLlVubWFzaz5cbiAgICAgICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwieGxcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFRleHQuQm9keVxuICAgICAgICAgICAgICBpbnRsTWVzc2FnZT17e1xuICAgICAgICAgICAgICAgIC4uLm1lc3NhZ2VzLmNvbmZpcm1hdGlvbkJvZHlUZXh0LFxuICAgICAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lLFxuICAgICAgICAgICAgICAgICAgY291bnQ6IGludGwuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZT8udXBsb2FkRmlsZVJlc3BvbnNlPy5yb3dzQ291bnQgfHwgMFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGdldEJvbGQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGV4dC5Cb2R5IGludGxNZXNzYWdlPXttZXNzYWdlcy5jb25maXJtYXRpb25Cb2R5Tm90ZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8VGV4dC5Cb2R5IGludGxNZXNzYWdlPXttZXNzYWdlcy5jb25maXJtYXRpb25Cb2R5UXVlc3Rpb259IC8+XG4gICAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgICA8L0Z1bGxTdG9yeU1hc2tpbmcuVW5tYXNrPlxuICAgIDwvQ29uZmlybWF0aW9uRGlhbG9nPlxuICApXG59XG5cbmZ1bmN0aW9uIGdldEJvbGQobXNnOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICA8VGV4dC5Cb2R5IGFzPVwic3BhblwiIGlzQm9sZD5cbiAgICAgIHttc2d9XG4gICAgPC9UZXh0LkJvZHk+XG4gIClcbn1cbiJdfQ== */",
1813
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
1814
+ };
1815
+ const ImportPreparingTextNotification = props => jsxRuntime.jsx("div", {
1816
+ css: _ref,
1817
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1818
+ intlMessage: _objectSpread$4(_objectSpread$4({}, messages$3.importNotificationPrepareMessage), {}, {
1819
+ values: {
1820
+ newline: getNewLine,
1821
+ logsLink: msg => getImportLogsLink(msg, props.projectKey),
1822
+ b: getBold
1823
+ }
1824
+ })
1825
+ })
1826
+ });
1827
+ const ImportConfirmationModal = () => {
1828
+ const intl = reactIntl.useIntl();
1829
+ const _useImportResourcesCo = useImportResourcesContext(),
1830
+ state = _useImportResourcesCo.state,
1831
+ onStartImportSuccess = _useImportResourcesCo.onStartImportSuccess,
1832
+ onClose = _useImportResourcesCo.onClose;
1833
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(context => ({
1834
+ projectKey: context.project?.key,
1835
+ projectName: context.project?.name
1836
+ })),
1837
+ projectKey = _useApplicationContex.projectKey,
1838
+ projectName = _useApplicationContex.projectName;
1839
+ const asyncDispatch = sdk.useAsyncDispatch();
1840
+ const showNotification = actionsGlobal.useShowNotification();
1841
+ return jsxRuntime.jsx(applicationComponents.ConfirmationDialog, {
1842
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1843
+ labelPrimary: intl.formatMessage(messages$3.startImportButton),
1844
+ isOpen: true,
1845
+ onClose: () => onClose({
1846
+ shouldDeleteImportContainer: true
1847
+ }),
1848
+ onCancel: () => onClose({
1849
+ shouldDeleteImportContainer: true
1850
+ }),
1851
+ dataAttributesPrimaryButton: {
1852
+ 'data-test-id': 'confirmation-dialog-confirm'
1853
+ },
1854
+ dataAttributesSecondaryButton: {
1855
+ 'data-test-id': 'confirmation-dialog-cancel',
1856
+ 'data-tracking-target': `${state.resourceType}_import-start_import_button`
1857
+ },
1858
+ onConfirm: async () => {
1859
+ try {
1860
+ const canConfirm = projectKey && state.containerKey && state.droppedFile?.name && state.resourceType;
1861
+ if (!canConfirm) return;
1862
+ onClose();
1863
+ showNotification({
1864
+ kind: 'info',
1865
+ domain: constants.DOMAINS.SIDE,
1866
+ // @ts-ignore
1867
+ text: jsxRuntime.jsx(ImportPreparingTextNotification, {
1868
+ projectKey: projectKey
1869
+ })
1870
+ }, {
1871
+ dismissAfter: 5000
1872
+ });
1873
+ await processUploadedFile({
1874
+ projectKey,
1875
+ containerKey: state.containerKey,
1876
+ resourceType: state.resourceType,
1877
+ asyncDispatch
1878
+ });
1879
+ onStartImportSuccess();
1880
+ showNotification({
1881
+ kind: 'info',
1882
+ domain: constants.DOMAINS.SIDE,
1883
+ // @ts-ignore
1884
+ text: jsxRuntime.jsx(ImportRunningTextNotification, {
1885
+ projectKey: projectKey
1886
+ })
1887
+ }, {
1888
+ dismissAfter: 5000
1889
+ });
1890
+ } catch (error) {
1891
+ onClose({
1892
+ shouldDeleteImportContainer: true
1893
+ });
1894
+ showNotification({
1895
+ kind: 'error',
1896
+ domain: constants.DOMAINS.PAGE,
1897
+ text: isError(error) ? error.toString() : String(error)
1898
+ });
1899
+ }
1900
+ },
1901
+ size: 16,
1902
+ children: jsxRuntime.jsx(fullstory.Masking.Unmask, {
1903
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1904
+ scale: "xl",
1905
+ children: [jsxRuntime.jsxs("div", {
1906
+ children: [jsxRuntime.jsx(uiKit.Text.Body, {
1907
+ intlMessage: _objectSpread$4(_objectSpread$4({}, messages$3.confirmationBodyText), {}, {
1908
+ values: {
1909
+ projectName: projectName,
1910
+ count: intl.formatNumber(state?.uploadFileResponse?.rowsCount || 0),
1911
+ bold: getBold
1912
+ }
1913
+ })
1914
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1915
+ intlMessage: messages$3.confirmationBodyNote
1916
+ })]
1917
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
1918
+ intlMessage: messages$3.confirmationBodyQuestion
1919
+ })]
1920
+ })
1921
+ })
1922
+ });
1923
+ };
1924
+ function getBold(msg) {
1925
+ return jsxRuntime.jsx(uiKit.Text.Body, {
1926
+ as: "span",
1927
+ isBold: true,
1928
+ children: msg
1929
+ });
1930
+ }
1931
+
1932
+ const UploadResult = () => {
1933
+ const _useImportResourcesCo = useImportResourcesContext(),
1934
+ state = _useImportResourcesCo.state;
1935
+ if (state.fileUploadErrors.length > 0) return jsxRuntime.jsx(UploadErrorsModal, {});
1936
+ if (state.uploadFileResponse?.invalid > 0) return jsxRuntime.jsx(UploadRowErrorsModal, {});
1937
+ return jsxRuntime.jsx(UploadPreviewModal, {});
1938
+ };
1939
+
1940
+ function ownKeys$3(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1941
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$3(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$3(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1942
+ var FileIcon = function FileIcon(props) {
1943
+ return jsxRuntime.jsxs("svg", _objectSpread$3(_objectSpread$3({}, props), {}, {
1944
+ children: [jsxRuntime.jsx("mask", {
1945
+ id: "a",
1946
+ style: {
1947
+ maskType: "alpha"
1948
+ },
1949
+ maskUnits: "userSpaceOnUse",
1950
+ x: "0",
1951
+ y: "0",
1952
+ width: "32",
1953
+ height: "32",
1954
+ children: jsxRuntime.jsx("path", {
1955
+ fill: "#D9D9D9",
1956
+ d: "M0 0h32v32H0z"
1957
+ })
1958
+ }), jsxRuntime.jsx("g", {
1959
+ mask: "url(#a)",
1960
+ children: jsxRuntime.jsx("path", {
1961
+ d: "M14.667 25.333h2.666v-5.566l2.134 2.133 1.866-1.9L16 14.667 10.667 20l1.9 1.867 2.1-2.1v5.566Zm-6.667 4a2.568 2.568 0 0 1-1.883-.783 2.568 2.568 0 0 1-.784-1.883V5.333c0-.733.261-1.36.784-1.883A2.568 2.568 0 0 1 8 2.667h10.667l8 8v16c0 .733-.261 1.36-.784 1.883a2.568 2.568 0 0 1-1.883.783H8ZM17.333 12H24l-6.667-6.667V12Z",
1962
+ fill: "#B1ACFF"
1963
+ })
1964
+ })]
1965
+ }));
1966
+ };
1967
+ FileIcon.defaultProps = {
1968
+ width: "32",
1969
+ height: "32",
1970
+ fill: "none",
1971
+ xmlns: "http://www.w3.org/2000/svg"
1972
+ };
1973
+ const Uploading = () => {
1974
+ const intl = reactIntl.useIntl();
1975
+ const _useImportResourcesCo = useImportResourcesContext(),
1976
+ state = _useImportResourcesCo.state,
1977
+ actions = _useImportResourcesCo.actions,
1978
+ onClose = _useImportResourcesCo.onClose;
1979
+ if (state.droppedFile?.name) return jsxRuntime.jsx(applicationComponents.InfoDialog, {
1980
+ size: 16,
1981
+ isOpen: true,
1982
+ title: intl.formatMessage(sharedMessages[`modalTitle.${state.resourceType}`]),
1983
+ onClose: () => onClose({
1984
+ shouldDeleteImportContainer: true
1985
+ }),
1986
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1987
+ scale: "m",
1988
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1989
+ alignItems: "center",
1990
+ justifyContent: "space-between",
1991
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1992
+ alignItems: "center",
1993
+ children: [jsxRuntime.jsx(FileIcon, {}), jsxRuntime.jsx(uiKit.Spacings.Inline, {
1994
+ children: jsxRuntime.jsx(uiKit.Constraints.Horizontal, {
1995
+ max: 10,
1996
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
1997
+ truncate: true,
1998
+ isBold: true,
1999
+ children: state.droppedFile.name
2000
+ })
2001
+ })
2002
+ }), jsxRuntime.jsxs(uiKit.Text.Body, {
2003
+ tone: "secondary",
2004
+ children: ["(", intl.formatNumber(convertFileSizeToKB(state.droppedFile.size)), ' ', "KB)"]
2005
+ })]
2006
+ }), jsxRuntime.jsx(uiKit.SecondaryButton, {
2007
+ tone: "secondary",
2008
+ size: "medium",
2009
+ label: intl.formatMessage(sharedMessages.cancel),
2010
+ onClick: () => {
2011
+ actions.setCurrentStep(CurrentStep$1.Upload);
2012
+ state.abortController.abort();
2013
+ }
2014
+ })]
2015
+ }), jsxRuntime.jsx(uiKit.ProgressBar, {
2016
+ barWidth: "scale",
2017
+ height: "10",
2018
+ progress: state.progress
2019
+ }), jsxRuntime.jsx("div", {})]
2020
+ })
2021
+ });
2022
+ return null;
2023
+ };
2024
+
2025
+ const CurrentStep = () => {
2026
+ const _useImportResourcesCo = useImportResourcesContext(),
2027
+ state = _useImportResourcesCo.state;
2028
+ const steps = {
2029
+ upload: jsxRuntime.jsx(Upload, {}),
2030
+ uploading: jsxRuntime.jsx(Uploading, {}),
2031
+ 'upload-result': jsxRuntime.jsx(UploadResult, {}),
2032
+ 'import-confirmation-modal': jsxRuntime.jsx(ImportConfirmationModal, {})
2033
+ };
2034
+ return steps[state.currentStep] || null;
2035
+ };
2036
+
2037
+ var messages$2 = reactIntl.defineMessages({
2038
+ products: {
2039
+ id: "ImportResourcesModal.radio.products",
2040
+ defaultMessage: "Products (including variants, assets, prices and images)"
2041
+ },
2042
+ inventories: {
2043
+ id: "ImportResourcesModal.radio.inventories",
2044
+ defaultMessage: "Inventories"
2045
+ },
2046
+ categories: {
2047
+ id: "ImportResourcesModal.radio.categories",
2048
+ defaultMessage: "Categories"
2049
+ }
2050
+ });
2051
+
2052
+ const resourceTypeToDisplayName = resourceType => {
2053
+ switch (resourceType) {
2054
+ case IMPORTABLE_RESOURCES.PRODUCT:
2055
+ return messages$2.products;
2056
+ case IMPORTABLE_RESOURCES.INVENTORY:
2057
+ return messages$2.inventories;
2058
+ case IMPORTABLE_RESOURCES.CATEGORY:
2059
+ return messages$2.categories;
2060
+ default:
2061
+ throw new Error(`Unknown resource type: ${resourceType}`);
2062
+ }
2063
+ };
2064
+ const ResourceTypeSelection = () => {
2065
+ const _useImportResourcesCo = useImportResourcesContext(),
2066
+ state = _useImportResourcesCo.state,
2067
+ actions = _useImportResourcesCo.actions,
2068
+ resourceTypes = _useImportResourcesCo.resourceTypes;
2069
+ return jsxRuntime.jsx(uiKit.RadioInput.Group, {
2070
+ value: state.resourceType,
2071
+ onChange: e => {
2072
+ actions.setResourceType(e.target.value);
2073
+ },
2074
+ direction: "stack",
2075
+ directionProps: {
2076
+ scale: 's'
2077
+ },
2078
+ children: _mapInstanceProperty__default["default"](resourceTypes).call(resourceTypes, resourceType => jsxRuntime.jsx(uiKit.RadioInput.Option, {
2079
+ value: resourceType,
2080
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
2081
+ intlMessage: resourceTypeToDisplayName(resourceType)
2082
+ })
2083
+ }, resourceType))
2084
+ });
2085
+ };
2086
+
2087
+ var messages$1 = reactIntl.defineMessages({
2088
+ fileUploadInstructions: {
2089
+ id: "ImportResourcesModal.fileUploadInstructions",
2090
+ defaultMessage: "Maximum file size is {fileSize} MB with a limit of {rowLimit} rows. Download <csvTemplateLink>the CSV template</csvTemplateLink> or refer to <documentationLink>the documentation</documentationLink>."
2091
+ }
2092
+ });
2093
+
2094
+ function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
2095
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$2(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
2096
+ const Instructions = () => {
2097
+ const intl = reactIntl.useIntl();
2098
+ const _useImportResourcesCo = useImportResourcesContext(),
2099
+ state = _useImportResourcesCo.state;
2100
+ const templateLink = RESOURCE_TYPE_TEMPLATE_DOWNLOAD_LINKS[state.resourceType];
2101
+ const documentationLink = RESOURCE_TYPE_DOCUMENTATION_LINKS[state.resourceType];
2102
+ return jsxRuntime.jsx(uiKit.Text.Body, {
2103
+ intlMessage: _objectSpread$2(_objectSpread$2({}, messages$1.fileUploadInstructions), {}, {
2104
+ values: {
2105
+ fileSize: intl.formatNumber(FILE_SIZE_LIMITS_MB[state.resourceType]),
2106
+ rowLimit: intl.formatNumber(ROW_LIMITS[state.resourceType]),
2107
+ csvTemplateLink: msg => jsxRuntime.jsx(uiKit.Link, {
2108
+ tone: "secondary",
2109
+ isExternal: true,
2110
+ to: templateLink,
2111
+ children: msg
2112
+ }),
2113
+ documentationLink: msg => jsxRuntime.jsx(uiKit.Link, {
2114
+ tone: "secondary",
2115
+ isExternal: true,
2116
+ to: documentationLink,
2117
+ children: msg
2118
+ })
2119
+ }
2120
+ })
2121
+ });
2122
+ };
2123
+
2124
+ var messages = reactIntl.defineMessages({
2125
+ prerequisitesOfImportingData: {
2126
+ id: "ImportResourcesModal.infoBox.prerequisitesOfImportingData",
2127
+ defaultMessage: "Prerequisites of importing data"
2128
+ },
2129
+ keysForEveryResource: {
2130
+ id: "ImportResourcesModal.infoBox.keysForEveryResource",
2131
+ defaultMessage: "You must provide keys for every resource you import, including embedded resources such as Prices and Assets. Please consult with your admins to assign keys through <link>the HTTP API</link>."
2132
+ }
2133
+ });
2134
+
2135
+ function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
2136
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
2137
+ const InfoBox = () => {
2138
+ const _useImportResourcesCo = useImportResourcesContext(),
2139
+ state = _useImportResourcesCo.state;
2140
+ if (!state.resourceType) return null;
2141
+ return jsxRuntime.jsx(uiKit.ContentNotification, {
2142
+ type: "info",
2143
+ children: jsxRuntime.jsx(uiKit.Spacings.Inset, {
2144
+ scale: "xs",
2145
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
2146
+ scale: "xs",
2147
+ children: [jsxRuntime.jsx(uiKit.Text.Subheadline, {
2148
+ as: "h4",
2149
+ intlMessage: messages.prerequisitesOfImportingData
2150
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
2151
+ intlMessage: _objectSpread$1(_objectSpread$1({}, messages.keysForEveryResource), {}, {
2152
+ values: {
2153
+ link: msg => jsxRuntime.jsx(uiKit.Link, {
2154
+ tone: "secondary",
2155
+ isExternal: true,
2156
+ to: CT__API_DOCS_URL,
2157
+ children: msg
2158
+ })
2159
+ }
2160
+ })
2161
+ })]
2162
+ })
2163
+ })
2164
+ });
2165
+ };
2166
+
2167
+ const getChunkImport = locale => {
2168
+ const intlLocale = i18n.mapLocaleToIntlLocale(locale);
2169
+ switch (intlLocale) {
2170
+ case 'de':
2171
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "import-resources-modal-i18n-de" */'./de-fd3b70e4.cjs.dev.js'); });
2172
+ case 'es':
2173
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "import-resources-modal-i18n-es" */'./es-a45120de.cjs.dev.js'); });
2174
+ case 'fr-FR':
2175
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "import-resources-modal-i18n-fr-FR" */'./fr-FR-d51f6a8e.cjs.dev.js'); });
2176
+ case 'ja':
2177
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "import-resources-modal-i18n-ja" */'./ja-9bd5f452.cjs.dev.js'); });
2178
+ case 'pt-BR':
2179
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "change-history-i18n-pt-BR" */'./pt-BR-8b999c2f.cjs.dev.js'); });
2180
+ default:
2181
+ return Promise.resolve().then(function () { return require(/* webpackChunkName: "import-resources-modal-i18n-en" */'./en-c12caec6.cjs.dev.js'); });
2182
+ }
2183
+ };
2184
+ const loadMessages = async locale => {
2185
+ try {
2186
+ const chunkImport = await getChunkImport(locale);
2187
+ return i18n.parseChunkImport(chunkImport);
2188
+ } catch (error) {
2189
+ // eslint-disable-next-line no-console
2190
+ console.warn(`Something went wrong while loading the import-resources-modal messages for ${locale}`, error);
2191
+ sentry.reportErrorToSentry(new Error(`Something went wrong while loading the import-resources-modal messages for ${locale}`), {
2192
+ extra: error
2193
+ });
2194
+ return {};
2195
+ }
2196
+ };
2197
+
2198
+ const useAsyncIntlMessages = (locale, loader) => {
2199
+ const _useState = React.useState({
2200
+ isLoading: true,
2201
+ messages: undefined,
2202
+ error: undefined
2203
+ }),
2204
+ _useState2 = _slicedToArray(_useState, 2),
2205
+ state = _useState2[0],
2206
+ setState = _useState2[1];
2207
+ React.useEffect(() => {
2208
+ let _isUnmounting = false;
2209
+ async function load() {
2210
+ try {
2211
+ if (!_isUnmounting) {
2212
+ const messages = await loader(locale);
2213
+ setState({
2214
+ isLoading: false,
2215
+ messages
2216
+ });
2217
+ }
2218
+ } catch (error) {
2219
+ setState({
2220
+ isLoading: false,
2221
+ error
2222
+ });
2223
+ }
2224
+ }
2225
+ if (locale) load();
2226
+ return () => {
2227
+ _isUnmounting = true;
2228
+ };
2229
+ }, [locale, loader]);
2230
+ return state;
2231
+ };
2232
+
2233
+ function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
2234
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
2235
+ const ImportResourcesModal = props => {
2236
+ var _context;
2237
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(context => ({
2238
+ locale: context.user && context.user.locale
2239
+ })),
2240
+ locale = _useApplicationContex.locale;
2241
+ const messages = useAsyncIntlMessages(locale, loadMessages);
2242
+ if (!props.isOpen || messages.isLoading) return null;
2243
+ if (!props.resourceTypes?.length) {
2244
+ console.error('No resource types provided for import resources modal');
2245
+ return null;
2246
+ }
2247
+ if (!_everyInstanceProperty__default["default"](_context = props.resourceTypes).call(_context, isResourceType)) {
2248
+ console.error('Invalid resource types provided for import resources modal');
2249
+ return null;
2250
+ }
2251
+ return jsxRuntime.jsx(reactIntl.IntlProvider, {
2252
+ locale: locale,
2253
+ messages: messages.messages,
2254
+ children: jsxRuntime.jsx(ImportResourcesProvider, _objectSpread(_objectSpread({}, props), {}, {
2255
+ children: jsxRuntime.jsx(CurrentStep, {})
2256
+ }))
2257
+ });
2258
+ };
2259
+ ImportResourcesModal.displayName = 'ImportResourcesModal';
2260
+
2261
+ exports.EnabledDropArea = EnabledDropArea;
2262
+ exports.FileDropped = FileDropped;
2263
+ exports.ImportResourcesModal = ImportResourcesModal;
2264
+ exports.messages = messages$7;
2265
+ exports.useImportPermission = useImportPermission;
2266
+ exports.useImportResourcesContext = useImportResourcesContext;