libreria-astro-lefebvre 0.1.126 → 0.1.129
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/package.json +1 -1
- package/src/carbins/Contenido_2026_Yakarta.ts +1 -2
- package/src/carbins/Video_2025_Polop.ts +1 -13
- package/src/components/Astro/Contenido_2026_Yakarta.astro +1 -1
- package/src/components/Astro/Video_2025_Polop.astro +1 -1
- package/src/components/Astro/Video_2025_Valencia.astro +9 -4
package/package.json
CHANGED
|
@@ -21,8 +21,7 @@ export const metadata: ComponentMetadata = {
|
|
|
21
21
|
{ name: 'name', type: 'text', help: 'Texto del botón tipo pestaña (aparece en la barra superior). Se muestra también en móvil como icono con texto oculto salvo al hacer hover/active', label: 'Nombre o tag de la pestaña', example_value: 'Redacción' },
|
|
22
22
|
{ name: 'title', type: 'text', help: 'Título del vídeo (h3) que aparece sobre la descripción dentro del panel', label: 'Título del vídeo', example_value: 'Redacción automática de contratos' },
|
|
23
23
|
{ name: 'description', type: 'textArea', help: 'Descripción del vídeo que aparece debajo del título. Admite HTML', label: 'Descripción', example_value: 'Genera borradores de contratos en segundos a partir de plantillas personalizables' },
|
|
24
|
-
{ name: 'iframeSrc', type: 'text', help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como src de una etiqueta <video><source src="..." type="video/mp4">. Ejemplos válidos: .mp4, .webm alojados en CDN
|
|
25
|
-
{ name: 'limboVideo', type: 'image', help: 'Vídeo MP4 seleccionado desde el gestor Limbo. Solo se usa si "URL del archivo de vídeo (MP4)" está vacío', label: 'Vídeo desde Limbo', example_value: '' },
|
|
24
|
+
{ name: 'iframeSrc', type: 'text', help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como src de una etiqueta <video><source src="..." type="video/mp4">. Ejemplos válidos: .mp4, .webm alojados en CDN', label: 'URL del archivo de vídeo (MP4)', example_value: 'https://assets.lefebvre.es/media/videos/genial/redaccion-demo.mp4' },
|
|
26
25
|
{ name: 'thumbnailUrl', type: 'text', help: 'URL de la miniatura del vídeo usada en el structured data SEO (VideoObject)', label: 'URL de la miniatura (SEO)', example_value: 'https://assets.lefebvre.es/media/img/preview-comp/comp-16-9.png' },
|
|
27
26
|
{ name: 'imageSrc', type: 'text', help: 'URL alternativa de miniatura (fallback de "URL de la miniatura" en el structured data SEO). Si "URL de la miniatura" tiene valor, este campo se ignora', label: 'URL alternativa de miniatura (fallback SEO)', example_value: '' },
|
|
28
27
|
{ name: 'duration', type: 'text', help: 'Duración del vídeo en formato ISO 8601 (p. ej. "PT2M30S" para 2 min 30 s). Se usa en el structured data SEO. Si se deja vacío, se omite del schema (no se inventa valor)', label: 'Duración del vídeo (ISO 8601)', example_value: 'PT2M30S' },
|
|
@@ -28,22 +28,10 @@ export const metadata: ComponentMetadata = {
|
|
|
28
28
|
{
|
|
29
29
|
name: 'iframeSrc',
|
|
30
30
|
type: 'video',
|
|
31
|
-
help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como <source src="..." type="video/mp4"> con autoplay, loop y muted.
|
|
31
|
+
help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como <source src="..." type="video/mp4"> con autoplay, loop y muted. Se puede pegar la URL a mano o elegir el vídeo desde Limbo con el botón "Cambiar vídeo"',
|
|
32
32
|
label: 'URL del archivo de vídeo (MP4)',
|
|
33
33
|
mandatory: false,
|
|
34
|
-
exclusive_group: 'video',
|
|
35
|
-
exclusive_group_label: 'Vídeo',
|
|
36
34
|
example_value: 'https://lefebvre.es/genia-l/videos/genial/video-trazabilidad.mp4'
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'limboVideo',
|
|
40
|
-
type: 'image',
|
|
41
|
-
help: 'Vídeo MP4 seleccionado desde el gestor Limbo. Solo se usa si "URL del archivo de vídeo (MP4)" está vacío',
|
|
42
|
-
label: 'Vídeo desde Limbo',
|
|
43
|
-
mandatory: false,
|
|
44
|
-
exclusive_group: 'video',
|
|
45
|
-
exclusive_group_label: 'Vídeo',
|
|
46
|
-
example_value: ''
|
|
47
35
|
}
|
|
48
36
|
]
|
|
49
37
|
};
|
|
@@ -23,7 +23,7 @@ const { pageId = PAGE_ENTITY_ID, itemListId = '' } = Astro.props;
|
|
|
23
23
|
|
|
24
24
|
const idAccordion = 'js-acordeon-' + Math.random().toString(36).substring(2, 15);
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// limboVideo ya no está en el carbin: solo se lee como respaldo para contenido guardado con la 0.1.126/0.1.127
|
|
27
27
|
const getVideoUrl = (item: VideoItem) => item.iframeSrc || extractImageUrl(item.limboVideo || '', { prefer: 'original' });
|
|
28
28
|
|
|
29
29
|
const escapeJson =(s = "") => String(s).replace(/<[^>]*>/g, '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/[\n\r\t]+/g, ' ');
|
|
@@ -8,7 +8,7 @@ const {
|
|
|
8
8
|
limboVideo=''
|
|
9
9
|
} = Astro.props;
|
|
10
10
|
|
|
11
|
-
//
|
|
11
|
+
// limboVideo ya no está en el carbin: solo se lee como respaldo para contenido guardado con la 0.1.126/0.1.127
|
|
12
12
|
const videoUrl = iframeSrc || extractImageUrl(limboVideo, { prefer: 'original' });
|
|
13
13
|
|
|
14
14
|
---
|
|
@@ -8,6 +8,7 @@ interface VideoItem {
|
|
|
8
8
|
thumbnailUrl?: string;
|
|
9
9
|
imageSrc?: string;
|
|
10
10
|
iframeSrc?: string;
|
|
11
|
+
limboVideo?: string;
|
|
11
12
|
duration?: string;
|
|
12
13
|
uploadDate?: string;
|
|
13
14
|
}
|
|
@@ -22,7 +23,10 @@ const { pageId = PAGE_ENTITY_ID, itemListId = '' } = Astro.props;
|
|
|
22
23
|
|
|
23
24
|
const idAccordion = 'js-acordeon-' + Math.random().toString(36).substring(2, 15);
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
// limboVideo ya no está en el carbin: solo se lee como respaldo para contenido guardado con la 0.1.126/0.1.127
|
|
27
|
+
const getVideoUrl = (item: VideoItem) => item.iframeSrc || extractImageUrl(item.limboVideo || '', { prefer: 'original' });
|
|
28
|
+
|
|
29
|
+
const escapeJson =(s = "") => String(s).replace(/<[^>]*>/g, '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/[\n\r\t]+/g, ' ');
|
|
26
30
|
|
|
27
31
|
const structuredData = items.length > 0 ? `<script type="application/ld+json">
|
|
28
32
|
{
|
|
@@ -38,9 +42,9 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
|
|
|
38
42
|
"@type": "VideoObject",
|
|
39
43
|
"name": "${escapeJson(item.title)}"${item.description ? `,
|
|
40
44
|
"description": "${escapeJson(item.description)}"` : ''}${item.thumbnailUrl || item.imageSrc ? `,
|
|
41
|
-
"thumbnailUrl": "${escapeJson(extractImageUrl(item.thumbnailUrl || item.imageSrc || ''))}"` : ''}${item
|
|
42
|
-
"contentUrl": "${escapeJson(item
|
|
43
|
-
"embedUrl": "${escapeJson(item
|
|
45
|
+
"thumbnailUrl": "${escapeJson(extractImageUrl(item.thumbnailUrl || item.imageSrc || ''))}"` : ''}${getVideoUrl(item) ? `,
|
|
46
|
+
"contentUrl": "${escapeJson(getVideoUrl(item))}",
|
|
47
|
+
"embedUrl": "${escapeJson(getVideoUrl(item))}"` : ''}${item.duration ? `,
|
|
44
48
|
"duration": "${escapeJson(item.duration)}"` : ''}${item.uploadDate ? `,
|
|
45
49
|
"uploadDate": "${escapeJson(item.uploadDate)}"` : ''}
|
|
46
50
|
}
|
|
@@ -58,6 +62,7 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
|
|
|
58
62
|
title={item.title}
|
|
59
63
|
description={item.description}
|
|
60
64
|
iframeSrc={item.iframeSrc}
|
|
65
|
+
limboVideo={item.limboVideo}
|
|
61
66
|
/>
|
|
62
67
|
))}
|
|
63
68
|
</div>
|