allaw-ui 5.1.4 → 5.1.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.
@@ -56,15 +56,29 @@ var FileUploader = function (_a) {
56
56
  var progressIntervalRef = useRef(null);
57
57
  var fileInputRef = useRef(null);
58
58
  var _z = useState(originalFileName), currentFileName = _z[0], setCurrentFileName = _z[1];
59
+ // Garder une référence à l'image originale pour permettre les recrops
60
+ var originalImageUrlRef = useRef(null);
61
+ var originalFileRef = useRef(null);
59
62
  useEffect(function () {
60
63
  if (initialFile) {
61
64
  setSelectedFile(initialFile);
65
+ originalFileRef.current = initialFile;
62
66
  initialFile.arrayBuffer().then(function (content) {
63
67
  setFileContent(content);
64
68
  });
69
+ // Créer une URL pour l'image originale si c'est une image
70
+ if (isImageFile(initialFile) && !originalImageUrlRef.current) {
71
+ var url = URL.createObjectURL(initialFile);
72
+ originalImageUrlRef.current = url;
73
+ }
65
74
  }
66
75
  if (initialPreviewUrl) {
67
76
  setPreviewUrl(initialPreviewUrl);
77
+ // Pour initialPreviewUrl, on ne peut pas créer de File depuis l'URL
78
+ // originalFileRef restera null, mais on peut utiliser l'URL pour le crop
79
+ if (!originalImageUrlRef.current) {
80
+ originalImageUrlRef.current = initialPreviewUrl;
81
+ }
68
82
  }
69
83
  if (initialCropMetadata) {
70
84
  setCropMetadata(initialCropMetadata);
@@ -78,6 +92,10 @@ var FileUploader = function (_a) {
78
92
  if (previewUrl && !initialPreviewUrl) {
79
93
  URL.revokeObjectURL(previewUrl);
80
94
  }
95
+ // Nettoyer aussi la référence à l'image originale
96
+ if (originalImageUrlRef.current && !initialPreviewUrl) {
97
+ URL.revokeObjectURL(originalImageUrlRef.current);
98
+ }
81
99
  };
82
100
  }, [previewUrl, initialPreviewUrl]);
83
101
  var startProgressSimulation = function () {
@@ -169,6 +187,12 @@ var FileUploader = function (_a) {
169
187
  if (isImageFile(file)) {
170
188
  url = URL.createObjectURL(file);
171
189
  setPreviewUrl(url);
190
+ // Conserver la référence à l'image originale pour les recrops
191
+ if (originalImageUrlRef.current && !initialPreviewUrl) {
192
+ URL.revokeObjectURL(originalImageUrlRef.current);
193
+ }
194
+ originalImageUrlRef.current = url;
195
+ originalFileRef.current = file;
172
196
  if (!enableCropping) {
173
197
  setCropMetadata({
174
198
  zoom: 1,
@@ -181,6 +205,10 @@ var FileUploader = function (_a) {
181
205
  else {
182
206
  setPreviewUrl(null);
183
207
  setCropMetadata(null);
208
+ if (originalImageUrlRef.current && !initialPreviewUrl) {
209
+ URL.revokeObjectURL(originalImageUrlRef.current);
210
+ }
211
+ originalImageUrlRef.current = null;
184
212
  }
185
213
  if (autoManageProgress && !(enableCropping && isImageFile(file))) {
186
214
  startProgressSimulation();
@@ -207,9 +235,28 @@ var FileUploader = function (_a) {
207
235
  });
208
236
  }); };
209
237
  var openCropModal = function () {
210
- if (selectedFile && isImageFile(selectedFile)) {
238
+ var _a, _b;
239
+ // Si on a un fichier original, ouvrir le modal de crop pour recropper
240
+ // Sinon, si on n'a pas de fichier original (image déjà croppée), ouvrir le sélecteur de fichier
241
+ if (originalFileRef.current && isImageFile(originalFileRef.current)) {
242
+ // S'assurer qu'on a une URL pour l'image originale
243
+ if (!originalImageUrlRef.current) {
244
+ var url = URL.createObjectURL(originalFileRef.current);
245
+ originalImageUrlRef.current = url;
246
+ }
247
+ // Utiliser le fichier original pour le modal de crop
248
+ setSelectedFile(originalFileRef.current);
211
249
  setShowCropper(true);
212
250
  }
251
+ else if (selectedFile && isImageFile(selectedFile)) {
252
+ // Si on a un selectedFile mais pas d'original, c'est probablement une image déjà croppée
253
+ // Ouvrir le sélecteur de fichier pour charger une nouvelle image
254
+ (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click();
255
+ }
256
+ else {
257
+ // Pas de fichier, ouvrir le sélecteur
258
+ (_b = fileInputRef.current) === null || _b === void 0 ? void 0 : _b.click();
259
+ }
213
260
  };
214
261
  /**
215
262
  * Crop l'image côté client et retourne un Blob
@@ -325,7 +372,7 @@ var FileUploader = function (_a) {
325
372
  setShowCropper(false);
326
373
  };
327
374
  var handleCropConfirm = function (cropMetadata) { return __awaiter(void 0, void 0, void 0, function () {
328
- var dimensions, croppedBlob, croppedFile, croppedContent, croppedUrl, error_2;
375
+ var dimensions, imageToCrop, croppedBlob, croppedFile, croppedContent, croppedUrl, error_2;
329
376
  return __generator(this, function (_a) {
330
377
  switch (_a.label) {
331
378
  case 0:
@@ -341,7 +388,8 @@ var FileUploader = function (_a) {
341
388
  _a.trys.push([1, 4, , 5]);
342
389
  dimensions = cropOutputDimensions[cropMetadata.shape] ||
343
390
  cropOutputDimensions.square || { width: 200, height: 200 };
344
- return [4 /*yield*/, cropImageToBlob(previewUrl, cropMetadata, dimensions.width, dimensions.height)];
391
+ imageToCrop = originalImageUrlRef.current || previewUrl;
392
+ return [4 /*yield*/, cropImageToBlob(imageToCrop, cropMetadata, dimensions.width, dimensions.height)];
345
393
  case 2:
346
394
  croppedBlob = _a.sent();
347
395
  croppedFile = new File([croppedBlob], selectedFile.name.replace(/\.[^/.]+$/, ".png"), // Remplacer l'extension par .png
@@ -357,6 +405,9 @@ var FileUploader = function (_a) {
357
405
  setSelectedFile(croppedFile);
358
406
  setFileContent(croppedContent);
359
407
  setCurrentFileName(croppedFile.name);
408
+ // Réinitialiser cropMetadata car l'image est déjà croppée
409
+ // Plus besoin d'appliquer les transformations CSS
410
+ setCropMetadata(null);
360
411
  // Appeler onFileRead avec le fichier croppé (pas de cropMetadata car déjà croppé)
361
412
  onFileRead === null || onFileRead === void 0 ? void 0 : onFileRead(croppedFile, croppedContent);
362
413
  return [3 /*break*/, 5];
@@ -379,6 +430,12 @@ var FileUploader = function (_a) {
379
430
  if (previewUrl && !initialPreviewUrl) {
380
431
  URL.revokeObjectURL(previewUrl);
381
432
  }
433
+ // Nettoyer la référence à l'image originale
434
+ if (originalImageUrlRef.current && !initialPreviewUrl) {
435
+ URL.revokeObjectURL(originalImageUrlRef.current);
436
+ }
437
+ originalImageUrlRef.current = null;
438
+ originalFileRef.current = null;
382
439
  if (autoManageProgress) {
383
440
  stopProgressSimulation();
384
441
  setInternalProgress(0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "5.1.4",
3
+ "version": "5.1.5",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",