limbo-component 3.5.1 → 3.5.2

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/CHANGELOG.md CHANGED
@@ -5,175 +5,358 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.5.2] - 2026-02-17
9
+
10
+ Updated README.md & CHANGELOG.md
11
+
12
+ ## [3.5.1] - 2026-02-17
13
+
14
+ ### Added
15
+
16
+ - **Filtro `accept`** — Nuevo parámetro para controlar tipos de archivo permitidos por instancia
17
+ - Sintaxis HTML `<input accept>`: `"image/*"`, `".pdf"`, `"image/*,.pdf"`, etc.
18
+ - Adaptación automática de UI: oculta tabs de IA/Stock/Portales y Cropper cuando las imágenes están excluidas
19
+ - Soporte en todos los métodos de integración: `Limbo.create()`, prefabs, AutoInputs (`data-accept`), API
20
+ - Nueva utilidad `acceptUtils.js` con `resolveAccept()`, `isMimeAllowed()`, `getAcceptLabel()`
21
+ - Backend: nuevo query param `accept` en `GET /api/assets` para filtrado por MIME type
22
+ - `FileValidationService`: nuevos métodos `getMimeTypesForExtension()` y `resolveAcceptFilter()`
23
+ - Filtro de tipo en galería se adapta automáticamente a los tipos permitidos por `accept`
24
+ - Compatible con `allowedCategories` (legacy) — se convierte internamente a formato `accept`
25
+
26
+ ### Fixed
27
+
28
+ - **Cache de galería** — `invalidateCache()` ahora limpia todas las entradas de cache + sessionStorage
29
+ - Corregido: mover asset de carpeta no actualizaba la galería por cache stale
30
+ - Corregido: crear variantes no invalidaba cache (llamada estaba comentada)
31
+ - `refetch()` también limpia toda la cache antes de recargar
32
+
33
+ ## [3.5.0] - 2026-02-16
34
+
35
+ ### Added
36
+
37
+ - **GIF inteligente** — Tratamiento especial para archivos GIF animados
38
+ - Backend: GIFs se almacenan sin conversión a WebP (preserva animación original)
39
+ - Nuevo `asset_subtype: "gif"` y `hasMasterWebp: false` para GIFs
40
+ - Galería: hover-to-animate — thumbnail estático por defecto, animación al pasar el ratón
41
+ - Visualizador: reproduce animación completa en ImageViewer
42
+ - Cropper deshabilitado automáticamente para GIFs
43
+ - Botón de recorte oculto en tarjetas de GIF
44
+
45
+ ## [3.4.0] - 2026-02-15
46
+
47
+ ### Added
48
+
49
+ - **TextViewer** — Visualizador inline para archivos de texto (TXT, CSV)
50
+ - Renderizado del contenido con scroll
51
+ - Botón de descarga
52
+ - Integrado en ViewerShell
53
+ - **Mejoras en AudioViewer** — Barra de progreso visual mejorada
54
+ - Timeline clickable para saltar a posición
55
+ - Indicador de tiempo transcurrido / duración total
56
+ - Animación de forma de onda
57
+
58
+ ### Fixed
59
+
60
+ - Botón de descarga corregido en todos los visualizadores (VideoViewer, AudioViewer, PdfViewer)
61
+ - DocumentViewer muestra tamaño de archivo formateado correctamente
62
+
63
+ ## [3.3.0] - 2026-02-13
64
+
65
+ ### Added
66
+
67
+ - **Thumbnails multi-tipo** — Generación automática de miniaturas para todos los tipos de archivo
68
+ - Imágenes: thumbnail desde master WebP o GD resize
69
+ - Vídeos: frame extraído con FFmpeg
70
+ - Audio: forma de onda generada con FFmpeg
71
+ - PDFs: primera página renderizada con Ghostscript (fondo blanco)
72
+ - Documentos Office: conversión con LibreOffice + captura
73
+ - Texto: preview tipográfico generado con GD
74
+ - Formato WebP para todas las miniaturas
75
+ - Procesamiento asíncrono via `GenerateThumbnailMessage`
76
+
77
+ ### Changed
78
+
79
+ - `ImageProcessingService`: pipeline de procesamiento ampliado para soportar todos los tipos de archivo
80
+ - Thumbnail fallback a icono genérico si la generación falla
81
+
82
+ ## [3.2.0] - 2026-02-11
83
+
84
+ ### Added
85
+
86
+ - **DocumentViewer** — Visualizador para archivos Office y genéricos
87
+ - Muestra información del archivo: nombre, tipo, tamaño
88
+ - Icono específico por tipo (Word, Excel, PowerPoint, texto)
89
+ - Botón de descarga directa
90
+ - **PdfViewer** — Visualizador de PDFs en iframe
91
+ - Carga PDF como blob para bypass de X-Frame-Options
92
+ - Controles nativos del navegador (zoom, páginas, búsqueda)
93
+ - Botón de descarga
94
+
95
+ ### Changed
96
+
97
+ - ImageCard detecta tipo de archivo y enruta al visualizador correcto
98
+ - Iconos específicos por tipo en tarjetas de galería (PDF rojo, Word azul, Excel verde, etc.)
99
+
100
+ ## [3.1.0] - 2026-02-09
101
+
102
+ ### Added
103
+
104
+ - **VideoViewer** — Reproductor de vídeo a pantalla completa
105
+ - Reproductor HTML5 nativo con controles
106
+ - Play/pause con barra espaciadora
107
+ - Descarga directa
108
+ - **AudioViewer** — Reproductor de audio a pantalla completa
109
+ - Elemento audio HTML5 con controles
110
+ - Play/pause con barra espaciadora
111
+ - **ViewerShell** — Componente base compartido para todos los visualizadores
112
+ - Overlay oscuro (z-10000)
113
+ - Cierre con ESC y clic en backdrop
114
+ - Bloqueo de scroll del body
115
+ - Cabecera con título/subtítulo y acciones
116
+ - Footer con atajos de teclado
117
+
118
+ ### Changed
119
+
120
+ - ImageViewer refactorizado para usar ViewerShell (mantiene zoom/pan/drag)
121
+ - Barrel export en `components/viewers/index.js`
122
+
123
+ ## [3.0.0] - 2026-02-05
124
+
125
+ ### Added
126
+
127
+ - **Soporte multi-tipo de archivo** — El componente ya no es solo para imágenes
128
+ - Categorías: `image`, `video`, `audio`, `document`
129
+ - Detección automática de tipo por MIME type
130
+ - Subida, galería y gestión de cualquier tipo de archivo
131
+ - API backend ampliada con campos `assetType`, `assetSubtype`, `originalMime`
132
+ - **Sistema de carpetas completo**
133
+ - `FolderSelector` — Dropdown unificado para selección de carpetas
134
+ - Filtro por carpeta en galería
135
+ - Badge de carpeta en tarjetas de la galería
136
+ - Mover archivos entre carpetas desde la galería
137
+ - Crear carpetas nuevas al subir o mover
138
+ - Configuración: `include`/`exclude` para whitelist/blacklist de carpetas
139
+ - API: `GET /api/folders`, `POST /api/folders`, `PATCH /api/assets/{id}` (move)
140
+ - **AssetPreview** — Componente de preview unificado para todos los tipos de archivo
141
+ - Preview visual para imágenes/vídeos
142
+ - Info card para documentos/audio
143
+ - Edición de nombre de archivo
144
+ - Selector de carpeta en preview de subida
145
+ - Botones: descartar, descargar, seleccionar
146
+ - **Filtro por tipo de archivo** en galería
147
+ - Dropdown "Tipo" con opciones: Todos, Imágenes, Vídeos, Documentos, Audio
148
+ - Configurable via `gallery.filters.showTypeFilter`
149
+ - **Acciones por tipo** en tarjetas de galería
150
+ - Recortar solo disponible para imágenes
151
+ - Descarga disponible para todos los tipos
152
+ - Variantes solo para imágenes
153
+
154
+ ### Changed
155
+
156
+ - `ImageCard` renombrado internamente pero mantiene nombre por compatibilidad — ahora soporta todos los tipos
157
+ - `TabUpload` acepta cualquier tipo de archivo (no solo imágenes)
158
+ - API `GET /api/assets` soporta filtro `asset_type`
159
+ - `FileValidationService` ampliado con validación por categoría y MIME types multi-tipo
160
+
161
+ ### Breaking Changes
162
+
163
+ - El objeto de asset ahora incluye `assetType` y `assetSubtype` (antes se asumía siempre imagen)
164
+ - Las URLs de thumbnail pueden ser `null` para tipos sin thumbnail generado
165
+
166
+ ## [2.1.0] - 2026-01-15
167
+
168
+ ### Added
169
+
170
+ - **Acciones de galería mejoradas**
171
+ - Botón de copiar URL al portapapeles
172
+ - Modal de variantes con lista de recortes existentes y descarga individual
173
+ - Contador de variantes visible en tarjeta
174
+
175
+ ### Fixed
176
+
177
+ - Firma de variantes corregida — usa UUID en vez de filename
178
+ - Coordenadas de recorte normalizadas (0-1) aplicadas correctamente al master
179
+ - Transparencia GD cuando el selector excede los límites de la imagen
180
+
181
+ ## [2.0.0] - 2025-11-24
182
+
183
+ ### Added
184
+
185
+ - **Arquitectura de subida diferida** — Las imágenes permanecen en memoria hasta confirmación en cropper
186
+ - No se suben al backend hasta que el usuario guarda los recortes o confirma
187
+ - Cancelar descarta sin tocar el servidor
188
+ - Detección: `image.file` indica imagen nueva sin subir
189
+ - **ImagePreview unificado** — Componente de preview consistente en todas las tabs
190
+ - Edición de nombre de archivo con manejo de extensiones
191
+ - Lightbox para vista ampliada (clic para zoom, ESC para cerrar)
192
+ - Botones contextuales: Descartar, Descargar, Seleccionar, Reintentar (solo IA)
193
+ - Integrado en TabUpload, TabAI, TabStock, TabPortals
194
+ - **Breadcrumbs inteligentes** — Navegación jerárquica de 3 niveles
195
+ - Nivel 1: Tab principal (Galería, Subir, Recortar)
196
+ - Nivel 2: Sub-tab (Subir archivo, Generar con IA, Stock, Portales)
197
+ - Nivel 3: Servicio/Modelo (DALL-E 3, Shutterstock, etc.)
198
+ - Eliminación automática de duplicados
199
+ - Clic para navegar hacia atrás
200
+ - **Aislamiento CSS** — Prefijo `lb:` en todas las clases Tailwind para evitar colisiones
201
+ - **Lógica de visibilidad de botones**
202
+ - "Eliminar" solo para imágenes existentes (con `image.id`)
203
+ - "Conservar original" solo para imágenes nuevas (con `image.file`)
204
+ - **Precisión de dimensiones** — Recortes usan `naturalWidth`/`naturalHeight` reales
205
+ - **Métodos prefab** en LimboCore
206
+ - `openGallery()`, `openUploader()`, `openCropper()` — modales
207
+ - `createInlineGallery()`, `createInlineUploader()`, `createStandaloneCropper()`, `createFullSelector()` — embebidos
208
+ - **Arquitectura de managers** — Separación de responsabilidades
209
+ - ConfigManager, InstanceManager, EventManager, ModalManager, AutoInputManager
210
+ - Cada manager con responsabilidad única (SOLID)
211
+
212
+ ### Changed
213
+
214
+ - Flujo de subida completamente rediseñado (deferred upload)
215
+ - Token JWT expiración aumentada a 60 minutos (antes 10 min)
216
+ - Auto-refresh de token mejorado
217
+
218
+ ### Breaking Changes
219
+
220
+ - Las imágenes ya no se suben inmediatamente al seleccionarlas
221
+ - ImagePreview reemplaza los previews específicos por tab
222
+ - Breadcrumbs reemplazan la navegación de 2 niveles
223
+ - Expiración de JWT cambiada de 600s a 3600s
224
+
225
+ ---
226
+
8
227
  ## [1.6.0] - LTS - 2025-10-21
9
228
 
10
229
  ### Fixed
11
- - 🔧 Fixes in stock services and form generation
12
- - 🪨 Stable version LTS!
230
+
231
+ - Correcciones en servicios de stock y generación de formularios
232
+ - Versión estable LTS
13
233
 
14
234
  ## [1.5.1] - 2025-10-20
15
235
 
16
236
  ### Fixed
17
- - ⚖️ New license **[Propietary]**
237
+
238
+ - Nueva licencia **Proprietary**
18
239
 
19
240
  ## [1.5.0] - 2025-10-20
20
241
 
21
242
  ### Fixed
22
- - 🛡️ fix external images proxy to retrieve urls
243
+
244
+ - Corrección de proxy de imágenes externas para recuperar URLs
23
245
 
24
246
  ## [1.4.0] - 2025-10-19
25
247
 
26
248
  ### Added
27
- - 🆕 New variants menu for images (gestión avanzada de variantes desde la galería)
249
+
250
+ - Nuevo menú de variantes para imágenes (gestión avanzada de variantes desde la galería)
28
251
 
29
252
  ## [1.3.1] - 2025-10-18
30
253
 
31
254
  ### Changed
32
- - ⏳ Token life time up to 3600s (mejora de experiencia de usuario y menos expiraciones)
255
+
256
+ - Token lifetime aumentado a 3600s
33
257
 
34
258
  ## [1.3.0] - 2025-10-17
35
259
 
36
260
  ### Changed
37
- - 🛠️ Various fixes and pagination (mejoras en paginación y correcciones menores)
261
+
262
+ - Varias correcciones y mejoras de paginación
38
263
 
39
264
  ## [1.2.0] - 2025-10-16
40
265
 
41
266
  ### Fixed
42
- - 🔧 Fix services calls (mejoras en llamadas a servicios internos)
43
267
 
44
- ## [1.2.0] - 2025-10-15
45
-
46
- ### Fixed
47
- - 🔧 Fix new cors for localdev and calls to API (mejoras CORS para desarrollo local y llamadas a la API)
268
+ - Correcciones en llamadas a servicios internos
48
269
 
49
270
  ## [1.1.0] - 2025-10-14
50
271
 
51
272
  ### Added
52
273
 
53
- - 🌐 Integración completa con portales externos (proxy seguro, filtrado de duplicados)
54
- - 💾 Persistencia de estado en pestaña "Portales" (sessionStorage)
55
- - 🧩 Compatibilidad total con modos "solo selección" y "cropper-only"
56
- - 🪄 Mejoras en AutoInputs: configuración granular por dataset, botón de selección personalizable
57
- - 🛡️ Mejoras de seguridad y CORS en descargas externas
58
- - 🏷️ Ejemplos de integración avanzada en README
274
+ - Integración completa con portales externos (proxy seguro, filtrado de duplicados)
275
+ - Persistencia de estado en pestaña "Portales" (sessionStorage)
276
+ - Compatibilidad total con modos "solo selección" y "cropper-only"
277
+ - Mejoras en AutoInputs: configuración granular por dataset, botón personalizable
278
+ - Mejoras de seguridad y CORS en descargas externas
59
279
 
60
280
  ### Changed
61
281
 
62
- - 🖼️ UX mejorada en UploadForm y Tabs (más compacto, accesible, placeholders inteligentes)
63
- - Accesibilidad mejorada en navegación por teclado y ARIA
64
- - 🔄 Refactor de lógica de selección para soportar todos los modos y callbacks
282
+ - UX mejorada en UploadForm y Tabs (más compacto, accesible, placeholders inteligentes)
283
+ - Accesibilidad mejorada en navegación por teclado y ARIA
284
+ - Refactor de lógica de selección para soportar todos los modos y callbacks
65
285
 
66
286
  ### Fixed
67
287
 
68
- - 🐞 Corrección de duplicados en resultados de portales externos
69
- - 🐞 Corrección de pérdida de estado al cambiar de pestaña
70
-
71
- ---
288
+ - Corrección de duplicados en resultados de portales externos
289
+ - Corrección de pérdida de estado al cambiar de pestaña
72
290
 
73
291
  ## [1.0.0] - 2025-10-13
74
292
 
75
293
  ### Added
76
294
 
77
- - 🎉 **Primera versión estable** lista para producción
78
- - Arquitectura SOLID con sistema de instancias múltiples
79
- - 🔐 Autenticación JWT v2 con auto-renovación
80
- - 📦 Build multi-formato: ESM, CJS, UMD
81
- - 🖼️ Sistema completo de gestión de imágenes:
295
+ - **Primera versión estable** lista para producción
296
+ - Arquitectura SOLID con sistema de instancias múltiples
297
+ - Autenticación JWT v2 con auto-renovación
298
+ - Build multi-formato: ESM, CJS, UMD
299
+ - Sistema completo de gestión de imágenes:
82
300
  - Galería de imágenes del portal
83
301
  - Subida de imágenes con preview
84
302
  - Recortador avanzado (Cropper.js 2.0)
85
303
  - Integración con IA, Stock y servicios externos
86
- - 🎭 Múltiples modos UI:
87
- - `embed`: Componente embebido en contenedor
88
- - `modal`: Apertura en overlay modal
89
- - `button`: Botón trigger que abre modal
90
- - 🎯 Modos funcionales configurables:
91
- - `full`: Todas las funcionalidades
92
- - `gallery-only`: Solo galería
93
- - `upload-only`: Solo subida
94
- - `crop-only`: Solo recortador
95
- - `ia-only`: Solo IA
96
- - 🤖 Sistema AutoInputs:
97
- - Detección automática de inputs con `data-limbo-input-file`
98
- - Configuración vía datasets
99
- - Múltiples formatos de retorno (url, base64, assetId, object, json)
100
- - 🎨 Sistema de presets:
101
- - Aspect ratios configurables
102
- - Tamaños predefinidos
103
- - Presets obligatorios
104
- - Bloqueo de recorte manual
105
- - 🌍 Sistema i18n completo (ES/EN)
106
- - 🎨 Sistema de theming extensible
107
- - 📡 Sistema de eventos robusto:
108
- - Eventos DOM personalizados
109
- - Callbacks programáticos
110
- - Event Manager centralizado
111
- - ♿ Accesibilidad:
112
- - Focus trap en modales
113
- - ARIA labels
114
- - Navegación por teclado
115
- - Soporte ESC para cerrar modales
116
- - 📱 Responsive y mobile-friendly
117
- - 🔍 Container queries para adaptación automática
118
- - 🎯 APIs completas:
119
- - `Limbo.configure()` - Configuración global
120
- - `Limbo.create()` - Crear instancias
121
- - `Limbo.mount()` / `unmount()` - Gestión de montaje
122
- - `Limbo.open()` / `close()` - Control de modales
123
- - `Limbo.configureAutoInputs()` - Configurar inputs automáticos
304
+ - Múltiples modos UI: `embed`, `modal`, `button`
305
+ - Modos funcionales: `full`, `gallery-only`, `upload-only`, `crop-only`, `ia-only`
306
+ - Sistema AutoInputs con detección automática y configuración vía datasets
307
+ - Sistema de presets (aspect ratios, tamaños, obligatorios)
308
+ - Sistema i18n completo (ES/EN)
309
+ - Sistema de theming extensible
310
+ - Sistema de eventos (DOM + callbacks + EventManager)
311
+ - Accesibilidad: focus trap, ARIA, teclado, ESC
312
+ - Responsive y mobile-friendly con container queries
313
+ - APIs: `configure()`, `create()`, `mount()`/`unmount()`, `open()`/`close()`, `configureAutoInputs()`
124
314
 
125
315
  ### Changed
126
316
 
127
- - 🔄 Migración completa de API v1 a v2
128
- - 🔄 Refactorización SOLID de toda la arquitectura
129
- - ⚡ Optimización de bundle sizes
130
- - 🔒 Mejoras de seguridad con JWT
317
+ - Migración completa de API v1 a v2
318
+ - Refactorización SOLID de toda la arquitectura
131
319
 
132
320
  ### Security
133
321
 
134
- - 🔐 Implementación de autenticación JWT segura
135
- - 🔒 Eliminación de API keys en cliente
136
- - 🛡️ Validación de CORS por portal
322
+ - Autenticación JWT segura
323
+ - Eliminación de API keys en cliente
324
+ - Validación de CORS por portal
137
325
 
138
326
  ## [0.5.0] - 2025-10-10
139
327
 
140
328
  ### Added
141
329
 
142
- - 🚧 Versión beta con migración API v2
143
- - 📦 Sistema de build básico
144
- - 🎨 Integración inicial de Tailwind 4
145
-
146
- ### Changed
147
-
148
- - 🔄 Adaptadores de respuesta v2
149
- - 🔄 Migración de hooks a APIs v2
330
+ - Versión beta con migración API v2
331
+ - Sistema de build básico
332
+ - Integración inicial de Tailwind 4
150
333
 
151
334
  ## [0.4.0] - 2025-10-05
152
335
 
153
336
  ### Added
154
337
 
155
- - Sistema de managers (Config, Event, Modal, AutoInputs)
156
- - 🎯 Soporte para múltiples instancias
338
+ - Sistema de managers (Config, Event, Modal, AutoInputs)
339
+ - Soporte para múltiples instancias
157
340
 
158
341
  ## [0.3.0] - 2025-09-28
159
342
 
160
343
  ### Added
161
344
 
162
- - 🖼️ Componente Gallery básico
163
- - 📤 Sistema de subida de imágenes
164
- - ✂️ Integración de Cropper.js
345
+ - Componente Gallery básico
346
+ - Sistema de subida de imágenes
347
+ - Integración de Cropper.js
165
348
 
166
349
  ## [0.2.0] - 2025-09-20
167
350
 
168
351
  ### Added
169
352
 
170
- - ⚛️ Configuración inicial React 19
171
- - 📦 Setup Vite 7
172
- - 🎨 Configuración Tailwind 4
353
+ - Configuración inicial React 19
354
+ - Setup Vite 7
355
+ - Configuración Tailwind 4
173
356
 
174
357
  ## [0.1.0] - 2025-09-15
175
358
 
176
359
  ### Added
177
360
 
178
- - 🎉 Proyecto inicial
179
- - 📋 Estructura base del componente
361
+ - Proyecto inicial
362
+ - Estructura base del componente