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.
- package/dist/limbo.cjs.js +5 -5
- package/dist/limbo.cjs.map +1 -1
- package/dist/limbo.css +1 -1
- package/dist/limbo.es.js +2122 -687
- package/dist/limbo.es.map +1 -1
- package/dist/limbo.min.js +6 -6
- package/dist/limbo.min.js.map +1 -1
- package/dist/limbo.umd.js +8 -8
- package/dist/limbo.umd.js.map +1 -1
- package/dist/types/App.d.ts.map +1 -1
- package/dist/types/components/CropperView.d.ts +2 -1
- package/dist/types/components/CropperView.d.ts.map +1 -1
- package/dist/types/components/Gallery.d.ts +18 -3
- package/dist/types/components/Gallery.d.ts.map +1 -1
- package/dist/types/components/ImageCard.d.ts.map +1 -1
- package/dist/types/components/ImageCardSkeleton.d.ts +6 -0
- package/dist/types/components/ImageCardSkeleton.d.ts.map +1 -0
- package/dist/types/components/ImageVariantsModal.d.ts.map +1 -1
- package/dist/types/core/ConfigManager.d.ts +143 -12
- package/dist/types/core/ConfigManager.d.ts.map +1 -1
- package/dist/types/core/LimboCore.d.ts +123 -0
- package/dist/types/core/LimboCore.d.ts.map +1 -1
- package/dist/types/hooks/useDebounce.d.ts +18 -0
- package/dist/types/hooks/useDebounce.d.ts.map +1 -0
- package/dist/types/utils/CropperManager.d.ts +1 -0
- package/dist/types/utils/CropperManager.d.ts.map +1 -1
- package/dist/types/utils/downloadImage.d.ts +47 -0
- package/dist/types/utils/downloadImage.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/types/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/App.jsx"],"names":[],"mappings":"
|
|
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":"
|
|
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({
|
|
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
|
|
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;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ImageCard.d.ts","sourceRoot":"","sources":["../../../src/components/ImageCard.jsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;4CA8cC"}
|
|
@@ -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;;;;;;;;;;;;;;;
|
|
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
|
|
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;
|
|
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
|
|
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"}
|