@bigbinary/neeto-image-uploader-frontend 4.0.3 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/AssetLibrary.js +12 -9
  3. package/dist/AssetLibrary.js.map +1 -1
  4. package/dist/BasicImageUploader.js +4 -2
  5. package/dist/BasicImageUploader.js.map +1 -1
  6. package/dist/ImageForm.js +7 -4
  7. package/dist/ImageForm.js.map +1 -1
  8. package/dist/ImageUploader.js +9 -6
  9. package/dist/ImageUploader.js.map +1 -1
  10. package/dist/ImageWithFallback-BhUgmP7t.js +61 -0
  11. package/dist/ImageWithFallback-BhUgmP7t.js.map +1 -0
  12. package/dist/{ImageWithFallback-Bq5rs1yf.js → ImageWithFallback-D1ClfJLn.js} +4 -4
  13. package/dist/{ImageWithFallback-Bq5rs1yf.js.map → ImageWithFallback-D1ClfJLn.js.map} +1 -1
  14. package/dist/ImageWithFallback-MfA03icL.js +59 -0
  15. package/dist/ImageWithFallback-MfA03icL.js.map +1 -0
  16. package/dist/cjs/AssetLibrary.js +10 -7
  17. package/dist/cjs/AssetLibrary.js.map +1 -1
  18. package/dist/cjs/BasicImageUploader.js +5 -3
  19. package/dist/cjs/BasicImageUploader.js.map +1 -1
  20. package/dist/cjs/ImageForm.js +9 -6
  21. package/dist/cjs/ImageForm.js.map +1 -1
  22. package/dist/cjs/ImageUploader.js +14 -11
  23. package/dist/cjs/ImageUploader.js.map +1 -1
  24. package/dist/cjs/hooks.js +1 -1
  25. package/dist/cjs/index.js +9 -6
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/v2/AssetLibrary.js +40 -0
  28. package/dist/cjs/v2/AssetLibrary.js.map +1 -0
  29. package/dist/cjs/v2/BasicImageUploader.js +71 -0
  30. package/dist/cjs/v2/BasicImageUploader.js.map +1 -0
  31. package/dist/cjs/v2/ImageForm.js +324 -0
  32. package/dist/cjs/v2/ImageForm.js.map +1 -0
  33. package/dist/cjs/v2/ImageUploader.js +246 -0
  34. package/dist/cjs/v2/ImageUploader.js.map +1 -0
  35. package/dist/cjs/v2/hooks.js +27 -0
  36. package/dist/cjs/v2/hooks.js.map +1 -0
  37. package/dist/cjs/v2/index.js +61 -0
  38. package/dist/cjs/v2/index.js.map +1 -0
  39. package/dist/cjs/v2/utils.js +9 -0
  40. package/dist/cjs/v2/utils.js.map +1 -0
  41. package/dist/constants-Csle2bxb.js +56 -0
  42. package/dist/constants-Csle2bxb.js.map +1 -0
  43. package/dist/constants-DI8wBtC-.js +68 -0
  44. package/dist/constants-DI8wBtC-.js.map +1 -0
  45. package/dist/hooks.js +3 -3
  46. package/dist/{imagekit.esm-CXW6c1fP.js → imagekit.esm-IYQEzBnD.js} +2 -2
  47. package/dist/{imagekit.esm-CXW6c1fP.js.map → imagekit.esm-IYQEzBnD.js.map} +1 -1
  48. package/dist/index-CBorETxd.js +972 -0
  49. package/dist/index-CBorETxd.js.map +1 -0
  50. package/dist/index-CiB5LGGR.js +950 -0
  51. package/dist/index-CiB5LGGR.js.map +1 -0
  52. package/dist/index-EgJf9LfL.js +947 -0
  53. package/dist/index-EgJf9LfL.js.map +1 -0
  54. package/dist/index-krkZ4CNS.js +969 -0
  55. package/dist/index-krkZ4CNS.js.map +1 -0
  56. package/dist/index.js +10 -7
  57. package/dist/index.js.map +1 -1
  58. package/dist/{useImageUploader-BLOdyAwv.js → useImageUploader-D8luC4Qw.js} +2 -2
  59. package/dist/{useImageUploader-BLOdyAwv.js.map → useImageUploader-D8luC4Qw.js.map} +1 -1
  60. package/dist/{useProfileImageUpload-CiGxDpEx.js → useProfileImageUpload-CbjVfcfI.js} +3 -3
  61. package/dist/{useProfileImageUpload-CiGxDpEx.js.map → useProfileImageUpload-CbjVfcfI.js.map} +1 -1
  62. package/dist/{useProfileImageUpload-DkmUBjtt.js → useProfileImageUpload-DbanXK57.js} +6 -6
  63. package/dist/useProfileImageUpload-DbanXK57.js.map +1 -0
  64. package/dist/useUnsplashApi-CNeNh58q.js +1065 -0
  65. package/dist/useUnsplashApi-CNeNh58q.js.map +1 -0
  66. package/dist/useUnsplashApi-D_ekWD8p.js +1057 -0
  67. package/dist/useUnsplashApi-D_ekWD8p.js.map +1 -0
  68. package/dist/useUploadDropzone-8Xa8PI-1.js +56 -0
  69. package/dist/useUploadDropzone-8Xa8PI-1.js.map +1 -0
  70. package/dist/useUploadDropzone-DMv8VMRF.js +58 -0
  71. package/dist/useUploadDropzone-DMv8VMRF.js.map +1 -0
  72. package/dist/utils-BTmA9hHb.js +364 -0
  73. package/dist/utils-BTmA9hHb.js.map +1 -0
  74. package/dist/{utils-BYMSmzRM.js → utils-CbaXwRPJ.js} +33 -74
  75. package/dist/utils-CbaXwRPJ.js.map +1 -0
  76. package/dist/{utils-C0TymZ5r.js → utils-DwOJkJSn.js} +41 -83
  77. package/dist/utils-DwOJkJSn.js.map +1 -0
  78. package/dist/utils-DyCNC3w5.js +347 -0
  79. package/dist/utils-DyCNC3w5.js.map +1 -0
  80. package/dist/v2/AssetLibrary.js +34 -0
  81. package/dist/v2/AssetLibrary.js.map +1 -0
  82. package/dist/v2/BasicImageUploader.js +69 -0
  83. package/dist/v2/BasicImageUploader.js.map +1 -0
  84. package/dist/v2/ImageForm.js +322 -0
  85. package/dist/v2/ImageForm.js.map +1 -0
  86. package/dist/v2/ImageUploader.js +244 -0
  87. package/dist/v2/ImageUploader.js.map +1 -0
  88. package/dist/v2/hooks.js +19 -0
  89. package/dist/v2/hooks.js.map +1 -0
  90. package/dist/v2/index.js +48 -0
  91. package/dist/v2/index.js.map +1 -0
  92. package/dist/v2/utils.js +3 -0
  93. package/dist/v2/utils.js.map +1 -0
  94. package/package.json +49 -37
  95. package/dist/index-BuYEdyOT.js +0 -2413
  96. package/dist/index-BuYEdyOT.js.map +0 -1
  97. package/dist/index-Dpyvz0h1.js +0 -2410
  98. package/dist/index-Dpyvz0h1.js.map +0 -1
  99. package/dist/useProfileImageUpload-DkmUBjtt.js.map +0 -1
  100. package/dist/utils-BYMSmzRM.js.map +0 -1
  101. package/dist/utils-C0TymZ5r.js.map +0 -1
@@ -0,0 +1,947 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import { useState, useRef, useCallback, createElement, useEffect } from 'react';
4
+ import { Switch, Label, Input, Button, Typography, DropdownMenu, Alert, Spinner, Empty, Toastr, Dialog, Tabs } from '@bigbinary/neeto-atoms';
5
+ import { isPresent, noop } from '@bigbinary/neeto-cist';
6
+ import { globalProps } from '@bigbinary/neeto-commons-frontend/v2/initializers';
7
+ import { mergeRight, isEmpty, equals } from 'ramda';
8
+ import { useTranslation, Trans } from 'react-i18next';
9
+ import { u as useImageUploader, a as useCreateBlob, i as isGif, g as generateASCIIFileName } from './useImageUploader-D8luC4Qw.js';
10
+ import { u as useUploadDropzone } from './useUploadDropzone-8Xa8PI-1.js';
11
+ import { I as IS_DEVELOPMENT_OR_HEROKU_ENV, C as CLOUD_FLARE } from './imagekit.esm-IYQEzBnD.js';
12
+ import { R as ReactCrop_minExports, u as useCropImage, a as ReactCrop, b as useBulkDestroyAssets, _ as _default, c as useFetchAssets, d as useFetchUnsplashImages, e as unsplashApi } from './useUnsplashApi-D_ekWD8p.js';
13
+ import { b as isNilOrEmpty, c as DEFAULT_CROP_CONFIG, g as getAspectRatio, d as getPixels, e as getHeightFromAspectRatio, f as getWidthFromAspectRatio, h as getInitialCropSize, j as getPercentage, k as getWrapperRefStyles, l as isItemsCenter, m as getCloudFlareCroppedURL, n as getImageKitCroppedURL, o as getCropValues, A as ASSETS_DESTROY_URL, p as INFINITE_SCROLLER_STYLE, q as INFINITE_SCROLLER_SIZES, T as TABS, r as IMAGES_PER_PAGE, s as ASSETS_FETCH_URL, U as UNSPLASH_DEFAULT_NAME, t as UNSPLASH_DEFAULT_REQUEST_CONFIG, D as DEFAULT_UPLOAD_CONFIG, u as UNSPLASH_URL, a as ImageDirectUpload } from './utils-CbaXwRPJ.js';
14
+ import classnames from 'classnames';
15
+ import LeftArrow from '@bigbinary/neeto-icons/LeftArrow';
16
+ import { withT, useFuncDebounce, useDebounce } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
17
+ import { withEventTargetValue, hasPermission } from '@bigbinary/neeto-commons-frontend/v2/utils';
18
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
19
+ import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
20
+ import { VIEW_ROLES_PERMISSION } from '@bigbinary/neeto-team-members-frontend/constants';
21
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
22
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
23
+
24
+ var constructCloudflareImageURL = function constructCloudflareImageURL(url) {
25
+ var domain = window.location.host.split(".").slice(-2).join(".");
26
+ return url.replace("https://imagedelivery.net", "https://images.".concat(domain, "/cdn-cgi/imagedelivery"));
27
+ };
28
+
29
+ var Controls = withT(function (_ref) {
30
+ var _imageRef$current, _imageRef$current2;
31
+ var t = _ref.t,
32
+ crop = _ref.crop,
33
+ handleSubmit = _ref.handleSubmit,
34
+ imageRef = _ref.imageRef,
35
+ isFullImage = _ref.isFullImage,
36
+ setIsFullImage = _ref.setIsFullImage,
37
+ _ref$hideControls = _ref.hideControls,
38
+ hideControls = _ref$hideControls === void 0 ? false : _ref$hideControls,
39
+ handleWidthChange = _ref.handleWidthChange,
40
+ handleHeightChange = _ref.handleHeightChange,
41
+ width = _ref.width,
42
+ height = _ref.height;
43
+ return /*#__PURE__*/jsxs("div", {
44
+ className: "flex flex-col space-y-6 p-4 md:w-2/6",
45
+ children: [!hideControls && /*#__PURE__*/jsx(Switch, {
46
+ checked: isFullImage,
47
+ className: "w-full",
48
+ label: t("neetoImageUploader.labels.selectOriginalImage"),
49
+ onCheckedChange: function onCheckedChange() {
50
+ return setIsFullImage(function (isFullImage) {
51
+ return !isFullImage;
52
+ });
53
+ }
54
+ }), /*#__PURE__*/jsxs("div", {
55
+ className: "flex w-full items-start gap-2",
56
+ children: [/*#__PURE__*/jsx(Label, {
57
+ className: "w-24 pt-2",
58
+ children: t("neetoImageUploader.labels.width")
59
+ }), /*#__PURE__*/jsx(Input, {
60
+ className: "w-32 grow-0",
61
+ disabled: isFullImage,
62
+ max: (_imageRef$current = imageRef.current) === null || _imageRef$current === void 0 ? void 0 : _imageRef$current.naturalWidth,
63
+ type: "number",
64
+ value: width,
65
+ onChange: withEventTargetValue(handleWidthChange)
66
+ })]
67
+ }), /*#__PURE__*/jsxs("div", {
68
+ className: "flex w-full items-start gap-2",
69
+ children: [/*#__PURE__*/jsx(Label, {
70
+ className: "w-24 pt-2",
71
+ children: t("neetoImageUploader.labels.height")
72
+ }), /*#__PURE__*/jsx(Input, {
73
+ className: "w-32 grow-0",
74
+ disabled: isFullImage,
75
+ max: (_imageRef$current2 = imageRef.current) === null || _imageRef$current2 === void 0 ? void 0 : _imageRef$current2.naturalHeight,
76
+ type: "number",
77
+ value: height,
78
+ onChange: withEventTargetValue(handleHeightChange)
79
+ })]
80
+ }), /*#__PURE__*/jsx(Button, {
81
+ className: "mt-6 self-start",
82
+ "data-testid": "neeto-image-uploader-crop-submit-button",
83
+ label: t("neetoImageUploader.labels.done"),
84
+ disabled: isNilOrEmpty(imageRef.current) && (crop.width <= 0 || crop.height <= 0),
85
+ onClick: handleSubmit
86
+ })]
87
+ });
88
+ });
89
+
90
+ var useImageControls = function useImageControls(_ref) {
91
+ var _imageRef$current;
92
+ var imageRef = _ref.imageRef,
93
+ fixedAspectRatio = _ref.fixedAspectRatio,
94
+ defaultImageSize = _ref.defaultImageSize;
95
+ var _ref2 = (_imageRef$current = imageRef.current) !== null && _imageRef$current !== void 0 ? _imageRef$current : {},
96
+ imageWidth = _ref2.naturalWidth,
97
+ imageHeight = _ref2.naturalHeight;
98
+ var _useState = useState(isPresent(fixedAspectRatio)),
99
+ _useState2 = _slicedToArray(_useState, 2),
100
+ isAspectRatioLocked = _useState2[0],
101
+ setIsAspectRatioLocked = _useState2[1];
102
+ var _useState3 = useState(DEFAULT_CROP_CONFIG),
103
+ _useState4 = _slicedToArray(_useState3, 2),
104
+ crop = _useState4[0],
105
+ setCrop = _useState4[1];
106
+ var _useState5 = useState(getAspectRatio({
107
+ fixedAspectRatio: fixedAspectRatio,
108
+ imageSize: defaultImageSize
109
+ })),
110
+ _useState6 = _slicedToArray(_useState5, 2),
111
+ aspectRatio = _useState6[0],
112
+ setAspectRatio = _useState6[1];
113
+ var _useState7 = useState(getPixels(crop.height, imageHeight)),
114
+ _useState8 = _slicedToArray(_useState7, 2),
115
+ height = _useState8[0],
116
+ setHeight = _useState8[1];
117
+ var _useState9 = useState(getPixels(crop.width, imageWidth)),
118
+ _useState10 = _slicedToArray(_useState9, 2),
119
+ width = _useState10[0],
120
+ setWidth = _useState10[1];
121
+ var aspectRatioFactor = aspectRatio.width / aspectRatio.height;
122
+ var buildCropValues = function buildCropValues(_ref3) {
123
+ var cropWidth = _ref3.cropWidth,
124
+ cropHeight = _ref3.cropHeight,
125
+ _ref3$width = _ref3.width,
126
+ width = _ref3$width === void 0 ? imageWidth : _ref3$width,
127
+ _ref3$height = _ref3.height,
128
+ height = _ref3$height === void 0 ? imageHeight : _ref3$height,
129
+ _ref3$aspectRatio = _ref3.aspectRatio,
130
+ aspectRatio = _ref3$aspectRatio === void 0 ? aspectRatioFactor : _ref3$aspectRatio;
131
+ var aspectCrop = ReactCrop_minExports.makeAspectCrop({
132
+ unit: "%",
133
+ width: getPercentage(cropWidth, width),
134
+ height: getPercentage(cropHeight, height)
135
+ }, aspectRatio, width, height);
136
+ return ReactCrop_minExports.centerCrop(aspectCrop, width, height);
137
+ };
138
+ var onToggleAspectRatioLock = function onToggleAspectRatioLock() {
139
+ setIsAspectRatioLocked(function (isAspectRatioLocked) {
140
+ return !isAspectRatioLocked;
141
+ });
142
+ };
143
+ var handleWidthChange = function handleWidthChange(width) {
144
+ var adjustedWidth = Math.min(width, imageWidth);
145
+ setWidth(adjustedWidth);
146
+ handleWidthResize(adjustedWidth);
147
+ };
148
+ var handleHeightChange = function handleHeightChange(height) {
149
+ var adjustedHeight = Math.min(height, imageHeight);
150
+ setHeight(adjustedHeight);
151
+ handleHeighthResize(height);
152
+ };
153
+ var handleResize = function handleResize(cropWidth, cropHeight) {
154
+ var aspectRatio = aspectRatioFactor;
155
+ if (!isAspectRatioLocked) {
156
+ var imageSize = {
157
+ width: cropWidth,
158
+ height: cropHeight
159
+ };
160
+ var newAspectRatio = getAspectRatio({
161
+ imageSize: imageSize
162
+ });
163
+ aspectRatio = newAspectRatio.width / newAspectRatio.height;
164
+ setAspectRatio(newAspectRatio);
165
+ }
166
+ var newCrop = buildCropValues({
167
+ cropWidth: cropWidth,
168
+ cropHeight: cropHeight,
169
+ aspectRatio: aspectRatio
170
+ });
171
+ setCrop(newCrop);
172
+ setWidth(cropWidth);
173
+ setHeight(cropHeight);
174
+ };
175
+ var handleWidthResize = useFuncDebounce(function (width) {
176
+ var cropWidth = Number(width);
177
+ var cropHeight = Number(height);
178
+ if (isAspectRatioLocked) {
179
+ cropHeight = getHeightFromAspectRatio(cropWidth, aspectRatio);
180
+ if (cropHeight > imageHeight) {
181
+ cropHeight = imageHeight;
182
+ cropWidth = getWidthFromAspectRatio(cropHeight, aspectRatio);
183
+ }
184
+ }
185
+ handleResize(cropWidth, cropHeight);
186
+ }, 300);
187
+ var handleHeighthResize = useFuncDebounce(function (height) {
188
+ var cropWidth = Number(width);
189
+ var cropHeight = Number(height);
190
+ if (isAspectRatioLocked) {
191
+ cropWidth = getWidthFromAspectRatio(cropHeight, aspectRatio);
192
+ if (cropWidth > imageWidth) {
193
+ cropWidth = imageWidth;
194
+ cropHeight = getHeightFromAspectRatio(cropWidth, aspectRatio);
195
+ }
196
+ }
197
+ handleResize(cropWidth, cropHeight);
198
+ }, 300);
199
+ var handleAspectWidthChange = function handleAspectWidthChange(aspectWidth) {
200
+ if (aspectWidth <= 0) return;
201
+ var newWidth = crop.width * (aspectWidth / aspectRatio.width);
202
+ var updatedAspectWidth = aspectWidth;
203
+ if (newWidth > 100) {
204
+ newWidth = 100;
205
+ updatedAspectWidth = Math.round(newWidth / crop.width * aspectRatio.width);
206
+ }
207
+ var newWidthInPixels = getPixels(newWidth, imageWidth);
208
+ var newCrop = buildCropValues({
209
+ cropWidth: newWidthInPixels,
210
+ cropHeight: height,
211
+ aspectRatio: updatedAspectWidth / aspectRatio.height
212
+ });
213
+ setCrop(newCrop);
214
+ setAspectRatio(mergeRight(aspectRatio, {
215
+ width: updatedAspectWidth
216
+ }));
217
+ setWidth(newWidthInPixels);
218
+ };
219
+ var handleAspectHeightChange = function handleAspectHeightChange(aspectHeight) {
220
+ if (aspectHeight <= 0) return;
221
+ var newHeight = crop.height * (aspectHeight / aspectRatio.height);
222
+ var updatedAspectHeight = aspectHeight;
223
+ if (newHeight > 100) {
224
+ newHeight = 100;
225
+ updatedAspectHeight = Math.round(newHeight / crop.height * aspectRatio.height);
226
+ }
227
+ var newHeightInPixels = getPixels(newHeight, imageHeight);
228
+ var newCrop = buildCropValues({
229
+ cropWidth: width,
230
+ cropHeight: newHeightInPixels,
231
+ aspectRatio: aspectRatio.width / updatedAspectHeight
232
+ });
233
+ setCrop(newCrop);
234
+ setAspectRatio(mergeRight(aspectRatio, {
235
+ height: updatedAspectHeight
236
+ }));
237
+ setHeight(newHeightInPixels);
238
+ };
239
+ var handleCropChange = function handleCropChange(pixelCrop, percentageCrop) {
240
+ if (!isAspectRatioLocked) {
241
+ var _aspectRatio = getAspectRatio({
242
+ imageSize: {
243
+ width: Math.round(pixelCrop.width),
244
+ height: Math.round(pixelCrop.height)
245
+ }
246
+ });
247
+ setAspectRatio(_aspectRatio);
248
+ }
249
+ setHeight(getPixels(percentageCrop.height, imageHeight));
250
+ setWidth(getPixels(percentageCrop.width, imageWidth));
251
+ setCrop(percentageCrop);
252
+ };
253
+ var handleImageLoad = function handleImageLoad(_ref4) {
254
+ var _defaultImageSize$wid;
255
+ var image = _ref4.target;
256
+ var imageWidth = image.naturalWidth,
257
+ imageHeight = image.naturalHeight;
258
+ var maxCropWidth = (_defaultImageSize$wid = defaultImageSize.width) !== null && _defaultImageSize$wid !== void 0 ? _defaultImageSize$wid : imageWidth;
259
+ var aspectRatio = getAspectRatio({
260
+ fixedAspectRatio: fixedAspectRatio,
261
+ imageSize: {
262
+ width: imageWidth,
263
+ height: imageHeight
264
+ }
265
+ });
266
+ var aspectRatioFactor = aspectRatio.width / aspectRatio.height;
267
+ var _getInitialCropSize = getInitialCropSize({
268
+ image: image,
269
+ aspectRatioFactor: aspectRatioFactor,
270
+ maxCropWidth: maxCropWidth
271
+ }),
272
+ cropWidth = _getInitialCropSize.cropWidth,
273
+ cropHeight = _getInitialCropSize.cropHeight;
274
+ var crop = buildCropValues({
275
+ cropWidth: cropWidth,
276
+ cropHeight: cropHeight,
277
+ width: imageWidth,
278
+ height: imageHeight,
279
+ aspectRatio: aspectRatioFactor
280
+ });
281
+ setAspectRatio(aspectRatio);
282
+ setCrop(crop);
283
+ setHeight(getPixels(crop.height, imageHeight));
284
+ setWidth(getPixels(crop.width, imageWidth));
285
+ };
286
+ return {
287
+ onToggleAspectRatioLock: onToggleAspectRatioLock,
288
+ handleWidthChange: handleWidthChange,
289
+ handleHeightChange: handleHeightChange,
290
+ handleAspectWidthChange: handleAspectWidthChange,
291
+ handleAspectHeightChange: handleAspectHeightChange,
292
+ aspectRatio: aspectRatio,
293
+ width: width,
294
+ crop: crop,
295
+ height: height,
296
+ handleImageLoad: handleImageLoad,
297
+ handleCropChange: handleCropChange,
298
+ isAspectRatioLocked: isAspectRatioLocked
299
+ };
300
+ };
301
+
302
+ var ImageEditor = function ImageEditor(_ref) {
303
+ var _imageRef$current;
304
+ var image = _ref.image,
305
+ handleReset = _ref.handleReset,
306
+ _ref$handleImageEditC = _ref.handleImageEditComplete,
307
+ handleImageEditComplete = _ref$handleImageEditC === void 0 ? noop : _ref$handleImageEditC,
308
+ _ref$signedId = _ref.signedId,
309
+ signedId = _ref$signedId === void 0 ? "" : _ref$signedId,
310
+ _ref$fixedAspectRatio = _ref.fixedAspectRatio,
311
+ fixedAspectRatio = _ref$fixedAspectRatio === void 0 ? {} : _ref$fixedAspectRatio,
312
+ _ref$defaultImageSize = _ref.defaultImageSize,
313
+ defaultImageSize = _ref$defaultImageSize === void 0 ? {} : _ref$defaultImageSize;
314
+ var imageRef = useRef(null);
315
+ var wrapperRef = useRef(null);
316
+ var _ref2 = (_imageRef$current = imageRef.current) !== null && _imageRef$current !== void 0 ? _imageRef$current : {},
317
+ imageWidth = _ref2.naturalWidth,
318
+ imageHeight = _ref2.naturalHeight;
319
+ var _useState = useState(false),
320
+ _useState2 = _slicedToArray(_useState, 2),
321
+ isFullImage = _useState2[0],
322
+ setIsFullImage = _useState2[1];
323
+ var _useTranslation = useTranslation(),
324
+ t = _useTranslation.t;
325
+ var _useCropImage = useCropImage(),
326
+ cropImage = _useCropImage.mutate;
327
+ var _useImageControls = useImageControls({
328
+ fixedAspectRatio: fixedAspectRatio,
329
+ defaultImageSize: defaultImageSize,
330
+ imageRef: imageRef
331
+ }),
332
+ onToggleAspectRatioLock = _useImageControls.onToggleAspectRatioLock,
333
+ handleWidthChange = _useImageControls.handleWidthChange,
334
+ handleHeightChange = _useImageControls.handleHeightChange,
335
+ handleAspectWidthChange = _useImageControls.handleAspectWidthChange,
336
+ handleAspectHeightChange = _useImageControls.handleAspectHeightChange,
337
+ aspectRatio = _useImageControls.aspectRatio,
338
+ width = _useImageControls.width,
339
+ height = _useImageControls.height,
340
+ handleImageLoad = _useImageControls.handleImageLoad,
341
+ handleCropChange = _useImageControls.handleCropChange,
342
+ crop = _useImageControls.crop,
343
+ isAspectRatioLocked = _useImageControls.isAspectRatioLocked;
344
+ var processCrop = function processCrop() {
345
+ if (isFullImage) {
346
+ handleImageEditComplete(image);
347
+ return;
348
+ }
349
+ cropImage({
350
+ crop: getCropValues({
351
+ crop: crop,
352
+ imageRef: imageRef
353
+ }),
354
+ signedId: signedId
355
+ }, {
356
+ onSuccess: handleImageEditComplete
357
+ });
358
+ };
359
+ var handleSubmit = function handleSubmit() {
360
+ if (IS_DEVELOPMENT_OR_HEROKU_ENV) {
361
+ processCrop();
362
+ return;
363
+ }
364
+ if (isFullImage) {
365
+ handleImageEditComplete(image);
366
+ return;
367
+ }
368
+ var newURL = globalProps.assetsUploaderService === CLOUD_FLARE ? getCloudFlareCroppedURL({
369
+ image: image,
370
+ crop: crop
371
+ }) : getImageKitCroppedURL({
372
+ crop: crop,
373
+ imageURL: image.url,
374
+ imageRef: imageRef
375
+ });
376
+ handleImageEditComplete(mergeRight(image, {
377
+ url: newURL
378
+ }));
379
+ };
380
+ return /*#__PURE__*/jsxs("div", {
381
+ className: "flex h-full flex-col gap-4 px-8 py-12",
382
+ children: [/*#__PURE__*/jsx(Button, {
383
+ className: "self-start",
384
+ "data-testid": "image-editor-back-button",
385
+ icon: LeftArrow,
386
+ iconPosition: "left",
387
+ variant: "ghost",
388
+ onClick: handleReset
389
+ }), /*#__PURE__*/jsxs("div", {
390
+ className: "flex h-full w-full flex-col gap-2 overflow-y-scroll md:flex-row md:overflow-y-auto",
391
+ children: [/*#__PURE__*/jsx("div", {
392
+ id: "imageEditor",
393
+ ref: wrapperRef,
394
+ className: classnames("flex", "h-full w-full md:w-4/6", "justify-around", "bg-muted", "relative", {
395
+ "items-center": isItemsCenter({
396
+ wrapperRef: wrapperRef,
397
+ imageRef: imageRef
398
+ })
399
+ }),
400
+ children: /*#__PURE__*/jsxs(ReactCrop, {
401
+ crop: isFullImage ? null : crop,
402
+ src: image === null || image === void 0 ? void 0 : image.url,
403
+ style: getWrapperRefStyles(wrapperRef, imageRef),
404
+ aspect: isAspectRatioLocked ? aspectRatio.width / aspectRatio.height : 0,
405
+ onChange: handleCropChange,
406
+ onComplete: handleCropChange,
407
+ children: [/*#__PURE__*/jsx("img", {
408
+ alt: t("neetoImageUploader.common.image"),
409
+ "data-testid": "image-editor-uploaded-image",
410
+ ref: imageRef,
411
+ src: image === null || image === void 0 ? void 0 : image.url,
412
+ onLoad: handleImageLoad
413
+ }), /*#__PURE__*/jsxs(Typography, {
414
+ className: "bg-secondary text-secondary-foreground absolute bottom-0 end-0 z-10 px-1",
415
+ variant: "nano",
416
+ children: [imageWidth, "x", imageHeight]
417
+ })]
418
+ })
419
+ }), /*#__PURE__*/jsx(Controls, {
420
+ aspectRatio: aspectRatio,
421
+ crop: crop,
422
+ handleAspectHeightChange: handleAspectHeightChange,
423
+ handleAspectWidthChange: handleAspectWidthChange,
424
+ handleHeightChange: handleHeightChange,
425
+ handleSubmit: handleSubmit,
426
+ handleWidthChange: handleWidthChange,
427
+ height: height,
428
+ imageRef: imageRef,
429
+ isAspectRatioLocked: isAspectRatioLocked,
430
+ isFullImage: isFullImage,
431
+ onToggleAspectRatioLock: onToggleAspectRatioLock,
432
+ setIsFullImage: setIsFullImage,
433
+ width: width,
434
+ hideControls: isPresent(fixedAspectRatio)
435
+ })]
436
+ })]
437
+ });
438
+ };
439
+
440
+ var InfiniteScroller = function InfiniteScroller(_ref) {
441
+ var _ref$hasMore = _ref.hasMore,
442
+ hasMore = _ref$hasMore === void 0 ? false : _ref$hasMore,
443
+ _ref$loadMore = _ref.loadMore,
444
+ loadMore = _ref$loadMore === void 0 ? noop : _ref$loadMore,
445
+ tab = _ref.tab,
446
+ images = _ref.images,
447
+ _ref$setSelectedImage = _ref.setSelectedImage,
448
+ setSelectedImage = _ref$setSelectedImage === void 0 ? noop : _ref$setSelectedImage,
449
+ _ref$handleUnsplashIm = _ref.handleUnsplashImageSelect,
450
+ handleUnsplashImageSelect = _ref$handleUnsplashIm === void 0 ? noop : _ref$handleUnsplashIm;
451
+ var _useTranslation = useTranslation(),
452
+ t = _useTranslation.t;
453
+ var _useState = useState({
454
+ isOpen: false,
455
+ imageIds: []
456
+ }),
457
+ _useState2 = _slicedToArray(_useState, 2),
458
+ deleteConfirmation = _useState2[0],
459
+ setDeleteConfirmation = _useState2[1];
460
+ var isMenuButtonEnabled = globalProps.assetsUploaderService !== CLOUD_FLARE;
461
+ var _useBulkDestroyAssets = useBulkDestroyAssets(ASSETS_DESTROY_URL),
462
+ isPending = _useBulkDestroyAssets.isPending,
463
+ bulkDelete = _useBulkDestroyAssets.mutate;
464
+ var handleDelete = useCallback(function () {
465
+ bulkDelete(deleteConfirmation.imageIds, {
466
+ onSuccess: function onSuccess() {
467
+ return setDeleteConfirmation({
468
+ isOpen: false,
469
+ imageIds: []
470
+ });
471
+ }
472
+ });
473
+ }, [deleteConfirmation.imageIds]);
474
+ var Loader = /*#__PURE__*/jsx("div", {
475
+ className: "flex justify-center",
476
+ children: /*#__PURE__*/jsx(Spinner, {})
477
+ });
478
+ return /*#__PURE__*/jsxs("div", {
479
+ className: "niu-unsplash-container grow max-w-full overflow-x-hidden overflow-y-scroll",
480
+ children: [/*#__PURE__*/jsx(_default, {
481
+ hasMore: hasMore,
482
+ loadMore: loadMore,
483
+ pack: true,
484
+ position: true,
485
+ className: "w-full",
486
+ loader: Loader,
487
+ sizes: INFINITE_SCROLLER_SIZES,
488
+ style: INFINITE_SCROLLER_STYLE,
489
+ useWindow: false,
490
+ children: images.map(function (image, index) {
491
+ var _image$urls, _image$user, _image$user2;
492
+ return /*#__PURE__*/jsx("div", {
493
+ className: "float-start w-1/2 pb-4 pe-4 md:w-1/4",
494
+ children: /*#__PURE__*/jsx("div", {
495
+ className: "relative w-full",
496
+ style: {
497
+ paddingBottom: "".concat(image.height / image.width * 100, "%")
498
+ },
499
+ children: /*#__PURE__*/jsxs("div", {
500
+ className: "neeto-ui-rounded-sm bg-muted group absolute h-full w-full",
501
+ "data-testid": "library-image-card",
502
+ id: "unsplashImage".concat(image.id),
503
+ children: [tab === TABS[2].key && /*#__PURE__*/jsxs(Fragment, {
504
+ children: [/*#__PURE__*/jsx("img", {
505
+ "data-testid": "niu-unsplash-image-".concat(index),
506
+ src: image === null || image === void 0 || (_image$urls = image.urls) === null || _image$urls === void 0 ? void 0 : _image$urls.regular,
507
+ onClick: function onClick() {
508
+ return handleUnsplashImageSelect(image);
509
+ }
510
+ }), /*#__PURE__*/jsxs("a", {
511
+ className: "neeto-ui-text-white absolute bottom-2 start-2 m-auto text-xs underline opacity-0 group-hover:opacity-100",
512
+ href: "https://unsplash.com/@".concat(image === null || image === void 0 || (_image$user = image.user) === null || _image$user === void 0 ? void 0 : _image$user.username),
513
+ rel: "noreferrer",
514
+ target: "_blank",
515
+ children: [image === null || image === void 0 || (_image$user2 = image.user) === null || _image$user2 === void 0 ? void 0 : _image$user2.name, " | ", " ", t("neetoImageUploader.labels.unsplash")]
516
+ })]
517
+ }), tab === TABS[1].key && /*#__PURE__*/jsxs(Fragment, {
518
+ children: [hasPermission(VIEW_ROLES_PERMISSION) && isMenuButtonEnabled && /*#__PURE__*/jsx(DropdownMenu, {
519
+ "data-testid": "image-library-image-options-".concat(index),
520
+ icon: MenuHorizontal,
521
+ buttonProps: {
522
+ variant: "outline",
523
+ size: "sm",
524
+ className: "absolute end-2 top-2 z-1 neeto-ui-rounded-full"
525
+ },
526
+ children: /*#__PURE__*/jsx(DropdownMenu.MenuItem, {
527
+ "data-testid": "image-library-image-delete",
528
+ onClick: function onClick() {
529
+ return setDeleteConfirmation({
530
+ isOpen: true,
531
+ imageIds: [(image === null || image === void 0 ? void 0 : image.fileId) || image.id]
532
+ });
533
+ },
534
+ children: t("neetoImageUploader.deleteConfirmation.delete")
535
+ })
536
+ }), /*#__PURE__*/jsx("img", {
537
+ "data-testid": "niu-library-image-".concat(index),
538
+ src: image === null || image === void 0 ? void 0 : image.url,
539
+ onClick: function onClick() {
540
+ return setSelectedImage(image);
541
+ }
542
+ })]
543
+ })]
544
+ })
545
+ })
546
+ }, image.id);
547
+ })
548
+ }), /*#__PURE__*/jsx(Alert, {
549
+ isOpen: deleteConfirmation.isOpen,
550
+ isSubmitting: isPending,
551
+ message: t("neetoImageUploader.deleteConfirmation.message"),
552
+ submitButtonLabel: t("neetoImageUploader.deleteConfirmation.delete"),
553
+ title: t("neetoImageUploader.deleteConfirmation.title"),
554
+ onClose: function onClose() {
555
+ return setDeleteConfirmation({
556
+ isOpen: false,
557
+ imageIds: []
558
+ });
559
+ },
560
+ onSubmit: handleDelete
561
+ })]
562
+ });
563
+ };
564
+
565
+ var Images = function Images(_ref) {
566
+ var debouncedQuery = _ref.debouncedQuery,
567
+ setSelectedImage = _ref.setSelectedImage;
568
+ var _useTranslation = useTranslation(),
569
+ t = _useTranslation.t;
570
+ var _useFetchAssets = useFetchAssets({
571
+ searchTerm: debouncedQuery,
572
+ per: IMAGES_PER_PAGE,
573
+ url: ASSETS_FETCH_URL
574
+ }),
575
+ fetchNextPage = _useFetchAssets.fetchNextPage,
576
+ hasNextPage = _useFetchAssets.hasNextPage,
577
+ _useFetchAssets$data = _useFetchAssets.data,
578
+ _useFetchAssets$data2 = _useFetchAssets$data === void 0 ? {} : _useFetchAssets$data,
579
+ _useFetchAssets$data3 = _useFetchAssets$data2.results,
580
+ results = _useFetchAssets$data3 === void 0 ? [] : _useFetchAssets$data3,
581
+ isLoading = _useFetchAssets.isLoading,
582
+ isError = _useFetchAssets.isError;
583
+ if (isError) {
584
+ return /*#__PURE__*/jsx("div", {
585
+ className: "grow flex justify-center items-center",
586
+ children: /*#__PURE__*/jsx(Typography, {
587
+ variant: "body2",
588
+ children: t("neetoImageUploader.unsplash.errorMessage")
589
+ })
590
+ });
591
+ }
592
+ if (isLoading) {
593
+ return /*#__PURE__*/jsx("div", {
594
+ className: "grow flex justify-center items-center",
595
+ children: /*#__PURE__*/jsx(Spinner, {})
596
+ });
597
+ }
598
+ if (isEmpty(results)) {
599
+ return /*#__PURE__*/jsx("div", {
600
+ className: "grow flex justify-center items-center",
601
+ children: /*#__PURE__*/jsx(Empty, {
602
+ title: t("neetoImageUploader.common.noImagesToShow")
603
+ })
604
+ });
605
+ }
606
+ return /*#__PURE__*/createElement(InfiniteScroller, {
607
+ setSelectedImage: setSelectedImage,
608
+ hasMore: hasNextPage,
609
+ images: results,
610
+ key: debouncedQuery,
611
+ loadMore: fetchNextPage,
612
+ tab: TABS[1].key
613
+ });
614
+ };
615
+
616
+ var UnsplashLibrary = function UnsplashLibrary(_ref) {
617
+ var debouncedQuery = _ref.debouncedQuery,
618
+ setSelectedImage = _ref.setSelectedImage,
619
+ setIsUploading = _ref.setIsUploading,
620
+ setActiveTab = _ref.setActiveTab;
621
+ var _useImageUploader = useImageUploader({
622
+ onUploadComplete: setSelectedImage,
623
+ setIsUploading: setIsUploading
624
+ }),
625
+ uploadFile = _useImageUploader.uploadFile;
626
+ var handleUnsplashImageSelect = /*#__PURE__*/function () {
627
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(image) {
628
+ var _image$urls, response, file;
629
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
630
+ while (1) switch (_context.prev = _context.next) {
631
+ case 0:
632
+ _context.prev = 0;
633
+ setIsUploading(true);
634
+ _context.next = 4;
635
+ return unsplashApi.getUnsplashImage((_image$urls = image.urls) === null || _image$urls === void 0 ? void 0 : _image$urls.regular, UNSPLASH_DEFAULT_REQUEST_CONFIG);
636
+ case 4:
637
+ response = _context.sent;
638
+ file = new File([response.data], UNSPLASH_DEFAULT_NAME, {
639
+ type: response.data.type
640
+ });
641
+ uploadFile(file);
642
+ _context.next = 14;
643
+ break;
644
+ case 9:
645
+ _context.prev = 9;
646
+ _context.t0 = _context["catch"](0);
647
+ Toastr.error(_context.t0);
648
+ setActiveTab(TABS[1].key);
649
+ setIsUploading(false);
650
+ case 14:
651
+ case "end":
652
+ return _context.stop();
653
+ }
654
+ }, _callee, null, [[0, 9]]);
655
+ }));
656
+ return function handleUnsplashImageSelect(_x) {
657
+ return _ref2.apply(this, arguments);
658
+ };
659
+ }();
660
+ var _useTranslation = useTranslation(),
661
+ t = _useTranslation.t;
662
+ var _useFetchUnsplashImag = useFetchUnsplashImages({
663
+ query: debouncedQuery
664
+ }),
665
+ fetchNextPage = _useFetchUnsplashImag.fetchNextPage,
666
+ hasNextPage = _useFetchUnsplashImag.hasNextPage,
667
+ _useFetchUnsplashImag2 = _useFetchUnsplashImag.data,
668
+ _useFetchUnsplashImag3 = _useFetchUnsplashImag2 === void 0 ? {} : _useFetchUnsplashImag2,
669
+ _useFetchUnsplashImag4 = _useFetchUnsplashImag3.results,
670
+ results = _useFetchUnsplashImag4 === void 0 ? [] : _useFetchUnsplashImag4,
671
+ isError = _useFetchUnsplashImag.isError,
672
+ isLoading = _useFetchUnsplashImag.isLoading;
673
+ if (isError) {
674
+ return /*#__PURE__*/jsx("div", {
675
+ className: "grow flex justify-center items-center",
676
+ children: /*#__PURE__*/jsx(Typography, {
677
+ variant: "body2",
678
+ children: t("neetoImageUploader.unsplash.errorMessage")
679
+ })
680
+ });
681
+ }
682
+ if (isLoading) {
683
+ return /*#__PURE__*/jsx("div", {
684
+ className: "grow flex justify-center items-center",
685
+ children: /*#__PURE__*/jsx(Spinner, {})
686
+ });
687
+ }
688
+ if (isEmpty(results)) {
689
+ return /*#__PURE__*/jsx("div", {
690
+ className: "grow flex justify-center items-center",
691
+ children: /*#__PURE__*/jsx(Empty, {
692
+ title: t("neetoImageUploader.common.noImagesToShow")
693
+ })
694
+ });
695
+ }
696
+ return /*#__PURE__*/createElement(InfiniteScroller, {
697
+ debouncedQuery: debouncedQuery,
698
+ handleUnsplashImageSelect: handleUnsplashImageSelect,
699
+ hasMore: hasNextPage,
700
+ images: results,
701
+ key: debouncedQuery,
702
+ loadMore: fetchNextPage,
703
+ tab: TABS[2].key
704
+ });
705
+ };
706
+
707
+ var ImageLibrary = function ImageLibrary(_ref) {
708
+ var setSelectedImage = _ref.setSelectedImage,
709
+ tab = _ref.tab,
710
+ setIsUploading = _ref.setIsUploading,
711
+ setActiveTab = _ref.setActiveTab;
712
+ var _useState = useState(""),
713
+ _useState2 = _slicedToArray(_useState, 2),
714
+ query = _useState2[0],
715
+ setQuery = _useState2[1];
716
+ var _useTranslation = useTranslation(),
717
+ t = _useTranslation.t;
718
+ var debouncedQuery = useDebounce(query, 400);
719
+ var inputPlaceHolder = equals(tab, TABS[2].key) ? t("neetoImageUploader.placeholders.searchImageFromWeb") : t("neetoImageUploader.placeholders.searchImage");
720
+ useEffect(function () {
721
+ setQuery("");
722
+ }, [tab]);
723
+ return /*#__PURE__*/jsxs("div", {
724
+ className: "w-full px-6 py-4 grow flex flex-col",
725
+ children: [/*#__PURE__*/jsx("div", {
726
+ className: "mb-4 shrink-0",
727
+ children: /*#__PURE__*/jsx(Input, {
728
+ autoFocus: true,
729
+ "data-testid": "niu-unsplash-image-picker-search-input",
730
+ name: "text",
731
+ placeholder: inputPlaceHolder,
732
+ value: query,
733
+ onChange: function onChange(_ref2) {
734
+ var value = _ref2.target.value;
735
+ return setQuery(value);
736
+ }
737
+ })
738
+ }), tab === TABS[1].key ? /*#__PURE__*/jsx(Images, {
739
+ debouncedQuery: debouncedQuery,
740
+ query: query,
741
+ setSelectedImage: setSelectedImage
742
+ }) : /*#__PURE__*/jsx(UnsplashLibrary, {
743
+ debouncedQuery: debouncedQuery,
744
+ query: query,
745
+ setActiveTab: setActiveTab,
746
+ setIsUploading: setIsUploading,
747
+ setSelectedImage: setSelectedImage
748
+ })]
749
+ });
750
+ };
751
+
752
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
753
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
754
+ var Modal = function Modal(_ref) {
755
+ var isOpen = _ref.isOpen,
756
+ _ref$onClose = _ref.onClose,
757
+ onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
758
+ _ref$onUploadComplete = _ref.onUploadComplete,
759
+ onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
760
+ _ref$uploadConfig = _ref.uploadConfig,
761
+ uploadConfig = _ref$uploadConfig === void 0 ? {} : _ref$uploadConfig,
762
+ _ref$fixedAspectRatio = _ref.fixedAspectRatio,
763
+ fixedAspectRatio = _ref$fixedAspectRatio === void 0 ? {} : _ref$fixedAspectRatio,
764
+ _ref$defaultImageSize = _ref.defaultImageSize,
765
+ defaultImageSize = _ref$defaultImageSize === void 0 ? {} : _ref$defaultImageSize;
766
+ var _useState = useState(TABS[0].key),
767
+ _useState2 = _slicedToArray(_useState, 2),
768
+ activeTab = _useState2[0],
769
+ setActiveTab = _useState2[1];
770
+ var _useState3 = useState({}),
771
+ _useState4 = _slicedToArray(_useState3, 2),
772
+ selectedImage = _useState4[0],
773
+ setSelectedImage = _useState4[1];
774
+ var _useState5 = useState(false),
775
+ _useState6 = _slicedToArray(_useState5, 2),
776
+ isUploading = _useState6[0],
777
+ setIsUploading = _useState6[1];
778
+ var _useTranslation = useTranslation(),
779
+ t = _useTranslation.t;
780
+ var _useCreateBlob = useCreateBlob(),
781
+ createBlob = _useCreateBlob.mutate;
782
+ var uploadConfigWithDefaults = mergeRight(DEFAULT_UPLOAD_CONFIG, uploadConfig);
783
+ var isCloudFlareImageUploader = globalProps.assetsUploaderService === CLOUD_FLARE;
784
+ var handleCloseModal = function handleCloseModal() {
785
+ onClose();
786
+ setSelectedImage({});
787
+ };
788
+ var handleImageEditComplete = function handleImageEditComplete(editedImage) {
789
+ handleCreateBlob(editedImage, true);
790
+ handleCloseModal();
791
+ };
792
+ var handleUploadComplete = function handleUploadComplete(image) {
793
+ if (isGif(image)) {
794
+ handleCreateBlob(image);
795
+ handleCloseModal();
796
+ return;
797
+ }
798
+ isCloudFlareImageUploader && handleCreateBlob(image);
799
+ setSelectedImage(image);
800
+ };
801
+ var handleCreateBlob = function handleCreateBlob(editedImage) {
802
+ var isCropped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
803
+ if (IS_DEVELOPMENT_OR_HEROKU_ENV || isGif(editedImage)) {
804
+ onUploadComplete({
805
+ url: editedImage.url,
806
+ signedId: editedImage.signedId
807
+ });
808
+ } else {
809
+ var imageKitPayload = function imageKitPayload() {
810
+ return {
811
+ filename: generateASCIIFileName(editedImage.name),
812
+ byte_size: editedImage.size,
813
+ content_type: editedImage.fileType,
814
+ checksum: editedImage.fileId,
815
+ metadata: editedImage,
816
+ service_name: "imagekitio"
817
+ };
818
+ };
819
+ var cloudFlarePayload = function cloudFlarePayload() {
820
+ return {
821
+ filename: generateASCIIFileName(editedImage.filename),
822
+ content_type: editedImage.contentType,
823
+ byte_size: editedImage.byteSize,
824
+ checksum: editedImage.checksum,
825
+ metadata: _objectSpread(_objectSpread({}, editedImage.metadata), {}, {
826
+ url: constructCloudflareImageURL(editedImage.url),
827
+ isCropped: isCropped
828
+ }),
829
+ service_name: "cloudflare_image"
830
+ };
831
+ };
832
+ var payload = isCloudFlareImageUploader ? cloudFlarePayload() : imageKitPayload();
833
+ createBlob(payload, {
834
+ onSuccess: function onSuccess(image) {
835
+ onUploadComplete({
836
+ url: image.blobUrl,
837
+ signedId: image.signedId
838
+ });
839
+ },
840
+ onError: Toastr.error
841
+ });
842
+ }
843
+ };
844
+ var _useImageUploader = useImageUploader({
845
+ onUploadComplete: handleUploadComplete,
846
+ setIsUploading: setIsUploading
847
+ }),
848
+ uploadFile = _useImageUploader.uploadFile;
849
+ var _useUploadDropzone = useUploadDropzone({
850
+ uploadConfig: uploadConfigWithDefaults,
851
+ onDrop: uploadFile
852
+ }),
853
+ getRootProps = _useUploadDropzone.getRootProps,
854
+ getInputProps = _useUploadDropzone.getInputProps,
855
+ isDragActive = _useUploadDropzone.isDragActive;
856
+ useEffect(function () {
857
+ setActiveTab(TABS[0].key);
858
+ }, [isOpen]);
859
+ var renderContent = function renderContent() {
860
+ if (activeTab === "upload") {
861
+ return /*#__PURE__*/jsx("div", {
862
+ className: "grow px-6 pb-6 pt-4",
863
+ children: /*#__PURE__*/jsx("div", {
864
+ className: "h-full w-full overflow-y-auto",
865
+ children: /*#__PURE__*/jsx(ImageDirectUpload, {
866
+ uploadConfig: uploadConfigWithDefaults,
867
+ onDrop: uploadFile
868
+ })
869
+ })
870
+ });
871
+ }
872
+ return /*#__PURE__*/jsx(ImageLibrary, {
873
+ setActiveTab: setActiveTab,
874
+ setIsUploading: setIsUploading,
875
+ setSelectedImage: setSelectedImage,
876
+ tab: activeTab
877
+ });
878
+ };
879
+ return /*#__PURE__*/jsxs(Dialog, {
880
+ isOpen: isOpen,
881
+ className: "niu-modal",
882
+ size: "large",
883
+ onClose: handleCloseModal,
884
+ children: [isUploading && /*#__PURE__*/jsx("div", {
885
+ className: "bg-muted/60 absolute inset-0 z-50 flex h-full items-center justify-center opacity-50",
886
+ children: /*#__PURE__*/jsx(Spinner, {})
887
+ }), isNilOrEmpty(selectedImage) && isDragActive && /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
888
+ className: "neeto-ui-rounded-xl bg-muted/60 border-foreground absolute flex h-full w-full flex-col items-center justify-around border-4 border-dashed opacity-40"
889
+ }, getRootProps()), {}, {
890
+ children: /*#__PURE__*/jsx(Typography, {
891
+ children: t("neetoImageUploader.common.dropHere")
892
+ })
893
+ })), !isNilOrEmpty(selectedImage) ? /*#__PURE__*/jsx(ImageEditor, {
894
+ defaultImageSize: defaultImageSize,
895
+ fixedAspectRatio: fixedAspectRatio,
896
+ handleImageEditComplete: handleImageEditComplete,
897
+ handleReset: function handleReset() {
898
+ return setSelectedImage({});
899
+ },
900
+ image: selectedImage,
901
+ signedId: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.signedId
902
+ }) : /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
903
+ className: "flex h-full flex-col"
904
+ }, getRootProps({
905
+ onClick: function onClick(event) {
906
+ return event.stopPropagation();
907
+ }
908
+ })), {}, {
909
+ children: [/*#__PURE__*/jsx(Dialog.Header, {
910
+ children: /*#__PURE__*/jsx(Dialog.Title, {
911
+ children: t("neetoImageUploader.common.imageLibrary")
912
+ })
913
+ }), /*#__PURE__*/jsx(Tabs, {
914
+ value: activeTab,
915
+ onValueChange: setActiveTab,
916
+ children: /*#__PURE__*/jsx(Tabs.List, {
917
+ className: "flex gap-2 px-6",
918
+ children: TABS.map(function (tab) {
919
+ return /*#__PURE__*/jsx(Tabs.Item, {
920
+ "data-testid": tab.dataTestid,
921
+ value: tab.key,
922
+ children: tab.label
923
+ }, tab.key);
924
+ })
925
+ })
926
+ }), renderContent(), equals(activeTab, TABS[2].key) && /*#__PURE__*/jsx(Dialog.Footer, {
927
+ className: "flex items-center justify-center gap-2",
928
+ children: /*#__PURE__*/jsx(Typography, {
929
+ variant: "body2",
930
+ children: /*#__PURE__*/jsx(Trans, {
931
+ i18nKey: "neetoImageUploader.unsplash.poweredByUnsplash",
932
+ components: {
933
+ a: /*#__PURE__*/jsx("a", {
934
+ href: UNSPLASH_URL,
935
+ rel: "noreferrer",
936
+ target: "_blank"
937
+ })
938
+ }
939
+ })
940
+ })
941
+ })]
942
+ })), /*#__PURE__*/jsx("input", _objectSpread({}, getInputProps()))]
943
+ });
944
+ };
945
+
946
+ export { Modal as M, constructCloudflareImageURL as c };
947
+ //# sourceMappingURL=index-EgJf9LfL.js.map