lf-pagebuilder-vue 0.0.1
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/README.md +164 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +572 -0
- package/dist/index.js +2123 -0
- package/dist/styles.css +1 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# @lefebvre/lf-pagebuilder-vue
|
|
2
|
+
|
|
3
|
+
Un componente Vue 3 de Page Builder con drag-and-drop para proyectos Lefebvre. Permite crear páginas de forma visual con un sistema de filas, columnas y componentes arrastrables.
|
|
4
|
+
|
|
5
|
+
## 🚀 Características
|
|
6
|
+
|
|
7
|
+
- **Drag & Drop**: Sistema intuitivo para arrastrar y organizar componentes
|
|
8
|
+
- **Modo Visual/Configuración**: Alterna entre vista previa y modo de edición
|
|
9
|
+
- **Secciones**: Header, Body, Footer y Sidebar configurables
|
|
10
|
+
- **Configuración de filas y columnas**: Padding, gap, anchos personalizables
|
|
11
|
+
- **Feed de contenido**: Conecta componentes con fuentes de datos externas
|
|
12
|
+
- **Preview en tiempo real**: Visualiza los cambios al instante
|
|
13
|
+
- **Exportar/Importar**: Guarda y carga configuraciones JSON
|
|
14
|
+
- **SEO Validator**: Valida la estructura SEO de la página
|
|
15
|
+
|
|
16
|
+
## 📦 Instalación
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @lefebvre/lf-pagebuilder-vue
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 📋 Peer Dependencies
|
|
23
|
+
|
|
24
|
+
Este paquete requiere las siguientes dependencias:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install vue@^3.3.0 vuedraggable@^4.1.0 @vueup/vue-quill@^1.2.0 libreria-astro-lefebvre@latest
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 🔧 Uso
|
|
31
|
+
|
|
32
|
+
### En un proyecto Vue 3
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<template>
|
|
36
|
+
<Pagebuilder :renderApiDomain="apiUrl" />
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<script setup>
|
|
40
|
+
import { Pagebuilder } from '@lefebvre/lf-pagebuilder-vue';
|
|
41
|
+
import '@lefebvre/lf-pagebuilder-vue/styles';
|
|
42
|
+
|
|
43
|
+
const apiUrl = 'https://tu-api-render.com';
|
|
44
|
+
</script>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### En un proyecto Astro con Vue
|
|
48
|
+
|
|
49
|
+
```astro
|
|
50
|
+
---
|
|
51
|
+
import Layout from '../layouts/Layout.astro';
|
|
52
|
+
import { Pagebuilder } from '@lefebvre/lf-pagebuilder-vue';
|
|
53
|
+
import '@lefebvre/lf-pagebuilder-vue/styles';
|
|
54
|
+
|
|
55
|
+
const renderApiUrl = import.meta.env.ASTRO_RENDER_API;
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
<Layout>
|
|
59
|
+
<div class="bg-slate-100 py-20">
|
|
60
|
+
<Pagebuilder client:only="vue" renderApiDomain={renderApiUrl} />
|
|
61
|
+
</div>
|
|
62
|
+
</Layout>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 🧩 Componentes exportados
|
|
66
|
+
|
|
67
|
+
| Componente | Descripción |
|
|
68
|
+
|------------|-------------|
|
|
69
|
+
| `Pagebuilder` | Componente principal del page builder |
|
|
70
|
+
| `BodySection` | Sección del body con filas y columnas |
|
|
71
|
+
| `ColConfig` | Configuración de columnas |
|
|
72
|
+
| `ComponentsBox` | Caja de componentes disponibles |
|
|
73
|
+
| `FeedComponent` | Configuración de feeds de contenido |
|
|
74
|
+
| `FieldsForm` | Formulario de campos de componente |
|
|
75
|
+
| `GlobalConfig` | Barra de configuración global |
|
|
76
|
+
| `InitialComponent` | Componente individual renderizado |
|
|
77
|
+
| `RowConfig` | Configuración de filas |
|
|
78
|
+
| `SourceFilter` | Filtros de fuentes de datos |
|
|
79
|
+
|
|
80
|
+
## 📐 Props del Pagebuilder
|
|
81
|
+
|
|
82
|
+
| Prop | Tipo | Descripción |
|
|
83
|
+
|------|------|-------------|
|
|
84
|
+
| `renderApiDomain` | `string` | URL del API de renderizado para previews |
|
|
85
|
+
|
|
86
|
+
## 🎨 Estilos
|
|
87
|
+
|
|
88
|
+
Los estilos se pueden importar por separado:
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
import '@lefebvre/lf-pagebuilder-vue/styles';
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
El componente usa Tailwind CSS para los estilos. Asegúrate de tener Tailwind configurado en tu proyecto.
|
|
95
|
+
|
|
96
|
+
## 📤 Exportación de configuración
|
|
97
|
+
|
|
98
|
+
La configuración de la página se puede exportar en formato JSON:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
interface PageBuilderConfig {
|
|
102
|
+
pageConfig: PageSection[];
|
|
103
|
+
paramsConfig: PageParameters;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface PageSection {
|
|
107
|
+
section: string;
|
|
108
|
+
config: { width?: string };
|
|
109
|
+
rows: PageRow[];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface PageRow {
|
|
113
|
+
config: { padding?: string; gap?: string; width?: string };
|
|
114
|
+
columns: PageColumn[];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
interface PageColumn {
|
|
118
|
+
config: { width?: string; gap?: string; flexDirection?: string };
|
|
119
|
+
components: PageComponent[];
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 🔌 API de Renderizado
|
|
124
|
+
|
|
125
|
+
El Pagebuilder requiere una API externa para:
|
|
126
|
+
|
|
127
|
+
1. **Preview de componentes**: `POST /api/preview-comp/`
|
|
128
|
+
2. **Renderizado de página**: `POST /api/render-html/`
|
|
129
|
+
|
|
130
|
+
## 📝 Tipos TypeScript
|
|
131
|
+
|
|
132
|
+
El paquete incluye tipos TypeScript completos:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import type {
|
|
136
|
+
PageSection,
|
|
137
|
+
PageRow,
|
|
138
|
+
PageColumn,
|
|
139
|
+
PageComponent,
|
|
140
|
+
ComponentField,
|
|
141
|
+
PageParameters,
|
|
142
|
+
PageBuilderConfig
|
|
143
|
+
} from '@lefebvre/lf-pagebuilder-vue';
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 🛠️ Desarrollo
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Clonar el repositorio
|
|
150
|
+
git clone https://github.com/Lefebvre-El-Derecho-SA/lf-pagebuilder-vue
|
|
151
|
+
|
|
152
|
+
# Instalar dependencias
|
|
153
|
+
npm install
|
|
154
|
+
|
|
155
|
+
# Desarrollo con watch
|
|
156
|
+
npm run dev
|
|
157
|
+
|
|
158
|
+
# Build
|
|
159
|
+
npm run build
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 📄 Licencia
|
|
163
|
+
|
|
164
|
+
MIT © Lefebvre-El-Derecho-SA
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),Z=require("libreria-astro-lefebvre"),K=require("@vueup/vue-quill"),O=require("vuedraggable");var A=typeof document<"u"?document.currentScript:null;const _=e.defineComponent({props:{isComponentMode:Boolean,fullwidthMode:Boolean,toggleComponentModeFunction:Function,toggleFullwidthMode:Function,importConfigurationFunction:Function,globalPageConfiguration:Array,sectionSelected:String,availableSections:Array,parametersPageConfiguration:Object,renderApiDomain:String},emits:["update:sectionSelected","update:parametersPageConfiguration.global.sidebarEnabled","update:parametersPageConfiguration.global.headSlot","update:parametersPageConfiguration.global.bodyBeginSlot","update:parametersPageConfiguration.global.footerSlot","update:parametersPageConfiguration.seo.robots","update:parametersPageConfiguration.seo.title","update:parametersPageConfiguration.seo.description"],setup(t){const o=t.renderApiDomain||"http://localhost:8003",u=e.ref(""),b=e.ref(!1),g=e.computed({get(){var m,w;const l=(m=t.globalPageConfiguration)==null?void 0:m.find(B=>B.section===t.sectionSelected);return((w=l==null?void 0:l.config)==null?void 0:w.width)||""},set(l){var w;const m=(w=t.globalPageConfiguration)==null?void 0:w.find(B=>B.section===t.sectionSelected);m&&(m.config||(m.config={}),m.config.width=l)}});return{validateSeo:()=>{const l={pageConfig:t.globalPageConfiguration,paramsConfig:t.parametersPageConfiguration},m=JSON.stringify(l,null,2);fetch(o+"/api/render-html/",{method:"POST",headers:{"Content-Type":"application/json"},body:m}).then(w=>w.text()).then(w=>{const B=window.open("","Preview","width='100vw',height='100vh'");if(!B)return;const a=new DOMParser().parseFromString(w,"text/html"),d=[];function p(N,M=0){if(!N||N.nodeType!==1)return;const P=N.tagName.toLowerCase();["h1","h2","h3","h4","h5","h6","a","p","article","section","header","footer"].includes(P)&&d.push({tag:P,text:(N.textContent||"").trim().slice(0,80),depth:M}),Array.from(N.children).forEach(I=>p(I,M+1))}p(a.body);let y='<h2>Estructura SEO</h2><ul style="font-family:monospace">';d.forEach(N=>{y+=`<li style="margin-left:${N.depth*20}px"><b>${N.tag}</b>: ${N.text}</li>`}),y+="</ul>",B.document.body.innerHTML=y,B.document.close()})},importConfig:u,showAdvancedConfig:b,previewFunction:()=>{const l={pageConfig:t.globalPageConfiguration,paramsConfig:t.parametersPageConfiguration},m=JSON.stringify(l,null,2);fetch(o+"/api/render-html/",{method:"POST",headers:{"Content-Type":"application/json"},body:m}).then(w=>w.text()).then(w=>{const B=window.open("","Preview","width='100vw',height='100vh'");B&&(B.document.body.innerHTML=w,B.document.querySelectorAll("script").forEach(a=>{var p;const d=B.document.createElement("script");a.src?d.src=a.src:d.textContent=a.textContent,(p=a.parentNode)==null||p.replaceChild(d,a)}),B.document.close())})},importFunction:()=>{t.importConfigurationFunction&&t.importConfigurationFunction(u.value),u.value=""},exportFunction:()=>{const l={pageConfig:t.globalPageConfiguration,paramsConfig:t.parametersPageConfiguration},m=JSON.stringify(l),w=window.open("","Preview","width='100vw',height='100vh'");w&&(w.document.body.innerText=m,w.document.close())},setToLocalStorage:()=>{const l={pageConfig:t.globalPageConfiguration,paramsConfig:t.parametersPageConfiguration},m=JSON.stringify(l);localStorage.setItem("pageBuilderConfig",m)},loadFromLocalStorage:()=>{const l=localStorage.getItem("pageBuilderConfig");if(l&&t.importConfigurationFunction){const m=JSON.parse(l);t.importConfigurationFunction(m)}},toggleExpandScreen:()=>{const l=document.querySelector(".lf-page-builder");l&&l.classList.toggle("expanded-page-builder")},sectionWidth:g}}}),ee=(t,o)=>{const u=t.__vccOpts||t;for(const[b,g]of o)u[b]=g;return u},te={class:"flex justify-end items-center w-full p-3 gap-3"},oe={class:"flex justify-between gap-3 px-5 py-3 bg-white mx-3 rounded-xl border border-slate-200 mb-6 sticky top-2 z-9999 shadow-lg backdrop-blur-sm"},le={class:"flex gap-2"},ne={class:"flex gap-2"},re=["value"],ae=["value"],se={value:"full"},de={value:"1/2"},ie={value:"1/3"},ce={value:"2/3"},ue={value:"1/4"},me={value:"3/4"},ge={value:"1/5"},be={value:"2/5"},fe={value:"3/5"},pe={value:"4/5"},ve={key:0},xe={key:1},he={class:"flex items-center gap-2"},we={key:0,class:"bg-white border border-slate-200 rounded-2xl p-5 mx-3 mb-6 shadow-lg"},Ce={class:"flex flex-row gap-4 w-full"},Ee={class:"border border-slate-200 rounded-xl p-5 w-full bg-gradient-to-br from-slate-50 to-white"},ye={class:"flex flex-col gap-3 border-b border-slate-200 pb-4 w-full"},ke={class:"mb-3"},Ne={class:"flex items-center gap-3 cursor-pointer group"},Ve={class:"mb-3"},$e={class:"mb-3"},Be={class:"mb-3"},Se={class:"border border-slate-200 rounded-xl p-5 w-full bg-gradient-to-br from-slate-50 to-white"},Fe={class:"flex justify-between items-center mb-4"},De={class:"flex flex-col gap-3 border-b border-slate-200 pb-4 w-full"},Me={class:"mb-3"},je={class:"mb-3"},Te={class:"mb-3"};function Pe(t,o,u,b,g,i){return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",te,[o[28]||(o[28]=e.createElementVNode("span",{class:"bg-rose-50 px-3 py-1 rounded-full border border-rose-200 text-rose-400 text-xs font-medium me-4"},"Todo lo de esta barra desaparecerá →",-1)),e.createElementVNode("form",{onSubmit:o[2]||(o[2]=e.withModifiers(()=>{},["prevent"])),class:"flex gap-2"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":o[0]||(o[0]=s=>t.importConfig=s),type:"text",class:"bg-white border border-slate-200 rounded-lg px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400",name:"",id:"",placeholder:"Pegar configuración..."},null,512),[[e.vModelText,t.importConfig]]),e.createElementVNode("button",{onClick:o[1]||(o[1]=s=>t.importFunction()),class:"cursor-pointer bg-white hover:bg-slate-700 hover:text-white border border-slate-200 hover:border-slate-700 rounded-lg px-3 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"🏯 Importar")],32),e.createElementVNode("button",{onClick:o[3]||(o[3]=s=>t.exportFunction()),class:"cursor-pointer bg-white hover:bg-slate-700 hover:text-white border border-slate-200 hover:border-slate-700 rounded-lg px-3 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"🚀 Exportar")]),e.createElementVNode("div",oe,[e.createElementVNode("div",le,[e.createElementVNode("button",{class:e.normalizeClass([[t.isComponentMode?"bg-gradient-to-r from-slate-600 to-slate-700 border-slate-700 text-white shadow-md":"bg-white hover:bg-slate-100"],"cursor-pointer border border-slate-200 rounded-lg py-1.5 px-3 text-sm font-medium transition-all duration-200"]),onClick:o[4]||(o[4]=s=>{var c;return(c=t.toggleComponentModeFunction)==null?void 0:c.call(t)})},"{{ isComponentMode ? '⚒️ Modo Configuración' : '👁️ Modo Visual' }}",2),e.createElementVNode("button",{class:e.normalizeClass([[t.fullwidthMode?"bg-white hover:bg-slate-100":"bg-gradient-to-r from-slate-600 to-slate-700 border-slate-700 text-white shadow-md"],"cursor-pointer border border-slate-200 rounded-lg py-1.5 px-3 text-sm font-medium transition-all duration-200"]),onClick:o[5]||(o[5]=s=>{var c;return(c=t.toggleFullwidthMode)==null?void 0:c.call(t)})},"{{ fullwidthMode ? '⚒️ Comps. Plegados' : '👁️ Comps. Desplegados' }}",2)]),e.createElementVNode("div",ne,[e.createElementVNode("select",{value:t.sectionSelected,onChange:o[6]||(o[6]=s=>t.$emit("update:sectionSelected",s.target.value)),class:"bg-white border border-slate-200 rounded-lg px-3 py-1.5 cursor-pointer text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 transition-colors"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.availableSections,(s,c)=>(e.openBlock(),e.createElementBlock("option",{key:c,value:s},e.toDisplayString(s),9,ae))),128))],40,re),e.withDirectives(e.createElementVNode("select",{class:"bg-white border border-slate-200 rounded-lg px-3 py-1.5 cursor-pointer text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 transition-colors","onUpdate:modelValue":o[7]||(o[7]=s=>t.sectionWidth=s)},[o[29]||(o[29]=e.createElementVNode("option",{disabled:"",value:""},"Selecciona el ancho de la sección",-1)),e.createElementVNode("option",se,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa todo el ancho de la página",1),e.createElementVNode("option",de,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 1/2 del ancho de la página",1),e.createElementVNode("option",ie,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 1/3 del ancho de la página",1),e.createElementVNode("option",ce,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 2/3 del ancho de la página",1),e.createElementVNode("option",ue,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 1/4 del ancho de la página",1),e.createElementVNode("option",me,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 3/4 del ancho de la página",1),e.createElementVNode("option",ge,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 1/5 del ancho de la página",1),e.createElementVNode("option",be,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 2/5 del ancho de la página",1),e.createElementVNode("option",fe,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 3/5 del ancho de la página",1),e.createElementVNode("option",pe,"Sección "+e.toDisplayString(t.sectionSelected)+" ocupa 4/5 del ancho de la página",1)],512),[[e.vModelSelect,t.sectionWidth]]),e.createElementVNode("button",{class:e.normalizeClass(["cursor-pointer border rounded-lg py-1.5 px-3 text-sm font-medium transition-all duration-200 flex items-center gap-2",t.showAdvancedConfig?"bg-gradient-to-r from-amber-500 to-orange-500 border-amber-500 text-white shadow-md":"bg-white border-slate-200 hover:bg-slate-100"]),onClick:o[8]||(o[8]=s=>t.showAdvancedConfig=!t.showAdvancedConfig)},[o[30]||(o[30]=e.createElementVNode("span",null,"⚙️ Página",-1)),t.showAdvancedConfig?(e.openBlock(),e.createElementBlock("span",ve,"▲")):(e.openBlock(),e.createElementBlock("span",xe,"▼"))],2)]),e.createElementVNode("div",he,[e.createElementVNode("button",{onClick:o[9]||(o[9]=s=>t.previewFunction()),class:"cursor-pointer bg-white hover:bg-violet-500 hover:text-white hover:border-violet-500 border border-slate-200 rounded-lg px-3 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"🔎 Preview"),e.createElementVNode("button",{onClick:o[10]||(o[10]=s=>t.setToLocalStorage()),title:"No es un guardado real, simplemente almacena la configuración en el navegador para recuperarla luego",class:"cursor-pointer bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white border border-emerald-500 rounded-lg px-3 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"💾 Guardar"),e.createElementVNode("button",{onClick:o[11]||(o[11]=s=>t.loadFromLocalStorage()),class:"cursor-pointer bg-white hover:bg-blue-500 hover:text-white hover:border-blue-500 border border-slate-200 rounded-lg px-3 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"⤵️ Cargar"),e.createElementVNode("button",{onClick:o[12]||(o[12]=s=>t.toggleExpandScreen()),title:"Expandir / Contraer Pagebuilder",class:"cursor-pointer bg-white hover:bg-slate-700 hover:text-white hover:border-slate-700 border border-slate-200 rounded-lg px-3 py-1.5 text-xl transition-all duration-200 shadow-sm hover:shadow-md ms-2"},"◳")])]),t.showAdvancedConfig&&t.parametersPageConfiguration?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("div",Ce,[e.createElementVNode("div",Ee,[o[35]||(o[35]=e.createElementVNode("h2",{class:"text-lg font-bold mb-4 text-slate-700"},"Configuración Avanzada",-1)),o[36]||(o[36]=e.createElementVNode("h3",{class:"font-semibold mb-3 text-slate-600"},"Configuración Global",-1)),e.createElementVNode("div",ye,[e.createElementVNode("div",ke,[e.createElementVNode("label",Ne,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":o[13]||(o[13]=s=>t.parametersPageConfiguration.global.sidebarEnabled=s),onChange:o[14]||(o[14]=s=>t.$emit("update:parametersPageConfiguration.global.sidebarEnabled",s.target.value)),class:"w-5 h-5 rounded border-slate-300 text-emerald-500 focus:ring-emerald-500 cursor-pointer"},null,544),[[e.vModelCheckbox,t.parametersPageConfiguration.global.sidebarEnabled]]),o[31]||(o[31]=e.createElementVNode("span",{class:"text-slate-600 group-hover:text-slate-800 transition-colors"},"Sidebar Habilitado",-1))])]),e.createElementVNode("div",Ve,[o[32]||(o[32]=e.createElementVNode("label",{for:"headSlot",class:"block text-sm font-medium text-slate-600 mb-2"}," Código al final de la sección <head> ",-1)),e.withDirectives(e.createElementVNode("textarea",{id:"headSlot","onUpdate:modelValue":o[15]||(o[15]=s=>t.parametersPageConfiguration.global.headSlot=s),onInput:o[16]||(o[16]=s=>t.$emit("update:parametersPageConfiguration.global.headSlot",s.target.value)),class:"w-full px-4 py-3 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm font-mono transition-colors",placeholder:"Contenido para el head",rows:"3"},null,544),[[e.vModelText,t.parametersPageConfiguration.global.headSlot]])]),e.createElementVNode("div",$e,[o[33]||(o[33]=e.createElementVNode("label",{for:"bodyBeginSlot",class:"block text-sm font-medium text-slate-600 mb-2"}," Código al principio de la sección <body> ",-1)),e.withDirectives(e.createElementVNode("textarea",{id:"bodyBeginSlot","onUpdate:modelValue":o[17]||(o[17]=s=>t.parametersPageConfiguration.global.bodyBeginSlot=s),onInput:o[18]||(o[18]=s=>t.$emit("update:parametersPageConfiguration.global.bodyBeginSlot",s.target.value)),class:"w-full px-4 py-3 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm font-mono transition-colors",placeholder:"Contenido para el inicio del body",rows:"3"},null,544),[[e.vModelText,t.parametersPageConfiguration.global.bodyBeginSlot]])]),e.createElementVNode("div",Be,[o[34]||(o[34]=e.createElementVNode("label",{for:"footerSlot",class:"block text-sm font-medium text-slate-600 mb-2"}," Código al final de la sección <body>, dentro de la etiqueta <footer> ",-1)),e.withDirectives(e.createElementVNode("textarea",{id:"footerSlot","onUpdate:modelValue":o[19]||(o[19]=s=>t.parametersPageConfiguration.global.footerSlot=s),onInput:o[20]||(o[20]=s=>t.$emit("update:parametersPageConfiguration.global.footerSlot",s.target.value)),class:"w-full px-4 py-3 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm font-mono transition-colors",placeholder:"Contenido para el footer",rows:"3"},null,544),[[e.vModelText,t.parametersPageConfiguration.global.footerSlot]])])])]),e.createElementVNode("div",Se,[e.createElementVNode("div",Fe,[o[37]||(o[37]=e.createElementVNode("h2",{class:"text-lg font-bold text-slate-700"},"Configuración SEO",-1)),e.createElementVNode("button",{onClick:o[21]||(o[21]=s=>t.validateSeo()),class:"cursor-pointer bg-gradient-to-r from-violet-500 to-purple-500 hover:from-violet-600 hover:to-purple-600 text-white border border-violet-500 rounded-lg px-4 py-1.5 text-sm font-medium transition-all duration-200 shadow-sm hover:shadow-md"},"🦄 Validar SEO")]),e.createElementVNode("div",De,[e.createElementVNode("div",Me,[o[39]||(o[39]=e.createElementVNode("label",{for:"robotsIndex",class:"block text-sm font-medium text-slate-600 mb-2"}," Indexación de robots ",-1)),e.withDirectives(e.createElementVNode("select",{id:"robotsIndex","onUpdate:modelValue":o[22]||(o[22]=s=>t.parametersPageConfiguration.seo.robots=s),onChange:o[23]||(o[23]=s=>t.$emit("update:parametersPageConfiguration.seo.robots",s.target.value)),class:"w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm transition-colors cursor-pointer"},[...o[38]||(o[38]=[e.createElementVNode("option",{value:"index, follow"},"Index Follow",-1),e.createElementVNode("option",{value:"noindex, nofollow"},"Noindex Nofollow",-1)])],544),[[e.vModelSelect,t.parametersPageConfiguration.seo.robots]])]),e.createElementVNode("div",je,[o[40]||(o[40]=e.createElementVNode("label",{for:"pageTitle",class:"block text-sm font-medium text-slate-600 mb-2"}," Título de la página ",-1)),e.withDirectives(e.createElementVNode("input",{id:"pageTitle",type:"text","onUpdate:modelValue":o[24]||(o[24]=s=>t.parametersPageConfiguration.seo.title=s),onInput:o[25]||(o[25]=s=>t.$emit("update:parametersPageConfiguration.seo.title",s.target.value)),class:"w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm transition-colors",placeholder:"Ingresa el título de la página"},null,544),[[e.vModelText,t.parametersPageConfiguration.seo.title]])]),e.createElementVNode("div",Te,[o[41]||(o[41]=e.createElementVNode("label",{for:"pageDescription",class:"block text-sm font-medium text-slate-600 mb-2"}," Descripción de la página ",-1)),e.withDirectives(e.createElementVNode("textarea",{id:"pageDescription","onUpdate:modelValue":o[26]||(o[26]=s=>t.parametersPageConfiguration.seo.description=s),onInput:o[27]||(o[27]=s=>t.$emit("update:parametersPageConfiguration.seo.description",s.target.value)),class:"w-full px-4 py-3 border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white text-sm transition-colors",placeholder:"Ingresa la descripción de la página",rows:"3"},null,544),[[e.vModelText,t.parametersPageConfiguration.seo.description]])])])])])])):e.createCommentVNode("",!0)],64)}const U=ee(_,[["render",Pe]]),Ie={key:0,class:"absolute top-0 left-0 bg-white/90 w-full h-full z-100"},Ae={class:"w-full flex justify-end p-4"},Le=["for"],ze={key:0,class:"text-red-500"},Re=["id","name","placeholder","required","value","onInput"],Oe=["id","name","data-mandatoryCrops","placeholder","required","value","onInput"],Ue=["id","name","required","value","onInput"],qe=["value"],Ge=["id","name","required","checked","onChange"],L=e.defineComponent({__name:"FieldsForm",props:{object:{type:Object,required:!0},toggleShowForm:{type:Function,required:!0},showForm:{type:Boolean,default:!1}},setup(t){const o=t,u=(b,g)=>{const i=(o.object.fields||[]).find(s=>s.name===b);i&&(i.example_value=g)};return(b,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.showForm?(e.openBlock(),e.createElementBlock("div",Ie)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(t.showForm?"relative top-0 w-full text-slate-600 border-1 my-2 px-4 pt-2 pb-3 w-full border-slate-200 bg-slate-50 inline-block rounded-lg flex flex-col z-101":"hidden")},[e.createElementVNode("div",Ae,[e.createElementVNode("span",{onClick:g[0]||(g[0]=(...i)=>t.toggleShowForm&&t.toggleShowForm(...i)),class:"cursor-pointer hover:scale-125 transition-all duration-300"},"❌")]),e.createElementVNode("form",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.object.fields,(i,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"mb-4"},[e.createElementVNode("label",{for:`${t.object.id}-${i.name}-${s}`,class:"block text-sm font-medium mb-1"},[e.createTextVNode(e.toDisplayString(i.label)+" ",1),i.mandatory?(e.openBlock(),e.createElementBlock("span",ze,"*")):e.createCommentVNode("",!0)],8,Le),i.type==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,id:`${t.object.id}-${i.name}-${s}`,name:`${t.object.id}-${i.name}-${s}`,type:"text",class:"w-full px-3 py-2 border border-slate-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:i.label,required:i.mandatory,value:i.example_value,onInput:c=>u(i.name,c.target.value)},null,40,Re)):e.createCommentVNode("",!0),i.type==="image"?(e.openBlock(),e.createElementBlock("input",{key:1,id:`${t.object.id}-${i.name}-${s}`,name:`${t.object.id}-${i.name}-${s}`,"data-mandatoryCrops":i.image_cuts?JSON.stringify(i.image_cuts):null,type:"text",class:"js-limbo w-full px-3 py-2 border border-slate-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-400",placeholder:i.label,required:i.mandatory,value:i.example_value,onInput:c=>u(i.name,c.target.value)},null,40,Oe)):i.type==="textArea"?(e.openBlock(),e.createBlock(e.unref(K.QuillEditor),{key:2,theme:"snow",id:`${t.object.id}-${i.name}-${s}`,name:`${t.object.id}-${i.name}-${s}`,rows:"3",class:"w-full px-3 py-2 border border-slate-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-400 z-9999",placeholder:i.label,required:i.mandatory,"onUpdate:content":c=>{u(i.name,c)},content:i.example_value,modelValue:i.example_value,"onUpdate:modelValue":c=>i.example_value=c,contentType:"html"},null,8,["id","name","placeholder","required","onUpdate:content","content","modelValue","onUpdate:modelValue"])):i.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:3,id:`${t.object.id}-${i.name}-${s}`,name:`${t.object.id}-${i.name}-${s}`,class:"w-full px-3 py-2 border border-slate-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-400",required:i.mandatory,value:i.example_value,onInput:c=>u(i.name,c.target.value)},[g[1]||(g[1]=e.createElementVNode("option",{disabled:"",value:""},"Seleccione una opción",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.options||[],(c,f)=>(e.openBlock(),e.createElementBlock("option",{key:f,value:c},e.toDisplayString(c),9,qe))),128))],40,Ue)):i.type==="boolean"?(e.openBlock(),e.createElementBlock("input",{key:4,id:`${t.object.id}-${i.name}-${s}`,name:`${t.object.id}-${i.name}-${s}`,type:"checkbox",class:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-slate-300 rounded inline-block",required:i.mandatory,checked:i.example_value,onChange:c=>u(i.name,c.target.checked)},null,40,Ge)):e.createCommentVNode("",!0)]))),128))])],2)],64))}}),Je={class:"space-y-4"},He=["disabled"],We=["value"],Qe={class:"space-y-3"},Xe={key:0,class:"overflow-y-auto space-y-3"},Ye={class:"block text-sm font-semibold text-slate-600 mb-2"},Ze=["onChange","disabled"],Ke=["value"],_e=["onChange","disabled"],et=["onInput","disabled","placeholder"],tt=["disabled"],ot={key:0,class:"animate-spin"},lt={key:1},q=e.defineComponent({__name:"SourceFilter",props:{onSubmit:{type:Function,required:!0},updateFeedCriteria:{type:Function,required:!0}},setup(t){const o=t,u=e.ref(!1),b=e.ref(null),g=e.ref({}),i=e.computed(()=>{const n=typeof{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:A&&A.tagName.toUpperCase()==="SCRIPT"&&A.src||new URL("index.cjs",document.baseURI).href}<"u"&&!0;return[{id:"origen1",name:"El Derecho",apiUrl:n?"https://elderecho.com/feed":"https://led-dev-elderecho-dev.eu.els.local/feed",filters:[{id:"title",label:"Título del Post",type:"text"},{id:"category",label:"Slug de la Categoría",type:"text"},{id:"tax",label:"Slug de la Etiqueta",type:"text"},{id:"limit",label:"Número de Posts",type:"text"},{id:"last",label:"Últimas X horas",type:"text"},{id:"type",label:"Tipo de Post",type:"select",options:["noticias","tribunas","foros","caraacara"]},{id:"fecha",label:"Fecha dd/mm/yyyy",type:"text"}]},{id:"origen2",name:"Formación",apiUrl:n?"https://lefebvre.es/formacion/feed":"http://led-dev-lefebvre-dev.eu.els.local/formacion/feed",filters:[{id:"id",label:"ID del curso",type:"text"},{id:"title",label:"Título del Post",type:"text"},{id:"featured",label:"Destacado",type:"select",options:["1","0"]},{id:"page",label:"Página a mostrar",type:"text"},{id:"limit",label:"Número de cursos",type:"text"}]},{id:"origen3",name:"Derecholocal",apiUrl:n?"https://derecholocal.es/feed":"https://led-dev-derecholocal-dev.eu.els.local/feed",filters:[]},{id:"origen4",name:"EspacioAsesoría",apiUrl:n?"https://espacioasesoria.com/feed":"https://led-dev-espacioasesoria-dev.eu.els.local/feed",filters:[]},{id:"origen5",name:"EspacioPymes",apiUrl:n?"https://espaciopymes.com/feed":"https://led-dev-espaciopymes-dev.eu.els.local/feed",filters:[]}]}),s=e.computed(()=>{if(!b.value)return[];const n=i.value.find(r=>r.id===b.value);return n?n.filters:[]}),c=(n,r)=>{g.value[n]=r},f=()=>{g.value={}},E=async()=>{u.value=!0;const n=i.value.find(l=>l.id===b.value);if(!n){console.error("Origen no encontrado"),u.value=!1;return}const r=new URL(n.apiUrl);Object.keys(g.value).forEach(l=>{g.value[l]&&r.searchParams.append(l,g.value[l])});try{const m=await(await fetch(r.toString(),{method:"GET",headers:{Accept:"text/xml, application/xml"}})).text(),B=new DOMParser().parseFromString(m,"text/xml"),V=Array.from(B.querySelectorAll("item")).map(a=>{const d={};return Array.from(a.children).forEach(p=>{p.children.length>0?Array.from(p.children).forEach(y=>{const N=`${p.nodeName}_${y.nodeName}`;d[N]=y.textContent||""}):d[p.nodeName]=p.textContent||""}),d});o.onSubmit(V)}catch(l){console.error("Error al aplicar filtros:",l),o.onSubmit([])}finally{const l={name:n.name,url:r.toString()};o.updateFeedCriteria(l),u.value=!1}};return(n,r)=>(e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("div",null,[r[1]||(r[1]=e.createElementVNode("label",{class:"block text-sm font-semibold text-slate-600 mb-2"},"Seleccionar origen:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":r[0]||(r[0]=l=>b.value=l),class:"w-full px-3 py-2.5 bg-white border border-slate-200 rounded-lg shadow-sm focus:border-emerald-400 focus:ring-2 focus:ring-emerald-500/20 transition-all duration-200 disabled:bg-slate-100 disabled:cursor-not-allowed cursor-pointer",onChange:f,disabled:u.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,l=>(e.openBlock(),e.createElementBlock("option",{key:l.id,value:l.id},e.toDisplayString(l.name),9,We))),128))],40,He),[[e.vModelSelect,b.value]])]),e.createElementVNode("div",Qe,[s.value.length>0?(e.openBlock(),e.createElementBlock("div",Xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:"bg-gradient-to-br from-slate-50 to-white p-4 rounded-xl border border-slate-200"},[e.createElementVNode("label",Ye,e.toDisplayString(l.label)+":",1),l.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"w-full px-3 py-2.5 bg-white border border-slate-200 rounded-lg shadow-sm focus:border-emerald-400 focus:ring-2 focus:ring-emerald-500/20 transition-all duration-200 disabled:bg-slate-100 disabled:cursor-not-allowed cursor-pointer",onChange:m=>c(l.id,m.target.value),disabled:u.value},[r[2]||(r[2]=e.createElementVNode("option",{value:""},"Seleccionar...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.options,m=>(e.openBlock(),e.createElementBlock("option",{key:m,value:m},e.toDisplayString(m),9,Ke))),128))],40,Ze)):l.type==="date"?(e.openBlock(),e.createElementBlock("input",{key:1,type:"date",class:"w-full px-3 py-2.5 bg-white border border-slate-200 rounded-lg shadow-sm focus:border-emerald-400 focus:ring-2 focus:ring-emerald-500/20 transition-all duration-200 disabled:bg-slate-100 disabled:cursor-not-allowed",onChange:m=>c(l.id,m.target.value),disabled:u.value},null,40,_e)):l.type==="text"?(e.openBlock(),e.createElementBlock("input",{key:2,type:"text",class:"w-full px-3 py-2.5 bg-white border border-slate-200 rounded-lg shadow-sm focus:border-emerald-400 focus:ring-2 focus:ring-emerald-500/20 transition-all duration-200 disabled:bg-slate-100 disabled:cursor-not-allowed",onInput:m=>c(l.id,m.target.value),disabled:u.value,placeholder:l.label},null,40,et)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("button",{onClick:E,class:"cursor-pointer w-full bg-gradient-to-r from-emerald-500 to-teal-500 text-white font-semibold px-4 py-3 rounded-xl shadow-md hover:from-emerald-600 hover:to-teal-600 hover:shadow-lg transform hover:-translate-y-0.5 transition-all duration-200 disabled:from-slate-300 disabled:to-slate-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none flex items-center justify-center gap-2",disabled:u.value},[u.value?(e.openBlock(),e.createElementBlock("span",ot,"⏳")):(e.openBlock(),e.createElementBlock("span",lt,"🔍")),e.createTextVNode(" "+e.toDisplayString(u.value?"Conectando con el feed...":"Aplicar Filtros"),1)],8,tt)])]))}}),nt={class:"fixed top-0 left-0 w-full h-full bg-gradient-to-br from-slate-50 via-white to-slate-100 flex flex-col z-9999 p-6"},rt={class:"w-full flex justify-between items-center mb-4"},at={class:"w-full flex-1 bg-white/60 rounded-2xl flex gap-5 p-5 overflow-hidden backdrop-blur-sm border border-slate-200 shadow-inner"},st={class:"flex-1 flex flex-col gap-5"},dt={class:"flex flex-col bg-white rounded-2xl shadow-lg border border-slate-200 p-5 overflow-y-auto"},it={key:0,class:"mb-4 p-4 bg-gradient-to-br from-emerald-50 to-teal-50 rounded-xl border border-emerald-200 w-full flex-shrink-0 text-sm font-medium text-emerald-700"},ct={class:"list-none mt-3 space-y-2 text-slate-600"},ut={class:"flex items-start gap-2"},mt={class:"font-semibold text-slate-700"},gt={class:"flex items-start gap-2"},bt={class:"font-semibold text-slate-700"},ft={class:"font-semibold text-slate-700"},pt={class:"flex items-start gap-2"},vt={class:"flex flex-wrap gap-2 mt-1"},xt={class:"font-semibold text-slate-700"},ht={class:"text-emerald-600"},wt={class:"flex flex-col gap-4 w-full"},Ct={class:"flex items-center gap-3 cursor-pointer group"},Et={key:0,class:"flex flex-col gap-4 ml-8 p-4 bg-gradient-to-br from-slate-50 to-white rounded-xl border border-slate-200"},yt={class:"flex flex-col gap-2"},kt={class:"flex flex-col gap-2"},Nt={class:"flex-1 flex flex-col bg-white rounded-2xl shadow-lg border border-slate-200 p-5 overflow-y-auto"},Vt={class:"flex-1 flex flex-col bg-white rounded-2xl shadow-lg border border-slate-200 p-5 overflow-y-auto"},$t={key:0,class:"flex-1 flex flex-col items-center justify-center text-slate-400"},Bt={key:1,class:"space-y-3"},St=["onClick"],Ft={class:"font-bold text-slate-800 mb-2"},Dt={class:"text-sm text-slate-600 line-clamp-2"},Mt={class:"flex-1 flex flex-col bg-white rounded-2xl shadow-lg border border-slate-200 p-5 overflow-y-auto"},jt={key:0,class:"flex-1 flex flex-col items-center justify-center text-slate-400"},Tt={key:1,class:"space-y-3"},Pt={class:"block text-sm font-bold text-slate-700 mb-2 flex items-center gap-2"},It=["onUpdate:modelValue"],At=["value"],Lt={key:0,class:"mt-3 p-3 bg-gradient-to-br from-emerald-50 to-teal-50 rounded-lg border border-emerald-200"},zt={class:"mt-1 text-sm font-medium text-slate-700 break-words"},G=e.defineComponent({__name:"FeedComponent",props:{object:{type:Object,required:!0},toggleFeedSection:{type:Function,required:!0},updateObjectByFeedContent:{type:Function,required:!0}},setup(t){const o=t,u=e.ref(null),b=e.ref(null),g=e.ref(!1),i=e.ref(1),s=e.ref("horizontal"),c=e.ref({}),f=e.ref(null),E=V=>{u.value=V},n=V=>{b.value=V},r=()=>{const V=o.object.fields.filter(a=>a.mappedTo).map(a=>{var d;return{fieldName:a.name,mappedTo:a.mappedTo,value:((d=b.value)==null?void 0:d[a.mappedTo])??null}});f.value={...c.value,dynamicUpdate:g.value,elementCount:i.value,orientation:s.value,mapping:V.map(({fieldName:a,mappedTo:d})=>({fieldName:a,mappedTo:d}))},o.updateObjectByFeedContent&&o.updateObjectByFeedContent(V,f.value),o.toggleFeedSection()},l=V=>{c.value=V},m=()=>{var V;(V=o.object)!=null&&V.repeat_data&&(f.value=o.object.repeat_data,g.value=o.object.repeat_data.dynamicUpdate||!1,i.value=o.object.repeat_data.elementCount||1,s.value=o.object.repeat_data.orientation||"horizontal",c.value={name:o.object.repeat_data.name,url:o.object.repeat_data.url})},w=()=>{f.value=null,g.value=!1,i.value=1,s.value="horizontal",c.value={},o.updateObjectByFeedContent&&o.updateObjectByFeedContent([],null)},B=()=>{var V;f.value&&(f.value={...f.value,dynamicUpdate:g.value,elementCount:i.value,orientation:s.value},o.updateObjectByFeedContent&&o.updateObjectByFeedContent(((V=f.value.mapping)==null?void 0:V.map(a=>({fieldName:a.fieldName,mappedTo:a.mappedTo,value:null})))||[],f.value))};return e.onMounted(()=>{m()}),(V,a)=>(e.openBlock(),e.createElementBlock("div",nt,[e.createElementVNode("div",rt,[a[5]||(a[5]=e.createElementVNode("h2",{class:"text-2xl font-bold bg-gradient-to-r from-slate-700 to-slate-500 bg-clip-text text-transparent flex items-center gap-3"},[e.createElementVNode("span",{class:"text-3xl"},"🍺"),e.createTextVNode(" Configuración de Feed ")],-1)),e.createElementVNode("button",{onClick:a[0]||(a[0]=(...d)=>t.toggleFeedSection&&t.toggleFeedSection(...d)),class:"cursor-pointer group w-10 h-10 flex items-center justify-center bg-white hover:bg-red-50 border border-red-200 hover:border-red-400 text-red-400 hover:text-red-600 rounded-full font-semibold shadow-sm hover:shadow-lg transition-all duration-200"},[...a[4]||(a[4]=[e.createElementVNode("span",{class:"text-lg"},"✕",-1)])])]),e.createElementVNode("div",at,[e.createElementVNode("div",st,[e.createElementVNode("div",dt,[f.value&&f.value.dynamicUpdate?(e.openBlock(),e.createElementBlock("div",it,[e.createElementVNode("div",{class:"flex justify-between items-start"},[a[8]||(a[8]=e.createElementVNode("p",{class:"flex items-center gap-2"},[e.createElementVNode("span",{class:"text-emerald-500"},"✓"),e.createTextVNode(" Hay un criterio de feed establecido: ")],-1)),e.createElementVNode("div",{class:"flex items-center gap-2"},[e.createElementVNode("button",{onClick:B,class:"cursor-pointer px-3 py-1.5 bg-white hover:bg-emerald-50 text-emerald-500 hover:text-emerald-600 border border-emerald-200 hover:border-emerald-300 rounded-lg text-xs font-semibold transition-all duration-200 flex items-center gap-1 shadow-sm"},[...a[6]||(a[6]=[e.createElementVNode("span",null,"💾",-1),e.createTextVNode(" Guardar ",-1)])]),e.createElementVNode("button",{onClick:w,class:"cursor-pointer px-3 py-1.5 bg-white hover:bg-red-50 text-red-500 hover:text-red-600 border border-red-200 hover:border-red-300 rounded-lg text-xs font-semibold transition-all duration-200 flex items-center gap-1 shadow-sm"},[...a[7]||(a[7]=[e.createElementVNode("span",null,"✕",-1),e.createTextVNode(" Borrar ",-1)])])])]),e.createElementVNode("ul",ct,[e.createElementVNode("li",ut,[a[9]||(a[9]=e.createElementVNode("span",{class:"text-emerald-400"},"→",-1)),a[10]||(a[10]=e.createTextVNode(" Conectar con ",-1)),e.createElementVNode("span",mt,e.toDisplayString(f.value.name),1)]),e.createElementVNode("li",gt,[a[11]||(a[11]=e.createElementVNode("span",{class:"text-emerald-400"},"→",-1)),a[12]||(a[12]=e.createTextVNode(" Recuperar ",-1)),e.createElementVNode("span",bt,e.toDisplayString(f.value.elementCount),1),a[13]||(a[13]=e.createTextVNode(" items (",-1)),e.createElementVNode("span",ft,e.toDisplayString(f.value.orientation),1),a[14]||(a[14]=e.createTextVNode(")",-1))]),e.createElementVNode("li",pt,[a[17]||(a[17]=e.createElementVNode("span",{class:"text-emerald-400"},"→",-1)),e.createElementVNode("div",null,[a[16]||(a[16]=e.createTextVNode(" Mapeo: ",-1)),e.createElementVNode("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value.mapping,(d,p)=>(e.openBlock(),e.createElementBlock("span",{key:p,class:"inline-flex items-center gap-1 px-2 py-0.5 bg-white rounded-full text-xs border border-slate-200"},[e.createElementVNode("span",xt,e.toDisplayString(d.fieldName),1),a[15]||(a[15]=e.createElementVNode("span",{class:"text-slate-400"},"←",-1)),e.createElementVNode("span",ht,e.toDisplayString(d.mappedTo),1)]))),128))])])])])])):e.createCommentVNode("",!0),e.createElementVNode("div",wt,[e.createElementVNode("label",Ct,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":a[1]||(a[1]=d=>g.value=d),class:"w-5 h-5 text-emerald-500 border-2 border-slate-300 rounded focus:ring-emerald-500 cursor-pointer"},null,512),[[e.vModelCheckbox,g.value]]),a[18]||(a[18]=e.createElementVNode("span",{class:"font-medium text-slate-700 group-hover:text-slate-900 transition-colors"},"Actualizar dinámicamente según criterios del feed",-1))]),g.value?(e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("div",yt,[a[19]||(a[19]=e.createElementVNode("label",{class:"text-sm font-semibold text-slate-600"},"Cantidad de elementos:",-1)),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":a[2]||(a[2]=d=>i.value=d),min:"1",class:"w-32 px-3 py-2 border border-slate-200 rounded-lg focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 transition-colors"},null,512),[[e.vModelText,i.value,void 0,{number:!0}]])]),e.createElementVNode("div",kt,[a[21]||(a[21]=e.createElementVNode("label",{class:"text-sm font-semibold text-slate-600"},"Orientación:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":a[3]||(a[3]=d=>s.value=d),class:"w-48 px-3 py-2 border border-slate-200 rounded-lg focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white transition-colors cursor-pointer"},[...a[20]||(a[20]=[e.createElementVNode("option",{value:"horizontal",selected:""},"Horizontal",-1),e.createElementVNode("option",{value:"vertical"},"Vertical",-1)])],512),[[e.vModelSelect,s.value]])])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Nt,[a[22]||(a[22]=e.createElementVNode("h3",{class:"text-lg font-bold mb-5 text-slate-700 pb-2 flex items-center gap-2 border-b border-slate-100"},[e.createElementVNode("span",{class:"text-xl"},"🔍"),e.createTextVNode(" Orígenes y Filtros ")],-1)),e.createVNode(q,{onSubmit:E,updateFeedCriteria:l})])]),e.createElementVNode("div",Vt,[a[24]||(a[24]=e.createElementVNode("h3",{class:"text-lg font-bold mb-5 text-slate-700 pb-2 flex items-center gap-2 border-b border-slate-100"},[e.createElementVNode("span",{class:"text-xl"},"📰"),e.createTextVNode(" Noticias ")],-1)),!u.value||u.value.length===0?(e.openBlock(),e.createElementBlock("div",$t,[...a[23]||(a[23]=[e.createElementVNode("span",{class:"text-5xl mb-3 opacity-50"},"📭",-1),e.createElementVNode("p",{class:"text-sm font-medium"},"No hay noticias disponibles",-1),e.createElementVNode("p",{class:"text-xs mt-1 text-slate-300"},"Selecciona un origen para cargar noticias",-1)])])):(e.openBlock(),e.createElementBlock("ul",Bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(d,p)=>(e.openBlock(),e.createElementBlock("li",{key:p,class:"p-4 bg-gradient-to-br from-slate-50 to-white rounded-xl shadow-sm hover:shadow-md cursor-pointer hover:scale-[1.01] transition-all duration-200 border border-slate-200 hover:border-emerald-300",onClick:y=>n(d)},[e.createElementVNode("h4",Ft,e.toDisplayString(d.title||d.titulo||"Sin título"),1),e.createElementVNode("p",Dt,e.toDisplayString(d.description||d.descripcion||d.content||"Sin descripción"),1)],8,St))),128))]))]),e.createElementVNode("div",Mt,[a[30]||(a[30]=e.createElementVNode("h3",{class:"text-lg font-bold mb-5 text-slate-700 pb-2 flex items-center gap-2 border-b border-slate-100"},[e.createElementVNode("span",{class:"text-xl"},"🔗"),e.createTextVNode(" Relacionar Noticia ")],-1)),b.value?(e.openBlock(),e.createElementBlock("div",Tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.object.fields,(d,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"p-4 bg-gradient-to-br from-slate-50 to-white rounded-xl border border-slate-200"},[e.createElementVNode("label",Pt,[a[26]||(a[26]=e.createElementVNode("span",{class:"text-base"},"⚙️",-1)),e.createTextVNode(" "+e.toDisplayString(d.name),1)]),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y=>d.mappedTo=y,class:"w-full px-3 py-2.5 border border-slate-200 rounded-lg focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 transition-all bg-white cursor-pointer"},[a[27]||(a[27]=e.createElementVNode("option",{value:""},"-- Seleccionar campo --",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,(y,N)=>(e.openBlock(),e.createElementBlock("option",{key:N,value:N},e.toDisplayString(N),9,At))),128))],8,It),[[e.vModelSelect,d.mappedTo]]),d.mappedTo?(e.openBlock(),e.createElementBlock("div",Lt,[a[28]||(a[28]=e.createElementVNode("span",{class:"text-xs font-semibold text-emerald-600 uppercase tracking-wide"},"Vista previa:",-1)),e.createElementVNode("p",zt,e.toDisplayString(b.value[d.mappedTo]),1)])):e.createCommentVNode("",!0)]))),128)),e.createElementVNode("button",{onClick:r,class:"cursor-pointer w-full mt-4 px-5 py-3 bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white font-semibold rounded-xl shadow-md hover:shadow-lg transition-all duration-200 transform hover:scale-[1.01] flex items-center justify-center gap-2"},[...a[29]||(a[29]=[e.createElementVNode("span",{class:"text-lg"},"✓",-1),e.createElementVNode("span",null,"Alimentar el componente",-1)])])])):(e.openBlock(),e.createElementBlock("div",jt,[...a[25]||(a[25]=[e.createElementVNode("span",{class:"text-5xl mb-3 opacity-50"},"👆",-1),e.createElementVNode("p",{class:"text-sm font-medium text-center"},[e.createTextVNode("Selecciona una noticia"),e.createElementVNode("br"),e.createTextVNode("para relacionar")],-1)])]))])])]))}}),Rt={class:"absolute -top-2.5 left-3 text-[11px] font-medium tracking-wide bg-gradient-to-r from-slate-700 to-slate-600 text-white px-3 py-0.5 rounded-full shadow-sm"},Ot={class:"w-full text-right flex justify-between items-center mt-1"},Ut={class:"flex gap-3 items-center"},qt={class:"bg-rose-50 border border-rose-200 text-rose-500 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wider rounded-md"},Gt={key:0,class:"flex-1 flex justify-center"},Jt={class:"flex justify-end items-center gap-3"},Ht={class:"bg-violet-50 border border-violet-200 text-violet-600 rounded-md px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wider"},Wt={key:0,class:"flex gap-1 bg-slate-50 rounded-lg p-1"},Qt={key:0,class:"text-[10px] bg-amber-100 text-amber-700 px-1.5 rounded-full font-medium"},Xt={class:"mt-2 flex items-center"},Yt={class:"font-medium text-slate-700"},Zt={key:0},Kt={key:1},_t={key:0,class:"mt-3 p-3 bg-gradient-to-r from-sky-50 to-blue-50 rounded-lg text-sm text-slate-600 border border-sky-100"},eo={class:"mt-3 flex gap-1.5 flex-wrap"},to={class:"absolute top-0 left-0 w-full h-full opacity-0 group-hover:opacity-100 bg-gradient-to-br from-white/90 via-slate-50/95 to-slate-100/90 backdrop-blur-[2px] z-99 transition-all duration-300 rounded-xl"},oo={class:"flex justify-center h-full items-center p-4 gap-3"},lo={key:0,title:"Mover componente",class:"handle cursor-grab flex items-center bg-white border border-slate-200 px-4 py-2 rounded-xl hover:bg-slate-700 hover:border-slate-700 hover:text-white shadow-sm hover:shadow-md transition-all duration-200 group/btn"},no={key:1,class:"flex-1 flex justify-center items-center"},ro={class:"flex flex-col items-center"},ao={key:0,class:"text-[10px] mt-0.5 opacity-70"},so=["id"],R=e.defineComponent({__name:"InitialComponent",props:{object:{type:Object,required:!0},columnToInsert:Object,isComponentMode:Boolean,fullwidthMode:Boolean,addComponentToColumn:Function,removeComponent:Function,section:String,renderApiDomain:String,insideComponentBox:{type:Boolean,default:!1}},setup(t){const o=t,u=Math.random().toString(36).substring(2,15),b=e.ref(!1),g=e.ref(!1),i=e.ref(null),s=e.ref(null),c=e.ref(!1),f=e.ref(!1);e.watch(()=>o.isComponentMode,a=>{a||E()}),e.watch(()=>o.object,()=>{E()},{deep:!0}),e.watch(c,async a=>{a&&(await e.nextTick(),V())});const E=()=>{i.value&&clearTimeout(i.value),i.value=setTimeout(()=>{V()},500)},n=()=>{if(o.isComponentMode)return;const a=new IntersectionObserver(d=>{d.forEach(p=>{p.isIntersecting&&!c.value&&(c.value=!0,a.disconnect())})},{threshold:.1});s.value&&a.observe(s.value)},r=(a,d)=>{const p=(o.object.fields||[]).find(y=>y.name===a);p&&(p.example_value=d)},l=(a,d)=>{a.forEach(p=>{p.value!==void 0&&r(p.fieldName,p.value)}),o.object.repeat_data=d},m=()=>{g.value=!g.value},w=()=>{f.value=!f.value},B=()=>{V(!0).then(a=>{const d=window.open("","Preview","width=1200,height=800");if(!d){alert("El navegador bloqueó la ventana emergente. Por favor, permite los popups para este sitio.");return}d.document.body.innerHTML=a,d.document.querySelectorAll("script").forEach(y=>{var M;const N=d.document.createElement("script");y.src?N.src=y.src:N.textContent=y.textContent,(M=y.parentNode)==null||M.replaceChild(N,y)}),d.document.close()})},V=(a=!1)=>{var y;if(!((y=o.object)!=null&&y.category)||o.object.category==="Repetidor"){const N='<div style="color:white; padding: 1em 2em;background-color:#001978;border-radius:1em;border:4px solid #711978;">Componente que contiene elementos repetidos: TODO: GENERAR PREVIEW DE REPETIDORES</div>';if(a)return Promise.resolve(N);const M=document.getElementById(u);return M&&(M.innerHTML=N),Promise.resolve("")}const d=o.renderApiDomain?o.renderApiDomain+"/api/preview-comp/":"http://localhost:8003/api/preview-comp/",p=JSON.stringify({obj:o.object},null,2);return fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:p}).then(N=>N.text()).then(N=>{if(a)return N;const M=document.getElementById(u);return M&&(M.innerHTML=N),""})};return e.onMounted(()=>{n()}),(a,d)=>(e.openBlock(),e.createElementBlock("div",null,[f.value?(e.openBlock(),e.createBlock(G,{key:0,updateObjectByFeedContent:l,toggleFeedSection:w,object:t.object},null,8,["object"])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"rootElement",ref:s,class:e.normalizeClass(["min-h-[100px] relative group hover:shadow-lg hover:shadow-slate-200/50 duration-300 ease-out js-draggable-element text-slate-600 border border-slate-200 hover:border-slate-300 px-5 pt-3 pb-4 w-full bg-white inline-block rounded-xl flex flex-col mb-3 z-0 shadow-sm",{"overflow-hidden":!t.isComponentMode}])},[t.isComponentMode?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("span",Rt,e.toDisplayString(t.object.component_name),1),e.createElementVNode("div",Ot,[e.createElementVNode("div",Ut,[d[8]||(d[8]=e.createElementVNode("div",{class:"handle cursor-grab text-slate-400 hover:text-slate-600 text-lg transition-colors"},[e.createElementVNode("svg",{class:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},[e.createElementVNode("path",{d:"M7 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 2zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 14zm6-8a2 2 0 1 0-.001-4.001A2 2 0 0 0 13 6zm0 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 14z"})])],-1)),e.createElementVNode("span",qt,e.toDisplayString(t.object.category),1)]),t.fullwidthMode?(e.openBlock(),e.createElementBlock("div",Gt,[e.createElementVNode("div",{class:"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white rounded-lg px-4 py-1.5 text-xs font-medium cursor-pointer shadow-sm hover:shadow transition-all duration-200",onClick:d[0]||(d[0]=p=>{var y;return(y=t.addComponentToColumn)==null?void 0:y.call(t,t.object)})},"Seleccionar")])):e.createCommentVNode("",!0),e.createElementVNode("div",Jt,[e.createElementVNode("span",Ht,e.toDisplayString(t.object.framework),1),t.insideComponentBox?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Wt,[e.createElementVNode("div",{title:"Previsualizar Dummy",onClick:d[1]||(d[1]=p=>B()),class:"p-1.5 rounded-md hover:bg-white hover:shadow-sm cursor-pointer transition-all duration-200 text-base"},"🔍"),e.createElementVNode("div",{title:"Editar configuración",onClick:d[2]||(d[2]=p=>g.value=!g.value),class:"p-1.5 rounded-md hover:bg-white hover:shadow-sm cursor-pointer transition-all duration-200 text-base"},"⚙️"),e.createElementVNode("div",{title:"Beber de contenido",onClick:w,class:"p-1.5 rounded-md hover:bg-white hover:shadow-sm cursor-pointer transition-all duration-200 text-base flex items-center gap-1"},[d[9]||(d[9]=e.createTextVNode("⚡ ",-1)),t.object.repeat_data?(e.openBlock(),e.createElementBlock("span",Qt,e.toDisplayString(t.object.repeat_data.elementCount),1)):e.createCommentVNode("",!0)]),t.removeComponent?(e.openBlock(),e.createElementBlock("div",{key:0,title:"Eliminar componente",onClick:d[3]||(d[3]=p=>t.removeComponent(t.object,t.section||"")),class:"p-1.5 rounded-md hover:bg-red-50 hover:shadow-sm cursor-pointer transition-all duration-200 text-base"},"🗑️")):e.createCommentVNode("",!0)]))])]),e.createVNode(L,{toggleShowForm:m,object:t.object,showForm:g.value},null,8,["object","showForm"]),e.createElementVNode("div",Xt,[e.createElementVNode("span",Yt,e.toDisplayString(t.object.name),1),e.createElementVNode("button",{onClick:d[4]||(d[4]=p=>b.value=!b.value),class:"ms-2 cursor-pointer text-xs text-slate-400 hover:text-slate-600 transition-colors w-5 h-5 rounded-full hover:bg-slate-100 flex items-center justify-center"},[b.value?(e.openBlock(),e.createElementBlock("span",Kt,"▲")):(e.openBlock(),e.createElementBlock("span",Zt,"▼"))])]),b.value?(e.openBlock(),e.createElementBlock("div",_t,e.toDisplayString(t.object.description),1)):e.createCommentVNode("",!0),e.createElementVNode("div",eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.object.tags,(p,y)=>(e.openBlock(),e.createElementBlock("span",{key:y,class:"bg-slate-50 text-slate-500 px-2.5 py-1 rounded-full text-[11px] font-medium border border-slate-100 hover:border-slate-200 hover:bg-slate-100 transition-colors cursor-default"},e.toDisplayString(p),1))),128))])],64)):c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",to,[e.createElementVNode("div",oo,[t.insideComponentBox&&!t.fullwidthMode||!t.insideComponentBox?(e.openBlock(),e.createElementBlock("div",lo,[...d[10]||(d[10]=[e.createElementVNode("div",{class:"flex flex-col items-center"},[e.createElementVNode("svg",{class:"w-6 h-6 mb-1 text-slate-400 group-hover/btn:text-white",fill:"currentColor",viewBox:"0 0 20 20"},[e.createElementVNode("path",{d:"M7 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 2zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 14zm6-8a2 2 0 1 0-.001-4.001A2 2 0 0 0 13 6zm0 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 14z"})]),e.createElementVNode("span",{class:"text-xs font-medium"},"Mover")],-1)])])):e.createCommentVNode("",!0),t.insideComponentBox&&t.fullwidthMode?(e.openBlock(),e.createElementBlock("div",no,[e.createElementVNode("div",{title:"Agregar componente a la columna",onClick:d[5]||(d[5]=p=>{var y;return(y=t.addComponentToColumn)==null?void 0:y.call(t,t.object)}),class:"cursor-pointer flex items-center bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white px-6 py-3 rounded-xl shadow-md hover:shadow-lg transition-all duration-200"},[...d[11]||(d[11]=[e.createElementVNode("div",{class:"flex flex-col items-center"},[e.createElementVNode("span",{class:"text-2xl mb-1"},"🚀"),e.createElementVNode("span",{class:"text-sm font-medium"},"Seleccionar")],-1)])])])):e.createCommentVNode("",!0),t.insideComponentBox?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",{title:"Configurar componente",onClick:d[6]||(d[6]=p=>g.value=!g.value),class:"cursor-pointer flex items-center bg-white border border-slate-200 px-4 py-2 rounded-xl hover:bg-slate-700 hover:border-slate-700 hover:text-white shadow-sm hover:shadow-md transition-all duration-200 group/btn"},[...d[12]||(d[12]=[e.createElementVNode("div",{class:"flex flex-col items-center"},[e.createElementVNode("span",{class:"text-xl mb-1"},"⚙️"),e.createElementVNode("span",{class:"text-xs font-medium"},"Configurar")],-1)])]),e.createElementVNode("div",{title:"Configurar componente",onClick:w,class:"cursor-pointer flex items-center bg-white border border-slate-200 px-4 py-2 rounded-xl hover:bg-amber-500 hover:border-amber-500 hover:text-white shadow-sm hover:shadow-md transition-all duration-200 group/btn"},[e.createElementVNode("div",ro,[d[13]||(d[13]=e.createElementVNode("span",{class:"text-xl mb-1"},"⚡",-1)),d[14]||(d[14]=e.createElementVNode("span",{class:"text-xs font-medium"},"Beber de contenido",-1)),t.object.repeat_data&&t.object.repeat_data.dynamicUpdate?(e.openBlock(),e.createElementBlock("span",ao,"Carga "+e.toDisplayString(t.object.repeat_data.elementCount)+" elementos",1)):e.createCommentVNode("",!0)])]),t.removeComponent?(e.openBlock(),e.createElementBlock("div",{key:0,title:"Eliminar componente",onClick:d[7]||(d[7]=p=>t.removeComponent(t.object,t.section||"")),class:"cursor-pointer flex items-center bg-white border border-slate-200 px-4 py-2 rounded-xl hover:bg-red-500 hover:border-red-500 hover:text-white shadow-sm hover:shadow-md transition-all duration-200 group/btn"},[...d[15]||(d[15]=[e.createElementVNode("div",{class:"flex flex-col items-center"},[e.createElementVNode("span",{class:"text-xl mb-1"},"🗑️"),e.createElementVNode("span",{class:"text-xs font-medium"},"Eliminar")],-1)])])):e.createCommentVNode("",!0)],64))])]),e.createVNode(L,{toggleShowForm:m,object:t.object,showForm:g.value},null,8,["object","showForm"]),e.createElementVNode("div",{id:e.unref(u),class:"w-full h-full flex items-center justify-center"},null,8,so)],64)):e.createCommentVNode("",!0)],2)]))}}),io={class:"absolute top-1 left-2 px-2 flex gap-3 items-center"},co={key:0,class:"text-[10px] font-medium text-slate-400 bg-white/80 backdrop-blur-sm px-2 py-0.5 rounded-full shadow-sm"},uo={class:"text-slate-600"},mo={key:1,class:"text-[10px] font-medium text-slate-400 bg-white/80 backdrop-blur-sm px-2 py-0.5 rounded-full shadow-sm"},go={class:"text-slate-600"},bo={key:2,class:"text-[10px] font-medium text-slate-400 bg-white/80 backdrop-blur-sm px-2 py-0.5 rounded-full shadow-sm"},fo={class:"text-slate-600"},po={key:0,class:"my-4 w-full rounded-xl bg-white border border-slate-200 p-4 z-10 hidden group-hover:block shadow-lg"},vo={class:"p-4 bg-gradient-to-br from-slate-50 to-white rounded-lg w-full"},xo={class:"flex flex-col"},ho=["for"],wo=["id"],Co=["value"],Eo={class:"flex flex-col"},yo=["for"],ko=["id"],No=["value"],Vo={class:"flex flex-col"},$o=["for"],Bo=["id"],So=["value"],Fo={class:"absolute bottom-0 flex flex-col gap-1 w-full opacity-0 transition-all duration-300 group-hover:opacity-100"},Do={class:"flex justify-between gap-2 bg-white/90 backdrop-blur-sm rounded-t-xl px-3 py-1.5 shadow-sm border border-b-0 border-slate-200"},Mo={class:"flex gap-1"},J=e.defineComponent({__name:"ColConfig",props:{globalPageConfiguration:Array,rowIndex:{type:Number,required:!0},columnIndex:{type:Number,required:!0},fullwidthMode:Boolean,addCol:Function,updateColConfig:Function,removeCol:Function,addComponentFunction:Function,moveCol:Function,section:String},setup(t){const o=t,u={width:[{label:"Ancho completo",value:"full"},{label:"1/2",value:"1/2"},{label:"1/3",value:"1/3"},{label:"2/3",value:"2/3"},{label:"1/4",value:"1/4"},{label:"3/4",value:"3/4"},{label:"1/5",value:"1/5"},{label:"2/5",value:"2/5"},{label:"3/5",value:"3/5"},{label:"4/5",value:"4/5"}],gap:[{label:"Ninguno",value:"0"},{label:"Leve",value:"1"},{label:"Moderado",value:"2"},{label:"Alto",value:"4"},{label:"Muy alto",value:"8"}],flexDirection:[{label:"Columna (componentes unos encima de otros)",value:"flex-col"},{label:"Fila (componentes unos al lado de otros)",value:"flex-row"}]},b=e.ref(""),g=e.ref(""),i=e.ref(""),s=e.ref(!1),c=e.computed(()=>{var r,l,m,w;const E=(r=o.globalPageConfiguration)==null?void 0:r.find(B=>B.section===o.section),n=(w=(m=(l=E==null?void 0:E.rows)==null?void 0:l[o.rowIndex])==null?void 0:m.columns)==null?void 0:w[o.columnIndex];return(n==null?void 0:n.config)||{}}),f=(E,n)=>{var w;const r=b.value||u.width[0].value,l=g.value||u.gap[0].value,m=i.value||"";(w=o.updateColConfig)==null||w.call(o,E,n,o.section||"",r,l,m),s.value=!1};return(E,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",io,[c.value.width!==void 0?(e.openBlock(),e.createElementBlock("span",co,[n[12]||(n[12]=e.createTextVNode(" Ancho: ",-1)),e.createElementVNode("span",uo,e.toDisplayString(c.value.width),1)])):e.createCommentVNode("",!0),c.value.gap!==void 0?(e.openBlock(),e.createElementBlock("span",mo,[n[13]||(n[13]=e.createTextVNode(" Gap: ",-1)),e.createElementVNode("span",go,e.toDisplayString(c.value.gap),1)])):e.createCommentVNode("",!0),c.value.flexDirection!==void 0?(e.openBlock(),e.createElementBlock("span",bo,[n[14]||(n[14]=e.createTextVNode(" Flex: ",-1)),e.createElementVNode("span",fo,e.toDisplayString(c.value.flexDirection),1)])):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createElementBlock("div",po,[e.createElementVNode("div",vo,[e.createElementVNode("form",{onSubmit:n[4]||(n[4]=e.withModifiers(()=>{},["prevent"])),class:"flex gap-5 w-full justify-center items-end flex-wrap"},[e.createElementVNode("div",xo,[e.createElementVNode("label",{for:`colwidth-${t.rowIndex}-${t.columnIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Ancho:",8,ho),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[0]||(n[0]=r=>b.value=r),id:`colwidth-${t.rowIndex}-${t.columnIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white hover:border-slate-300 transition-colors"},[n[15]||(n[15]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.width,r=>(e.openBlock(),e.createElementBlock("option",{key:r.value,value:r.value},e.toDisplayString(r.label),9,Co))),128))],8,wo),[[e.vModelSelect,b.value]])]),e.createElementVNode("div",Eo,[e.createElementVNode("label",{for:`colgap-${t.rowIndex}-${t.columnIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Gap:",8,yo),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[1]||(n[1]=r=>g.value=r),id:`colgap-${t.rowIndex}-${t.columnIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white hover:border-slate-300 transition-colors"},[n[16]||(n[16]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.gap,r=>(e.openBlock(),e.createElementBlock("option",{key:r.value,value:r.value},e.toDisplayString(r.label),9,No))),128))],8,ko),[[e.vModelSelect,g.value]])]),e.createElementVNode("div",Vo,[e.createElementVNode("label",{for:`flexdir-${t.rowIndex}-${t.columnIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Dirección:",8,$o),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[2]||(n[2]=r=>i.value=r),id:`flexdir-${t.rowIndex}-${t.columnIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-white hover:border-slate-300 transition-colors"},[n[17]||(n[17]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.flexDirection,r=>(e.openBlock(),e.createElementBlock("option",{key:r.value,value:r.value},e.toDisplayString(r.label),9,So))),128))],8,Bo),[[e.vModelSelect,i.value]])]),e.createElementVNode("button",{type:"submit",class:"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white px-5 py-2 rounded-lg font-medium shadow-sm hover:shadow-md transition-all duration-200 cursor-pointer",onClick:n[3]||(n[3]=r=>{f(t.rowIndex,t.columnIndex),s.value=!1})}," Guardar ")],32)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Fo,[e.createElementVNode("div",{class:e.normalizeClass(["flex flex-row",{"justify-between":t.section&&t.section!=="Sidebar","justify-center":t.section==="Sidebar"}])},[t.section&&t.section!=="Sidebar"?(e.openBlock(),e.createElementBlock("button",{key:0,title:"Añadir columna a la izquierda",onClick:n[5]||(n[5]=r=>{var l;return(l=t.addCol)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section,"left")}),class:"ms-2 bg-white px-3 py-1 cursor-pointer rounded-t-lg border border-b-0 border-slate-200 hover:bg-emerald-500 hover:border-emerald-500 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md font-medium"},"+")):e.createCommentVNode("",!0),e.createElementVNode("div",Do,[e.createElementVNode("button",{title:"Configurar columna",onClick:n[6]||(n[6]=r=>s.value=!s.value),class:e.normalizeClass(["px-2.5 py-1 rounded-lg cursor-pointer transition-all duration-200",s.value?"bg-amber-100 text-amber-700 shadow-sm":"bg-slate-100 text-slate-600 hover:bg-amber-500 hover:text-white"])},"⚙️",2),e.createElementVNode("div",Mo,[t.section&&t.section!=="Sidebar"?(e.openBlock(),e.createElementBlock("span",{key:0,title:"Mover columna a la izquierda",onClick:n[7]||(n[7]=r=>{var l;return(l=t.moveCol)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section,"left")}),class:"bg-slate-100 px-2.5 py-1 cursor-pointer rounded-lg transition-all duration-200 text-slate-400 hover:bg-blue-500 hover:text-white"},"◁")):e.createCommentVNode("",!0),t.fullwidthMode?(e.openBlock(),e.createElementBlock("span",{key:1,title:"Añadir componente",onClick:n[8]||(n[8]=r=>{var l;return(l=t.addComponentFunction)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section||"")}),class:"bg-slate-100 px-2.5 py-1 cursor-pointer rounded-lg transition-all duration-200 text-slate-400 hover:bg-violet-500 hover:text-white"}," 📦 ")):e.createCommentVNode("",!0),t.section&&t.section!=="Sidebar"?(e.openBlock(),e.createElementBlock("span",{key:2,title:"Mover columna a la derecha",onClick:n[9]||(n[9]=r=>{var l;return(l=t.moveCol)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section,"right")}),class:"bg-slate-100 px-2.5 py-1 cursor-pointer rounded-lg transition-all duration-200 text-slate-400 hover:bg-blue-500 hover:text-white"},"▷ ")):e.createCommentVNode("",!0)]),e.createElementVNode("button",{title:"Eliminar columna",onClick:n[10]||(n[10]=r=>{var l;return(l=t.removeCol)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section||"")}),class:"bg-slate-100 px-2.5 py-1 rounded-lg cursor-pointer transition-all duration-200 text-slate-600 hover:bg-red-500 hover:text-white"},"🗑️")]),t.section&&t.section!=="Sidebar"?(e.openBlock(),e.createElementBlock("button",{key:1,title:"Añadir columna a la derecha",onClick:n[11]||(n[11]=r=>{var l;return(l=t.addCol)==null?void 0:l.call(t,t.rowIndex,t.columnIndex,t.section,"right")}),class:"me-2 bg-white px-3 py-1 cursor-pointer rounded-t-lg border border-b-0 border-slate-200 hover:bg-emerald-500 hover:border-emerald-500 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md font-medium"},"+")):e.createCommentVNode("",!0)],2)])],64))}}),jo={class:"absolute -top-1 px-2 gap-4 w-full justify-between hidden css-pb-row-config"},To={class:"flex gap-1.5"},Po={class:"flex gap-4 items-center"},Io={class:"inline-block"},Ao={key:0,class:"text-xs font-medium text-slate-400 bg-slate-50 px-2 py-1 rounded-full"},Lo={class:"text-slate-600"},zo={key:1,class:"text-xs font-medium text-slate-400 bg-slate-50 px-2 py-1 rounded-full"},Ro={class:"text-slate-600"},Oo={key:2,class:"text-xs font-medium text-slate-400 bg-slate-50 px-2 py-1 rounded-full"},Uo={class:"text-slate-600"},qo={class:"flex gap-1.5"},Go={key:0,class:"z-1"},Jo={class:"p-5 bg-white rounded-xl shadow-lg border border-slate-100 w-full mt-8"},Ho={class:"flex flex-col"},Wo=["for"],Qo=["id"],Xo=["value"],Yo={class:"flex flex-col"},Zo=["for"],Ko=["id"],_o=["value"],el={class:"flex flex-col"},tl=["for"],ol=["id"],ll=["value"],H=e.defineComponent({__name:"RowConfig",props:{rowIndex:{type:Number,required:!0},updateRowConfig:Function,removeRow:Function,addRow:Function,globalPageConfiguration:Array,section:String,moveRow:Function},setup(t){const o=t,u={padding:[{label:"Ninguno",value:"0"},{label:"Leve",value:"4"},{label:"Moderado",value:"8"},{label:"Alto",value:"12"}],gap:[{label:"Ninguno",value:"0"},{label:"Leve",value:"2"},{label:"Moderado",value:"4"},{label:"Alto",value:"8"},{label:"Muy alto",value:"12"}],width:[{label:"Ancho completo",value:"full"},{label:"1/2",value:"1/2"},{label:"1/3",value:"1/3"},{label:"2/3",value:"2/3"},{label:"1/4",value:"1/4"},{label:"3/4",value:"3/4"},{label:"1/5",value:"1/5"},{label:"2/5",value:"2/5"},{label:"3/5",value:"3/5"},{label:"4/5",value:"4/5"}]},b=e.ref(""),g=e.ref(""),i=e.ref(""),s=e.ref(!1),c=e.ref(!1),f=e.computed(()=>{var r,l;const n=(r=o.globalPageConfiguration)==null?void 0:r.find(m=>m.section===o.section);return(l=n==null?void 0:n.rows)!=null&&l[o.rowIndex]?n.rows[o.rowIndex].config||{}:{}}),E=n=>{var w;const r=b.value||u.padding[0].value,l=g.value||u.gap[0].value,m=i.value||u.width[0].value;(w=o.updateRowConfig)==null||w.call(o,n,o.section||"",r,l,m),s.value=!1};return(n,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",jo,[e.createElementVNode("div",null,[e.createElementVNode("div",To,[e.createElementVNode("button",{title:"Agregar fila",onClick:r[0]||(r[0]=l=>{var m;(m=t.addRow)==null||m.call(t,t.rowIndex,t.section||""),c.value=!1}),class:"cursor-pointer rounded-b-lg border border-t-0 border-slate-200 bg-white hover:bg-emerald-500 hover:border-emerald-500 px-3 py-1 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md font-medium"},"+"),e.createElementVNode("button",{title:"Mover fila hacia arriba",onClick:r[1]||(r[1]=l=>{var m;(m=t.moveRow)==null||m.call(t,t.rowIndex,t.section||"","up"),c.value=!1}),class:"cursor-pointer rounded-b-lg border border-t-0 border-slate-200 bg-white hover:bg-blue-500 hover:border-blue-500 px-3 py-1 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md"},"△"),e.createElementVNode("button",{title:"Mover fila hacia abajo",onClick:r[2]||(r[2]=l=>{var m;(m=t.moveRow)==null||m.call(t,t.rowIndex,t.section||"","down"),c.value=!1}),class:"cursor-pointer rounded-b-lg border border-t-0 border-slate-200 bg-white hover:bg-blue-500 hover:border-blue-500 px-3 py-1 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md"},"▽")])]),e.createElementVNode("div",Po,[e.createElementVNode("div",Io,[e.createElementVNode("button",{title:"Configurar la fila",onClick:r[3]||(r[3]=l=>s.value=!s.value),class:e.normalizeClass(["cursor-pointer rounded-b-lg border border-t-0 px-3 py-1 transition-all duration-200 shadow-sm hover:shadow-md",s.value?"bg-amber-100 border-amber-300 text-amber-700":"bg-white border-slate-200 text-slate-600 hover:bg-amber-500 hover:border-amber-500 hover:text-white"])},"⚙️",2)]),f.value.padding!==void 0?(e.openBlock(),e.createElementBlock("span",Ao,[r[10]||(r[10]=e.createTextVNode(" Padding: ",-1)),e.createElementVNode("span",Lo,e.toDisplayString(f.value.padding),1)])):e.createCommentVNode("",!0),f.value.gap!==void 0?(e.openBlock(),e.createElementBlock("span",zo,[r[11]||(r[11]=e.createTextVNode(" Gap: ",-1)),e.createElementVNode("span",Ro,e.toDisplayString(f.value.gap),1)])):e.createCommentVNode("",!0),f.value.width!==void 0?(e.openBlock(),e.createElementBlock("span",Oo,[r[12]||(r[12]=e.createTextVNode(" Ancho: ",-1)),e.createElementVNode("span",Uo,e.toDisplayString(f.value.width),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",null,[e.createElementVNode("div",qo,[e.createElementVNode("button",{title:"Eliminar fila",onClick:r[4]||(r[4]=l=>{var m;(m=t.removeRow)==null||m.call(t,t.rowIndex,t.section||""),c.value=!1}),class:"cursor-pointer rounded-b-lg border border-t-0 border-slate-200 bg-white hover:bg-red-500 hover:border-red-500 px-3 py-1 hover:text-white text-slate-600 transition-all duration-200 shadow-sm hover:shadow-md"},"🗑️")])])]),s.value?(e.openBlock(),e.createElementBlock("div",Go,[e.createElementVNode("div",Jo,[e.createElementVNode("form",{onSubmit:r[9]||(r[9]=e.withModifiers(()=>{},["prevent"])),class:"flex gap-6 w-full justify-center items-end flex-wrap"},[e.createElementVNode("div",Ho,[e.createElementVNode("label",{for:`padding-${t.rowIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Padding:",8,Wo),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":r[5]||(r[5]=l=>b.value=l),id:`padding-${t.rowIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-slate-50 hover:bg-white transition-colors"},[r[13]||(r[13]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.padding,l=>(e.openBlock(),e.createElementBlock("option",{key:l.value,value:l.value},e.toDisplayString(l.label),9,Xo))),128))],8,Qo),[[e.vModelSelect,b.value]])]),e.createElementVNode("div",Yo,[e.createElementVNode("label",{for:`gap-${t.rowIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Gap:",8,Zo),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":r[6]||(r[6]=l=>g.value=l),id:`gap-${t.rowIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-slate-50 hover:bg-white transition-colors"},[r[14]||(r[14]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.gap,l=>(e.openBlock(),e.createElementBlock("option",{key:l.value,value:l.value},e.toDisplayString(l.label),9,_o))),128))],8,Ko),[[e.vModelSelect,g.value]])]),e.createElementVNode("div",el,[e.createElementVNode("label",{for:`width-${t.rowIndex}`,class:"block text-sm font-medium text-slate-600 mb-1.5"},"Ancho:",8,tl),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":r[7]||(r[7]=l=>i.value=l),id:`width-${t.rowIndex}`,class:"block w-full border border-slate-200 rounded-lg px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 bg-slate-50 hover:bg-white transition-colors"},[r[15]||(r[15]=e.createElementVNode("option",{value:""},"Selecciona...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.width,l=>(e.openBlock(),e.createElementBlock("option",{key:l.value,value:l.value},e.toDisplayString(l.label),9,ll))),128))],8,ol),[[e.vModelSelect,i.value]])]),e.createElementVNode("button",{type:"submit",class:"bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white px-5 py-2 rounded-lg font-medium shadow-sm hover:shadow-md transition-all duration-200 cursor-pointer",onClick:r[8]||(r[8]=l=>{E(t.rowIndex),c.value=!1})}," Guardar ")],32)])])):e.createCommentVNode("",!0)],64))}}),nl=["id"],rl={class:"flex flex-row w-full gap-3 mt-6"},al=["id"],W=e.defineComponent({__name:"BodySection",props:{isComponentMode:Boolean,fullwidthMode:Boolean,globalPageConfiguration:Array,sectionSelected:String,removeComponent:Function,addComponentFunction:Function,addCol:Function,addRow:Function,removeRow:Function,removeCol:Function,moveCol:Function,moveRow:Function,updateColConfig:Function,updateRowConfig:Function,renderApiDomain:String},setup(t){const o=t,u=e.ref(!1),b=e.computed(()=>{var i;const g=(i=o.globalPageConfiguration)==null?void 0:i.find(s=>s.section===o.sectionSelected);return(g==null?void 0:g.rows)||[]});return(g,i)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,(s,c)=>(e.openBlock(),e.createElementBlock("div",{key:"row-"+c,id:"row-"+t.sectionSelected+"-"+c,class:"flex flex-col gap-3 w-full p-5 bg-white border border-slate-200 rounded-2xl js-row relative items-center hover:border-slate-300 hover:shadow-lg transition-all duration-300 css-pb-row group/row"},[e.createVNode(H,{moveRow:t.moveRow,addRow:t.addRow,removeRow:t.removeRow,globalPageConfiguration:t.globalPageConfiguration,updateRowConfig:t.updateRowConfig,rowIndex:c,section:t.sectionSelected},null,8,["moveRow","addRow","removeRow","globalPageConfiguration","updateRowConfig","rowIndex","section"]),e.createElementVNode("div",rl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.columns,(f,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["hover:shadow-md overflow-hidden dragging-zone border relative border-slate-200 shadow-sm w-full p-5 pt-10 min-h-[200px] rounded-xl flex flex-col gap-3 items-center before:content-['Columna'] before:absolute before:text-slate-300 before:text-7xl before:font-bold before:bottom-4 before:left-2 before:-rotate-12 before:opacity-30 before:duration-300 before:transition-opacity group hover:before:opacity-50 transition-all duration-300",u.value?"bg-gradient-to-b from-emerald-50 to-emerald-100 border-emerald-300 shadow-emerald-100":"bg-gradient-to-b from-slate-50 to-slate-100"]),key:"column-"+E,id:"col-"+t.sectionSelected+"-"+c+"-"+E},[e.createVNode(e.unref(O),{class:"h-full w-full mb-4",list:f.components,group:{name:"draggingGroup",pull:!0,put:!0},"item-key":"name",handle:".handle",onStart:i[0]||(i[0]=n=>u.value=!0),onEnd:i[1]||(i[1]=n=>u.value=!1)},{item:e.withCtx(({element:n})=>[e.createVNode(R,{renderApiDomain:t.renderApiDomain,object:n,"is-component-mode":t.isComponentMode,removeComponent:t.removeComponent,section:t.sectionSelected},null,8,["renderApiDomain","object","is-component-mode","removeComponent","section"])]),_:1},8,["list"]),e.createVNode(J,{section:t.sectionSelected,globalPageConfiguration:t.globalPageConfiguration,updateColConfig:t.updateColConfig,addComponentFunction:t.addComponentFunction,fullwidthMode:t.fullwidthMode,addCol:t.addCol,removeCol:t.removeCol,moveCol:t.moveCol,rowIndex:c,columnIndex:E},null,8,["section","globalPageConfiguration","updateColConfig","addComponentFunction","fullwidthMode","addCol","removeCol","moveCol","rowIndex","columnIndex"])],10,al))),128))])],8,nl))),128))}}),sl={class:"flex justify-between items-center mb-4"},dl={class:"text-xs"},il={class:"flex flex-wrap gap-2 mb-4 bg-white border border-slate-200 p-4 rounded-xl shadow-sm"},cl=["value","checked"],ul={class:"my-3"},ml={class:"relative"},gl={class:"component-library dragging-zone w-full p-5 min-h-[200px] border border-slate-200 bg-white rounded-xl flex flex-col gap-4 items-center shadow-sm"},bl={key:0,class:"text-center py-8 text-slate-400"},z=e.defineComponent({__name:"ComponentsBox",props:{isComponentMode:Boolean,fullwidthMode:Boolean,columnToInsert:Object,addComponentToColumn:Function,renderApiDomain:String,toggleComponentModeFunction:Function},setup(t){const o=["Call to Action","Contenido","Separador","Texto","Cabecera","Footer","Imagen","Repetidor","Formulario","Título","SEO"],u=e.ref(!0),b=e.ref([]),g=e.ref(""),i=e.ref(Z.listComponents()),s=e.computed(()=>{const E=g.value.toLowerCase(),n=Object.values(i.value),r=l=>(l.name.toLowerCase()+l.description.toLowerCase()+l.tags.join(" ").toLowerCase()).includes(E);return b.value.length>0?n.filter(l=>b.value.includes(l.category)&&r(l)):n.filter(r)}),c=E=>{g.value=E.target.value},f=E=>{const n=E.target,r=n.value;n.checked?b.value.includes(r)||b.value.push(r):b.value=b.value.filter(l=>l!==r)};return(E,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[n[6]||(n[6]=e.createElementVNode("h1",{class:"text-center text-2xl font-semibold mb-4 text-slate-700 tracking-tight"},"Componentes",-1)),e.createElementVNode("div",sl,[e.createElementVNode("button",{onClick:n[0]||(n[0]=r=>u.value=!u.value),class:"mb-3 px-4 py-2 bg-white rounded-lg border border-slate-200 hover:border-slate-300 hover:shadow-sm transition-all duration-200 cursor-pointer text-slate-600 font-medium flex items-center gap-2"},[n[2]||(n[2]=e.createElementVNode("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})],-1)),n[3]||(n[3]=e.createElementVNode("span",null,"Filtros",-1)),e.createElementVNode("span",dl,e.toDisplayString(u.value?"▲":"▼"),1)]),e.createElementVNode("button",{class:e.normalizeClass([[t.isComponentMode?"bg-gradient-to-r from-slate-600 to-slate-700 border-slate-700 text-white shadow-md":"bg-white hover:bg-slate-100"],"cursor-pointer border border-slate-200 rounded-lg py-1.5 px-3 text-sm font-medium transition-all duration-200"]),onClick:n[1]||(n[1]=r=>{var l;return(l=t.toggleComponentModeFunction)==null?void 0:l.call(t)})},e.toDisplayString(t.isComponentMode?"⚒️ Modo Configuración":"👁️ Modo Visual"),3)]),e.withDirectives(e.createElementVNode("div",il,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,r=>e.createElementVNode("label",{key:r,class:e.normalizeClass(["flex items-center gap-2 text-xs bg-slate-50 hover:bg-slate-100 px-3 py-2 rounded-lg cursor-pointer transition-colors duration-200 border border-transparent hover:border-slate-200",{"bg-emerald-50 border-emerald-200 text-emerald-700":b.value.includes(r)}])},[e.createElementVNode("input",{type:"checkbox",value:r,checked:b.value.includes(r),onInput:f,class:"w-4 h-4 rounded border-slate-300 text-emerald-500 focus:ring-emerald-500"},null,40,cl),e.createTextVNode(" "+e.toDisplayString(r),1)],2)),64))],512),[[e.vShow,u.value]]),e.createElementVNode("div",ul,[e.createElementVNode("div",ml,[n[4]||(n[4]=e.createElementVNode("svg",{class:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),e.createElementVNode("input",{onInput:c,type:"text",placeholder:"Buscar componente...",class:"duration-300 border border-slate-200 bg-white rounded-xl py-3 px-4 pl-11 w-full focus:outline-none focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-400 hover:border-slate-300 shadow-sm"},null,32)])]),e.createElementVNode("div",gl,[e.createVNode(e.unref(O),{class:"w-full flex flex-col gap-4",list:s.value,group:{name:"draggingGroup",pull:"clone",put:!1},itemKey:"name",clone:r=>JSON.parse(JSON.stringify(r))},{item:e.withCtx(({element:r})=>[e.createVNode(R,{renderApiDomain:t.renderApiDomain,object:r,"is-component-mode":t.isComponentMode,fullwidthMode:t.fullwidthMode,columnToInsert:t.columnToInsert,addComponentToColumn:t.addComponentToColumn,insideComponentBox:!0},null,8,["renderApiDomain","object","is-component-mode","fullwidthMode","columnToInsert","addComponentToColumn"])]),_:1},8,["list","clone"]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",bl,[...n[5]||(n[5]=[e.createElementVNode("svg",{class:"w-12 h-12 mx-auto mb-3 opacity-50",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),e.createElementVNode("p",{class:"text-sm font-medium"},"No se encontraron componentes",-1),e.createElementVNode("p",{class:"text-xs mt-1"},"Intenta con otros filtros o términos de búsqueda",-1)])])):e.createCommentVNode("",!0)])],64))}}),fl={class:"flex flex-col w-full transition-all duration-300 lf-page-builder bg-gradient-to-br from-slate-50 to-slate-100 min-h-screen"},pl={class:"relative flex flex-row flex-wrap"},vl={class:"w-full flex justify-end py-4 pe-4"},xl={class:"w-3/4"},hl={key:1,class:"w-1/4 px-3 overflow-y-auto h-screen sticky top-0"},Q=e.defineComponent({__name:"Pagebuilder",props:{renderApiDomain:{}},setup(t){const u=t.renderApiDomain,b=e.ref(!0),g=e.ref(void 0),i=e.ref([]),s=e.ref({rowIndex:null,columnIndex:null,section:null}),c=e.ref(!1),f=e.ref(!1),E=e.ref({global:{sidebarEnabled:!1,headSlot:"",bodyBeginSlot:"",footerSlot:""},seo:{title:"",description:"",robots:"index, follow"}}),n=e.reactive([{section:"Header",config:{width:"full"},rows:[{config:{},columns:[{config:{},components:[]}]}]},{section:"Body",config:{width:"full"},rows:[{config:{},columns:[{config:{},components:[]}]}]},{section:"Footer",config:{width:"full"},rows:[{config:{},columns:[{config:{},components:[]}]}]},{section:"Sidebar",config:{width:"1/3"},rows:[{config:{},columns:[{config:{},components:[]}]}]}]);e.onMounted(()=>{r()});const r=()=>{i.value=["Header","Footer","Body","Sidebar"],g.value="Body"},l=()=>{f.value=!f.value},m=()=>{b.value=!b.value},w=(v,x,h,C,k)=>{var S;const $=n.find(F=>F.section===x);(S=$==null?void 0:$.rows)!=null&&S[v]&&($.rows[v].config={padding:h,gap:C,width:k})},B=(v,x,h,C,k,$)=>{var F,D,j;const S=n.find(T=>T.section===h);(j=(D=(F=S==null?void 0:S.rows)==null?void 0:F[v])==null?void 0:D.columns)!=null&&j[x]&&(S.rows[v].columns[x].config={width:C,gap:k,flexDirection:$})},V=async(v,x)=>{const h=n.find(C=>C.section===x);if(h){const C={config:{},columns:[{config:{},components:[]}]};v!==null&&v>=0&&v<h.rows.length?h.rows.splice(v+1,0,C):h.rows.push(C)}await new Promise(C=>{setTimeout(()=>{const k=document.getElementById(`row-${x}-${(v??0)+1}`);k?(k.scrollIntoView({behavior:"smooth",block:"center"}),k.classList.add("selected-delay"),setTimeout(()=>{k.classList.remove("selected-delay"),C()},3e3)):C()},0)})},a=(v,x)=>{const h=n.find(C=>C.section===x);!(h!=null&&h.rows)||h.rows.length<=1||h.rows.splice(v,1)},d=(v,x,h="down")=>{var F;const C=n.find(D=>D.section===x);if(!((F=C==null?void 0:C.rows)!=null&&F[v])||h==="up"&&v===0||h==="down"&&v===C.rows.length-1)return;const k=C.rows,$=k.splice(v,1)[0],S=h==="down"?v+1:v-1;k.splice(S,0,$)},p=async(v,x,h,C="right")=>{var S;const k=C==="left"?x:x+1,$=n.find(F=>F.section===h);(S=$==null?void 0:$.rows)!=null&&S[v]&&$.rows[v].columns.splice(k,0,{config:{},components:[]}),await new Promise(F=>{setTimeout(()=>{const D=document.getElementById(`col-${h}-${v}-${k}`);D?(D.scrollIntoView({behavior:"smooth",block:"center"}),D.classList.add("selected-delay"),setTimeout(()=>{D.classList.remove("selected-delay"),F()},3e3)):F()},0)})},y=(v,x,h)=>{var $,S;const C=n.find(F=>F.section===h),k=(S=($=C==null?void 0:C.rows)==null?void 0:$[v])==null?void 0:S.columns;!k||k.length<=1||k.splice(x,1)},N=(v,x,h,C="right")=>{var D;const k=n.find(j=>j.section===h);if(!((D=k==null?void 0:k.rows)!=null&&D[v])||C==="left"&&x===0||C==="right"&&x===k.rows[v].columns.length-1)return;const $=k.rows[v].columns,S=$.splice(x,1)[0],F=C==="right"?x+1:x-1;$.splice(F,0,S)},M=(v,x)=>{var C;const h=n.find(k=>k.section===x);(C=h==null?void 0:h.rows)==null||C.forEach(k=>{k.columns.forEach($=>{const S=$.components.indexOf(v);S!==-1&&$.components.splice(S,1)})})},P=(v,x,h)=>{c.value=!0,s.value={rowIndex:v,columnIndex:x,section:h}},I=v=>{var k,$,S,F;const{rowIndex:x,columnIndex:h,section:C}=s.value;if(x!==null&&h!==null){const D=JSON.parse(JSON.stringify(v)),j=n.find(Y=>Y.section===C),T=(F=(S=($=(k=j==null?void 0:j.rows)==null?void 0:k[x])==null?void 0:$.columns)==null?void 0:S[h])==null?void 0:F.components;T==null||T.push(D)}c.value=!1},X=v=>{const x=typeof v=="string"?JSON.parse(v):v;n.length=0,n.push(...x.pageConfig||[]),x.paramsConfig&&(E.value={...E.value,...x.paramsConfig})};return(v,x)=>(e.openBlock(),e.createElementBlock("div",fl,[e.createVNode(U,{sectionSelected:g.value,"onUpdate:sectionSelected":x[0]||(x[0]=h=>g.value=h),parametersPageConfiguration:E.value,"onUpdate:parametersPageConfiguration":x[1]||(x[1]=h=>E.value=h),globalPageConfiguration:n,availableSections:i.value,importConfigurationFunction:X,isComponentMode:f.value,toggleComponentModeFunction:l,fullwidthMode:b.value,toggleFullwidthMode:m,renderApiDomain:e.unref(u)},null,8,["sectionSelected","parametersPageConfiguration","globalPageConfiguration","availableSections","isComponentMode","fullwidthMode","renderApiDomain"]),e.createElementVNode("div",pl,[b.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["w-full overflow-y-auto fixed top-0 left-0 h-full bg-gradient-to-br from-slate-100 via-white to-slate-50 z-9999 px-4 flex justify-start flex flex-col items-center backdrop-blur-sm",c.value?"":"hidden"])},[e.createElementVNode("div",vl,[e.createElementVNode("div",{class:"cursor-pointer w-10 h-10 flex items-center justify-center rounded-full bg-white shadow-md hover:shadow-lg hover:bg-red-50 text-slate-400 hover:text-red-500 transition-all duration-200 text-xl font-light",onClick:x[2]||(x[2]=h=>c.value=!1)},"✕")]),e.createElementVNode("div",xl,[e.createVNode(z,{renderApiDomain:e.unref(u),isComponentMode:f.value,fullwidthMode:b.value,columnToInsert:s.value,addComponentToColumn:I,toggleComponentModeFunction:l},null,8,["renderApiDomain","isComponentMode","fullwidthMode","columnToInsert"])])],2)):(e.openBlock(),e.createElementBlock("div",hl,[e.createVNode(z,{renderApiDomain:e.unref(u),isComponentMode:f.value,fullwidthMode:b.value,columnToInsert:s.value,addComponentToColumn:I,toggleComponentModeFunction:l},null,8,["renderApiDomain","isComponentMode","fullwidthMode","columnToInsert"])])),e.createElementVNode("div",{class:e.normalizeClass([b.value?"w-full px-4":"w-3/4 ps-3","flex flex-col gap-5"])},[e.createVNode(W,{globalPageConfiguration:n,isComponentMode:f.value,removeComponent:M,addComponentFunction:P,fullwidthMode:b.value,addCol:p,addRow:V,removeRow:a,removeCol:y,moveCol:N,updateRowConfig:w,updateColConfig:B,moveRow:d,sectionSelected:g.value,renderApiDomain:e.unref(u)},null,8,["globalPageConfiguration","isComponentMode","fullwidthMode","sectionSelected","renderApiDomain"])],2)])]))}});exports.BodySection=W;exports.ColConfig=J;exports.ComponentsBox=z;exports.FeedComponent=G;exports.FieldsForm=L;exports.GlobalConfig=U;exports.InitialComponent=R;exports.Pagebuilder=Q;exports.RowConfig=H;exports.SourceFilter=q;exports.default=Q;
|