limbo-component 1.6.7 → 1.8.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/App.jsx"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;4CAkUC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/App.jsx"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;4CA0iBC"}
@@ -1,8 +1,9 @@
1
- export default function CropperView({ image, onSave, onCancel, onDelete, deleting, onVariantCreated, }: {
1
+ export default function CropperView({ image, onSave, onCancel, onDelete, onError, deleting, onVariantCreated, }: {
2
2
  image: any;
3
3
  onSave: any;
4
4
  onCancel: any;
5
5
  onDelete: any;
6
+ onError?: any;
6
7
  deleting?: boolean;
7
8
  onVariantCreated?: any;
8
9
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CropperView.d.ts","sourceRoot":"","sources":["../../../src/components/CropperView.jsx"],"names":[],"mappings":"AAMA;;;;;;;4CAovCC"}
1
+ {"version":3,"file":"CropperView.d.ts","sourceRoot":"","sources":["../../../src/components/CropperView.jsx"],"names":[],"mappings":"AAOA;;;;;;;;4CAsjEC"}
@@ -1,6 +1,4 @@
1
- export default function Gallery({ apiKey, prod, onSelect, onCrop, onDelete, deletingId, images, loading, error, allowedActions, }: {
2
- apiKey: any;
3
- prod: any;
1
+ export default function Gallery({ onSelect, onCrop, onDelete, deletingId, images, loading, error, filters, onFiltersChange, filterConfig, loadingConfig, allowedActions, }: {
4
2
  onSelect: any;
5
3
  onCrop: any;
6
4
  onDelete: any;
@@ -8,6 +6,23 @@ export default function Gallery({ apiKey, prod, onSelect, onCrop, onDelete, dele
8
6
  images: any;
9
7
  loading: any;
10
8
  error: any;
9
+ filters?: {
10
+ name: string;
11
+ dateFrom: string;
12
+ dateTo: string;
13
+ uploadedBy: string;
14
+ };
15
+ onFiltersChange: any;
16
+ filterConfig?: {
17
+ showNameFilter: boolean;
18
+ showUploadedByFilter: boolean;
19
+ showDateFilter: boolean;
20
+ };
21
+ loadingConfig?: {
22
+ showPlaceholders: boolean;
23
+ placeholderCount: number;
24
+ showSpinner: boolean;
25
+ };
11
26
  allowedActions?: {
12
27
  select: boolean;
13
28
  download: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../../src/components/Gallery.jsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;4CAoMC"}
1
+ {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../../src/components/Gallery.jsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAkOC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageCard.d.ts","sourceRoot":"","sources":["../../../src/components/ImageCard.jsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;4CAkdC"}
1
+ {"version":3,"file":"ImageCard.d.ts","sourceRoot":"","sources":["../../../src/components/ImageCard.jsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;4CA8cC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Componente de placeholder/skeleton para ImageCard
3
+ * Muestra un esqueleto animado mientras se cargan las imágenes
4
+ */
5
+ export default function ImageCardSkeleton(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=ImageCardSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageCardSkeleton.d.ts","sourceRoot":"","sources":["../../../src/components/ImageCardSkeleton.jsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qFAgCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageVariantsModal.d.ts","sourceRoot":"","sources":["../../../src/components/ImageVariantsModal.jsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;4CAghBC"}
1
+ {"version":3,"file":"ImageVariantsModal.d.ts","sourceRoot":"","sources":["../../../src/components/ImageVariantsModal.jsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;4CAugBC"}
@@ -19,12 +19,31 @@ export class ConfigManager {
19
19
  format: string;
20
20
  aspectRatio: any;
21
21
  lockAspectRatio: boolean;
22
- allowedAspectRatios: {
23
- label: string;
24
- value: string;
25
- ratio: number;
26
- }[];
27
22
  showFreeAspectRatio: boolean;
23
+ showDimensionInputs: boolean;
24
+ enableEditMode: boolean;
25
+ showDownloadInCropper: boolean;
26
+ showCropName: boolean;
27
+ mandatoryCrops: any[];
28
+ allowCustomCrops: boolean;
29
+ };
30
+ gallery: {
31
+ filters: {
32
+ showNameFilter: boolean;
33
+ showUploadedByFilter: boolean;
34
+ showDateFilter: boolean;
35
+ enabledFilters: string[];
36
+ customFilters: any[];
37
+ };
38
+ loading: {
39
+ showPlaceholders: boolean;
40
+ placeholderCount: number;
41
+ showSpinner: boolean;
42
+ };
43
+ pagination: {
44
+ itemsPerPage: number;
45
+ showPageSize: boolean;
46
+ };
28
47
  };
29
48
  validation: {
30
49
  maxSize: string;
@@ -34,6 +53,7 @@ export class ConfigManager {
34
53
  maxWidth: any;
35
54
  maxHeight: any;
36
55
  };
56
+ downloadFormat: string;
37
57
  return: {
38
58
  format: string;
39
59
  autoAssign: boolean;
@@ -74,8 +94,17 @@ export class ConfigManager {
74
94
  closeOnBackdrop: boolean;
75
95
  showCloseButton: boolean;
76
96
  };
77
- callbacks: {};
97
+ callbacks: {
98
+ onUpload: any;
99
+ onSelect: any;
100
+ onDelete: any;
101
+ onCropsSaved: any;
102
+ onCropperComplete: any;
103
+ onCropperCancelled: any;
104
+ onCropperError: any;
105
+ };
78
106
  autoDestroy: boolean;
107
+ autoHideOnComplete: boolean;
79
108
  debug: boolean;
80
109
  apiEndpoint: any;
81
110
  auth: {
@@ -162,12 +191,31 @@ export class ConfigManager {
162
191
  format: string;
163
192
  aspectRatio: any;
164
193
  lockAspectRatio: boolean;
165
- allowedAspectRatios: {
166
- label: string;
167
- value: string;
168
- ratio: number;
169
- }[];
170
194
  showFreeAspectRatio: boolean;
195
+ showDimensionInputs: boolean;
196
+ enableEditMode: boolean;
197
+ showDownloadInCropper: boolean;
198
+ showCropName: boolean;
199
+ mandatoryCrops: any[];
200
+ allowCustomCrops: boolean;
201
+ };
202
+ gallery: {
203
+ filters: {
204
+ showNameFilter: boolean;
205
+ showUploadedByFilter: boolean;
206
+ showDateFilter: boolean;
207
+ enabledFilters: string[];
208
+ customFilters: any[];
209
+ };
210
+ loading: {
211
+ showPlaceholders: boolean;
212
+ placeholderCount: number;
213
+ showSpinner: boolean;
214
+ };
215
+ pagination: {
216
+ itemsPerPage: number;
217
+ showPageSize: boolean;
218
+ };
171
219
  };
172
220
  validation: {
173
221
  maxSize: string;
@@ -211,8 +259,17 @@ export class ConfigManager {
211
259
  shadows: {};
212
260
  customProperties: {};
213
261
  };
214
- callbacks: {};
262
+ callbacks: {
263
+ onUpload: any;
264
+ onSelect: any;
265
+ onDelete: any;
266
+ onCropsSaved: any;
267
+ onCropperComplete: any;
268
+ onCropperCancelled: any;
269
+ onCropperError: any;
270
+ };
215
271
  autoDestroy: boolean;
272
+ autoHideOnComplete: boolean;
216
273
  debug: boolean;
217
274
  apiEndpoint: any;
218
275
  auth: {
@@ -289,6 +346,80 @@ export class ConfigManager {
289
346
  * Helper para facilitar la migración gradual
290
347
  */
291
348
  migrateToJWT(legacyApiKey?: any): this;
349
+ /**
350
+ * ========================================
351
+ * HELPERS PARA CONFIGURACIÓN DE CROPPER
352
+ * ========================================
353
+ */
354
+ /**
355
+ * Obtener recortes obligatorios configurados
356
+ */
357
+ getMandatoryCrops(config?: any): any;
358
+ /**
359
+ * Verificar si hay recortes obligatorios configurados
360
+ */
361
+ hasMandatoryCrops(config?: any): boolean;
362
+ /**
363
+ * Verificar si está habilitado el modo de edición de variantes
364
+ */
365
+ isEditModeEnabled(config?: any): boolean;
366
+ /**
367
+ * Verificar si se muestran inputs de dimensiones en lugar de aspect ratio
368
+ */
369
+ showDimensionInputs(config?: any): boolean;
370
+ /**
371
+ * Verificar si se muestra botón de descarga en el cropper
372
+ */
373
+ showDownloadInCropper(config?: any): boolean;
374
+ /**
375
+ * Verificar si se muestra campo de nombre de recorte
376
+ */
377
+ showCropName(config?: any): boolean;
378
+ /**
379
+ * Verificar si se permiten recortes personalizados
380
+ */
381
+ allowCustomCrops(config?: any): boolean;
382
+ /**
383
+ * ========================================
384
+ * HELPERS PARA CONFIGURACIÓN DE GALERÍA
385
+ * ========================================
386
+ */
387
+ /**
388
+ * Obtener configuración de filtros de galería
389
+ */
390
+ getGalleryFilters(config?: any): any;
391
+ /**
392
+ * Verificar si un filtro específico está habilitado
393
+ */
394
+ isGalleryFilterEnabled(filterName: any, config?: any): any;
395
+ /**
396
+ * Obtener filtros personalizados de galería
397
+ */
398
+ getCustomGalleryFilters(config?: any): any;
399
+ /**
400
+ * Obtener configuración de carga de galería
401
+ */
402
+ getGalleryLoadingConfig(config?: any): any;
403
+ /**
404
+ * Verificar si se muestran placeholders en la galería
405
+ */
406
+ showGalleryPlaceholders(config?: any): boolean;
407
+ /**
408
+ * Obtener número de placeholders a mostrar
409
+ */
410
+ getPlaceholderCount(config?: any): any;
411
+ /**
412
+ * Verificar si se muestra spinner de carga en galería
413
+ */
414
+ showGallerySpinner(config?: any): boolean;
415
+ /**
416
+ * Obtener configuración de paginación de galería
417
+ */
418
+ getGalleryPagination(config?: any): any;
419
+ /**
420
+ * Obtener items por página
421
+ */
422
+ getItemsPerPage(config?: any): any;
292
423
  }
293
424
  import { I18n } from '../utils/i18n.js';
294
425
  //# sourceMappingURL=ConfigManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../../src/core/ConfigManager.js"],"names":[],"mappings":"AAOA;IAEI,iBAAsB;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmHC;IAGH;;OAEG;IACH,6BAGC;IAED;;OAEG;IACH,gBAEC;IAED;;;OAGG;IACH,+BASC;IAED;;OAEG;IACH,kCAkBC;IAED;;OAEG;IACH,oCAGC;IAED;;OAEG;IACH,mBAEC;IAED;;OAEG;IACH,sBAGC;IAED;;OAEG;IACH,kCAGC;IAED;;OAEG;IACH,iCAGC;IAED;;OAEG;IACH,0CAIC;IAED;;OAEG;IACH,uDAWC;IAED;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2HC;IAED;;OAEG;IACH,sCAyCC;IAED;;OAEG;IACH,sDAQC;IAED;;OAEG;IACH,oDAGC;IAED;;OAEG;IACH,sCAGC;IAED;;OAEG;IACH,oCAGC;IAED;;OAEG;IACH,8BAcC;IAED;;OAEG;IACH;;;MA0CC;IAED;;;;;OAKG;IACH,mBAJW,MAAM,cACN,MAAM,uBAiBhB;IAED;;OAEG;IACH;;;;;;;;MAWC;IAED;;OAEG;IACH,uCAGC;IAED;;OAEG;IACH,0CAGC;IAED;;;OAGG;IACH,uCAYC;CACF;qBA5kBoB,kBAAkB"}
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../../src/core/ConfigManager.js"],"names":[],"mappings":"AAOA;IAEI,iBAAsB;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoLC;IAGH;;OAEG;IACH,6BAGC;IAED;;OAEG;IACH,gBAEC;IAED;;;OAGG;IACH,+BASC;IAED;;OAEG;IACH,kCAkBC;IAED;;OAEG;IACH,oCAGC;IAED;;OAEG;IACH,mBAEC;IAED;;OAEG;IACH,sBAGC;IAED;;OAEG;IACH,kCAGC;IAED;;OAEG;IACH,iCAGC;IAED;;OAEG;IACH,0CAIC;IAED;;OAEG;IACH,uDAWC;IAED;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmKC;IAED;;OAEG;IACH,sCAyCC;IAED;;OAEG;IACH,sDAQC;IAED;;OAEG;IACH,oDAGC;IAED;;OAEG;IACH,sCAGC;IAED;;OAEG;IACH,oCAGC;IAED;;OAEG;IACH,8BAcC;IAED;;OAEG;IACH;;;MA0CC;IAED;;;;;OAKG;IACH,mBAJW,MAAM,cACN,MAAM,uBAiBhB;IAED;;OAEG;IACH;;;;;;;;MAWC;IAED;;OAEG;IACH,uCAGC;IAED;;OAEG;IACH,0CAGC;IAED;;;OAGG;IACH,uCAYC;IAED;;;;OAIG;IAEH;;OAEG;IACH,qCAGC;IAED;;OAEG;IACH,yCAGC;IAED;;OAEG;IACH,yCAGC;IAED;;OAEG;IACH,2CAGC;IAED;;OAEG;IACH,6CAGC;IAED;;OAEG;IACH,oCAGC;IAED;;OAEG;IACH,wCAGC;IAED;;;;OAIG;IAEH;;OAEG;IACH,qCAGC;IAED;;OAEG;IACH,2DAGC;IAED;;OAEG;IACH,2CAGC;IAED;;OAEG;IACH,2CAGC;IAED;;OAEG;IACH,+CAGC;IAED;;OAEG;IACH,uCAGC;IAED;;OAEG;IACH,0CAGC;IAED;;OAEG;IACH,wCAGC;IAED;;OAEG;IACH,mCAGC;CACF;qBAj0BoB,kBAAkB"}
@@ -86,6 +86,129 @@ export class LimboCore {
86
86
  config: any;
87
87
  callback: any;
88
88
  }): void;
89
+ /**
90
+ * 🎨 Abrir galería de imágenes en modal
91
+ * Caso de uso: Selector rápido de imágenes existentes
92
+ *
93
+ * @param {Object} options - Opciones de configuración
94
+ * @param {Function} options.onSelect - Callback cuando se selecciona imagen
95
+ * @param {Object} options.filters - Filtros pre-aplicados
96
+ * @returns {Object} Instancia del modal
97
+ *
98
+ * @example
99
+ * Limbo.openGallery({
100
+ * onSelect: (image) => console.log('Imagen seleccionada:', image)
101
+ * });
102
+ */
103
+ openGallery(options?: {
104
+ onSelect: Function;
105
+ filters: any;
106
+ }): any;
107
+ /**
108
+ * 📤 Abrir uploader en modal
109
+ * Caso de uso: Subida rápida de nueva imagen
110
+ *
111
+ * @param {Object} options - Opciones de configuración
112
+ * @param {Function} options.onUpload - Callback cuando se sube imagen
113
+ * @param {Boolean} options.redirectToGallery - Si true, muestra galería tras subir
114
+ * @returns {Object} Instancia del modal
115
+ *
116
+ * @example
117
+ * Limbo.openUploader({
118
+ * onUpload: (image) => console.log('Imagen subida:', image),
119
+ * redirectToGallery: false
120
+ * });
121
+ */
122
+ openUploader(options?: {
123
+ onUpload: Function;
124
+ redirectToGallery: boolean;
125
+ }): any;
126
+ /**
127
+ * ✂️ Abrir cropper standalone con imagen externa
128
+ * Caso de uso: Recortar una imagen específica sin galería
129
+ *
130
+ * @param {String} imageUrl - URL de la imagen a recortar
131
+ * @param {Object} options - Opciones de configuración
132
+ * @param {Array} options.mandatoryCrops - Recortes obligatorios
133
+ * @param {Function} options.onComplete - Callback cuando se completan los recortes
134
+ * @param {Function} options.onCancelled - Callback cuando se cancela
135
+ * @returns {Object} Instancia del modal
136
+ *
137
+ * @example
138
+ * Limbo.openCropper('https://example.com/image.jpg', {
139
+ * mandatoryCrops: [
140
+ * { label: 'Thumbnail', width: 300, height: 300, required: true },
141
+ * { label: 'Header', width: 1920, height: 400, required: true }
142
+ * ],
143
+ * onComplete: (crops) => console.log('Recortes:', crops),
144
+ * onCancelled: () => console.log('Cancelado')
145
+ * });
146
+ */
147
+ openCropper(imageUrl: string, options?: {
148
+ mandatoryCrops: any[];
149
+ onComplete: Function;
150
+ onCancelled: Function;
151
+ }): any;
152
+ /**
153
+ * 🖼️ Crear galería embebida en un contenedor
154
+ * Caso de uso: Galería permanente en una página
155
+ *
156
+ * @param {String|HTMLElement} container - Selector o elemento del contenedor
157
+ * @param {Object} options - Opciones de configuración
158
+ * @returns {Object} Instancia del componente
159
+ *
160
+ * @example
161
+ * Limbo.createInlineGallery('#gallery-container', {
162
+ * onSelect: (image) => console.log('Seleccionada:', image)
163
+ * });
164
+ */
165
+ createInlineGallery(container: string | HTMLElement, options?: any): any;
166
+ /**
167
+ * 📤 Crear uploader embebido en un contenedor
168
+ * Caso de uso: Formulario de subida permanente
169
+ *
170
+ * @param {String|HTMLElement} container - Selector o elemento del contenedor
171
+ * @param {Object} options - Opciones de configuración
172
+ * @returns {Object} Instancia del componente
173
+ *
174
+ * @example
175
+ * Limbo.createInlineUploader('#upload-container', {
176
+ * onUpload: (image) => console.log('Subida:', image)
177
+ * });
178
+ */
179
+ createInlineUploader(container: string | HTMLElement, options?: any): any;
180
+ /**
181
+ * ✂️ Crear cropper embebido con imagen externa
182
+ * Caso de uso: Editor de recortes embebido en página
183
+ *
184
+ * @param {String|HTMLElement} container - Selector o elemento del contenedor
185
+ * @param {String} imageUrl - URL de la imagen a recortar
186
+ * @param {Object} options - Opciones de configuración
187
+ * @returns {Object} Instancia del componente
188
+ *
189
+ * @example
190
+ * Limbo.createStandaloneCropper('#cropper-container', 'https://example.com/image.jpg', {
191
+ * mandatoryCrops: [{ label: 'Avatar', width: 200, height: 200, required: true }],
192
+ * onComplete: (crops) => console.log('Recortes completados:', crops),
193
+ * autoHideOnComplete: true
194
+ * });
195
+ */
196
+ createStandaloneCropper(container: string | HTMLElement, imageUrl: string, options?: any): any;
197
+ /**
198
+ * 🎯 Crear selector completo (galería + uploader + cropper)
199
+ * Caso de uso: Selector completo con todas las funcionalidades
200
+ *
201
+ * @param {String|HTMLElement} container - Selector o elemento del contenedor
202
+ * @param {Object} options - Opciones de configuración
203
+ * @returns {Object} Instancia del componente
204
+ *
205
+ * @example
206
+ * Limbo.createFullSelector('#selector', {
207
+ * onSelect: (image) => document.getElementById('preview').src = image.url,
208
+ * onUpload: (image) => console.log('Nueva imagen:', image)
209
+ * });
210
+ */
211
+ createFullSelector(container: string | HTMLElement, options?: any): any;
89
212
  }
90
213
  import { ConfigManager } from './ConfigManager.js';
91
214
  import { InstanceManager } from './InstanceManager.js';
@@ -1 +1 @@
1
- {"version":3,"file":"LimboCore.d.ts","sourceRoot":"","sources":["../../../src/core/LimboCore.js"],"names":[],"mappings":"AASA;;;GAGG;AACH;IAEI,sBAAiC;IACjC,2BAAsC;IACtC,6BAAwC;IACxC,qBAAgC;IAChC,qBAAgC;IAChC,oBAA+B;IAC/B,4FAAoD;IAMtD;;OAEG;IACH,uCAgBC;IAED;;OAEG;IACH,2BAGC;IAED;;OAEG;IACH,iEAGC;IAED;;OAEG;IACH,oDAEC;IAED;;OAEG;IACH,iCAaC;IAED;;OAEG;IACH;;;;;MAEC;IAED;;OAEG;IACH;;;;MA0CC;IAED;;OAEG;IACH,oCAWC;IAED;;OAEG;IACH,qCAmBC;IAED;;OAEG;IACH,+DAGC;IAED;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,gBAKC;IAED;;;;;;;MASC;IAED;;OAEG;IACH,gCAKC;IAED;;OAEG;IACH;;;aAmBC;CACF;8BA5P6B,oBAAoB;gCAClB,sBAAsB;iCACrB,uBAAuB;6BAC3B,mBAAmB;6BACnB,mBAAmB;6BACnB,0BAA0B"}
1
+ {"version":3,"file":"LimboCore.d.ts","sourceRoot":"","sources":["../../../src/core/LimboCore.js"],"names":[],"mappings":"AASA;;;GAGG;AACH;IAEI,sBAAiC;IACjC,2BAAsC;IACtC,6BAAwC;IACxC,qBAAgC;IAChC,qBAAgC;IAChC,oBAA+B;IAC/B,4FAAoD;IAMtD;;OAEG;IACH,uCAgBC;IAED;;OAEG;IACH,2BAGC;IAED;;OAEG;IACH,iEAGC;IAED;;OAEG;IACH,oDAEC;IAED;;OAEG;IACH,iCAaC;IAED;;OAEG;IACH;;;;;MAEC;IAED;;OAEG;IACH;;;;MA0CC;IAED;;OAEG;IACH,oCAWC;IAED;;OAEG;IACH,qCAmBC;IAED;;OAEG;IACH,+DAGC;IAED;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,gBAKC;IAED;;;;;;;MASC;IAED;;OAEG;IACH,gCAKC;IAED;;OAEG;IACH;;;aAmBC;IAMD;;;;;;;;;;;;;OAaG;IACH,sBATG;QAA0B,QAAQ;QACV,OAAO;KAC/B,OA8BF;IAED;;;;;;;;;;;;;;OAcG;IACH,uBAVG;QAA0B,QAAQ;QACT,iBAAiB;KAC1C,OAmCF;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,wCAfG;QAAuB,cAAc;QACX,UAAU;QACV,WAAW;KACrC,OAkEF;IAED;;;;;;;;;;;;OAYG;IACH,+BATW,SAAO,WAAW,sBAqB5B;IAED;;;;;;;;;;;;OAYG;IACH,gCATW,SAAO,WAAW,sBAoB5B;IAED;;;;;;;;;;;;;;;OAeG;IACH,mCAZW,SAAO,WAAW,wCAmD5B;IAED;;;;;;;;;;;;;OAaG;IACH,8BAVW,SAAO,WAAW,sBAwB5B;CACF;8BA5iB6B,oBAAoB;gCAClB,sBAAsB;iCACrB,uBAAuB;6BAC3B,mBAAmB;6BACnB,mBAAmB;6BACnB,0BAA0B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Hook de debouncing para retrasar actualizaciones de valores
3
+ *
4
+ * @param {any} value - Valor a debounce
5
+ * @param {number} delay - Retraso en milisegundos (por defecto 500ms)
6
+ * @returns {any} - Valor con debounce aplicado
7
+ *
8
+ * @example
9
+ * const [search, setSearch] = useState('');
10
+ * const debouncedSearch = useDebounce(search, 500);
11
+ *
12
+ * useEffect(() => {
13
+ * // Esta llamada solo se ejecuta 500ms después de que el usuario pare de escribir
14
+ * fetchResults(debouncedSearch);
15
+ * }, [debouncedSearch]);
16
+ */
17
+ export default function useDebounce(value: any, delay?: number): any;
18
+ //# sourceMappingURL=useDebounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDebounce.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAbW,GAAG,UACH,MAAM,GACJ,GAAG,CA4Bf"}
@@ -40,6 +40,7 @@ export class CropperManager {
40
40
  move: (x: any, y: any) => boolean;
41
41
  zoom: (factor: any) => boolean;
42
42
  change: (x: any, y: any, width: any, height: any, aspectRatio: any) => boolean;
43
+ set: (x: any, y: any, width: any, height: any) => boolean;
43
44
  toCanvas: (options?: {}) => Promise<any>;
44
45
  getData: () => {
45
46
  x: any;
@@ -1 +1 @@
1
- {"version":3,"file":"CropperManager.d.ts","sourceRoot":"","sources":["../../../src/utils/CropperManager.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;IACE,8DAIC;IAHC,eAA0B;IAC1B,cAAwB;IACxB,kBAAgC;IAGlC,yBAEC;IAED,iBAEC;IAED,4BAEC;IAGD,uBAEC;IAED;;OAEG;IACH;;;;;;;;;;;;;;MA8ME;IAEF;;OAEG;IACH;;;;;;;;;;;;;;;;MAqJE;IAEF;;OAEG;IACH;;;;MAoCE;IAEF;;OAEG;IACH;;;;;;;;;;;;;;;;;;MAuJE;IAEF;;OAEG;IACH,gDA6FC;CACF"}
1
+ {"version":3,"file":"CropperManager.d.ts","sourceRoot":"","sources":["../../../src/utils/CropperManager.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;IACE,8DAIC;IAHC,eAA0B;IAC1B,cAAwB;IACxB,kBAAgC;IAGlC,yBAEC;IAED,iBAEC;IAED,4BAEC;IAGD,uBAEC;IAED;;OAEG;IACH;;;;;;;;;;;;;;MA8ME;IAEF;;OAEG;IACH;;;;;;;;;;;;;;;;;MAqKE;IAEF;;OAEG;IACH;;;;MAoCE;IAEF;;OAEG;IACH;;;;;;;;;;;;;;;;;;MAuJE;IAEF;;OAEG;IACH,gDA6FC;CACF"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Unified Image Download Utility
3
+ *
4
+ * Provides consistent download functionality across all components
5
+ * with configurable format support.
6
+ */
7
+ /**
8
+ * Download an image from a URL or base64 data
9
+ *
10
+ * @param {string} imageSource - URL or base64 data URI
11
+ * @param {string} filename - Desired filename (without extension)
12
+ * @param {Object} options - Download options
13
+ * @param {string} options.format - Output format (webp, jpeg, png, jpg)
14
+ * @param {string} options.originalFormat - Original image format (fallback)
15
+ * @param {function} options.onSuccess - Success callback
16
+ * @param {function} options.onError - Error callback
17
+ * @param {Object} options.accessibilityManager - Accessibility manager for announcements
18
+ * @returns {Promise<boolean>} - Success status
19
+ */
20
+ export function downloadImage(imageSource: string, filename: string, options?: {
21
+ format: string;
22
+ originalFormat: string;
23
+ onSuccess: Function;
24
+ onError: Function;
25
+ accessibilityManager: any;
26
+ }): Promise<boolean>;
27
+ /**
28
+ * Download multiple images as a zip file (requires JSZip library)
29
+ *
30
+ * @param {Array<{url: string, filename: string}>} images - Array of images to download
31
+ * @param {string} zipFilename - Name of the zip file
32
+ * @param {Object} options - Download options
33
+ * @returns {Promise<boolean>} - Success status
34
+ */
35
+ export function downloadImagesAsZip(images: Array<{
36
+ url: string;
37
+ filename: string;
38
+ }>, zipFilename?: string, options?: any): Promise<boolean>;
39
+ /**
40
+ * Get download format from global config or fallback
41
+ *
42
+ * @param {string} fallback - Fallback format if not configured
43
+ * @returns {string} - Download format
44
+ */
45
+ export function getDownloadFormat(fallback?: string): string;
46
+ export default downloadImage;
47
+ //# sourceMappingURL=downloadImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadImage.d.ts","sourceRoot":"","sources":["../../../src/utils/downloadImage.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;GAYG;AACH,2CAVW,MAAM,YACN,MAAM,YAEd;IAAwB,MAAM,EAAtB,MAAM;IACU,cAAc,EAA9B,MAAM;IACY,SAAS;IACT,OAAO;IACT,oBAAoB;CAC5C,GAAU,OAAO,CAAC,OAAO,CAAC,CAkG5B;AAoFD;;;;;;;GAOG;AACH,4CALW,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC,gBACtC,MAAM,kBAEJ,OAAO,CAAC,OAAO,CAAC,CAiF5B;AAED;;;;;GAKG;AACH,6CAHW,MAAM,GACJ,MAAM,CAKlB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "limbo-component",
3
- "version": "1.6.7",
3
+ "version": "1.8.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Limbo - Highly configurable React image manager component for web portals",