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

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