@solvenza/cookies-compliance 1.2.1 → 1.5.3
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 +960 -36
- package/bin/audit-cli.js +134 -13
- package/dist/audit.cjs +811 -0
- package/dist/audit.cjs.map +1 -0
- package/dist/audit.d.cts +60 -0
- package/dist/audit.d.ts +60 -0
- package/dist/audit.js +380 -0
- package/dist/audit.js.map +1 -0
- package/dist/chunk-C5QPXHTH.js +3557 -0
- package/dist/chunk-C5QPXHTH.js.map +1 -0
- package/dist/chunk-OHOHIAK6.js +442 -0
- package/dist/chunk-OHOHIAK6.js.map +1 -0
- package/dist/chunk-Q3FZFXQE.js +89 -0
- package/dist/chunk-UQU54ANZ.js +225 -0
- package/dist/chunk-UQU54ANZ.js.map +1 -0
- package/dist/chunk-W5MG56VI.js +269 -0
- package/dist/chunk-W5MG56VI.js.map +1 -0
- package/dist/consent.esm.cjs +2195 -84
- package/dist/consent.esm.cjs.map +1 -1
- package/dist/consent.esm.d.cts +173 -6
- package/dist/consent.esm.d.ts +173 -6
- package/dist/consent.esm.js +57 -23
- package/dist/consent.esm.js.map +1 -1
- package/dist/consent.min.js +437 -55
- package/dist/consent.min.js.map +1 -1
- package/dist/presets.cjs +495 -0
- package/dist/presets.cjs.map +1 -0
- package/dist/presets.d.cts +51 -0
- package/dist/presets.d.ts +51 -0
- package/dist/presets.js +16 -0
- package/dist/presets.js.map +1 -0
- package/dist/types--kyI7OOR.d.cts +314 -0
- package/dist/types--kyI7OOR.d.ts +314 -0
- package/dist/wrappers/angular.cjs +2341 -65
- package/dist/wrappers/angular.cjs.map +1 -1
- package/dist/wrappers/angular.d.cts +85 -5
- package/dist/wrappers/angular.d.ts +85 -5
- package/dist/wrappers/angular.js +217 -3
- package/dist/wrappers/angular.js.map +1 -1
- package/dist/wrappers/next.cjs +2353 -103
- package/dist/wrappers/next.cjs.map +1 -1
- package/dist/wrappers/next.d.cts +25 -1
- package/dist/wrappers/next.d.ts +25 -1
- package/dist/wrappers/next.js +30 -5
- package/dist/wrappers/next.js.map +1 -1
- package/dist/wrappers/nuxt.cjs +4171 -0
- package/dist/wrappers/nuxt.cjs.map +1 -0
- package/dist/wrappers/nuxt.d.cts +33 -0
- package/dist/wrappers/nuxt.d.ts +33 -0
- package/dist/wrappers/nuxt.js +51 -0
- package/dist/wrappers/nuxt.js.map +1 -0
- package/dist/wrappers/react.cjs +2336 -141
- package/dist/wrappers/react.cjs.map +1 -1
- package/dist/wrappers/react.d.cts +87 -1
- package/dist/wrappers/react.d.ts +87 -1
- package/dist/wrappers/react.js +21 -51
- package/dist/wrappers/react.js.map +1 -1
- package/dist/wrappers/vue.cjs +4163 -0
- package/dist/wrappers/vue.cjs.map +1 -0
- package/dist/wrappers/vue.d.cts +144 -0
- package/dist/wrappers/vue.d.ts +144 -0
- package/dist/wrappers/vue.js +28 -0
- package/dist/wrappers/vue.js.map +1 -0
- package/dist/wrappers/wordpress.js +1 -1
- package/package.json +26 -5
- package/schema.json +143 -4
- package/dist/chunk-DDAAVRWG.js +0 -25
- package/dist/chunk-FBRP4MSA.js +0 -1907
- package/dist/chunk-FBRP4MSA.js.map +0 -1
- package/dist/consent-engine-DOMyEKfk.d.cts +0 -193
- package/dist/consent-engine-DOMyEKfk.d.ts +0 -193
- /package/dist/{chunk-DDAAVRWG.js.map → chunk-Q3FZFXQE.js.map} +0 -0
package/dist/consent.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ConsentSDK=(()=>{var G=Object.defineProperty,Se=Object.defineProperties,Ee=Object.getOwnPropertyDescriptor,Ae=Object.getOwnPropertyDescriptors,Ie=Object.getOwnPropertyNames,be=Object.getOwnPropertySymbols;var ye=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable;var ve=(r,e,t)=>e in r?G(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,y=(r,e)=>{for(var t in e||(e={}))ye.call(e,t)&&ve(r,t,e[t]);if(be)for(var t of be(e))je.call(e,t)&&ve(r,t,e[t]);return r},xe=(r,e)=>Se(r,Ae(e));var Re=(r,e)=>{for(var t in e)G(r,t,{get:e[t],enumerable:!0})},Me=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ie(e))!ye.call(r,s)&&s!==t&&G(r,s,{get:()=>e[s],enumerable:!(n=Ee(e,s))||n.enumerable});return r};var Le=r=>Me(G({},"__esModule",{value:!0}),r);var De={};Re(De,{ConfigValidationError:()=>h,Consent:()=>N,ConsentConfigBuilder:()=>U,ConsentEngine:()=>V,CookieStorageProvider:()=>z,CookieStore:()=>v,GoogleConsentAdapter:()=>I,I18nEngine:()=>ce,IframeGate:()=>L,IframeResourceBlocker:()=>ee,ImageResourceBlocker:()=>te,MemoryStorageProvider:()=>A,MemoryStore:()=>O,PolicyGenerator:()=>B,ResourceGate:()=>_,ResourceScanner:()=>q,ScriptGate:()=>M,ScriptResourceBlocker:()=>Z,StorageFactory:()=>ae,computeReceiptSignature:()=>P,createReceipt:()=>Y,isReceiptExpired:()=>X,parseReceipt:()=>Q,sanitizeHtml:()=>g,validateConfig:()=>D,verifyReceiptIntegrity:()=>Ce});var h=class extends Error{constructor(e){super(`[ConsentSDK Config Error] ${e}`),this.name="ConfigValidationError"}};function D(r){if(!r)throw new h("Configuration object is null or undefined.");if(typeof r.schemaVersion!="number"||r.schemaVersion<1)throw new h("Invalid or missing 'schemaVersion'. Expected integer >= 1.");if(!r.policyVersion||typeof r.policyVersion!="string")throw new h("Invalid or missing 'policyVersion'. String required.");if(!r.categories||typeof r.categories!="object")throw new h("Missing 'categories' map in configuration.");if(Object.keys(r.categories).length===0)throw new h("At least one category must be defined in 'categories'.");let t=r.categories.necessary;if(!t)throw new h("Category 'necessary' must be defined.");if(t.required!==!0)throw new h("Category 'necessary' must have 'required: true'.");for(let[n,s]of Object.entries(r.categories))if(n!=="necessary"&&!s.required&&s.default===!0)throw new h(`Legal violation (AEPD): Optional category '${n}' cannot have default: true. All optional categories must be opt-in (default: false).`);if(r.services&&typeof r.services=="object")for(let[n,s]of Object.entries(r.services)){if(!s.category)throw new h(`Service '${n}' missing 'category' reference.`);if(!r.categories[s.category])throw new h(`Service '${n}' references non-existent category '${s.category}'.`)}}var W=class{constructor(){this.state={initialized:!1,policyVersion:"",locale:"es",receipt:null,choices:{}};this.config=null}init(e,t,n){var s;this.config=e,this.state={initialized:!0,policyVersion:e.policyVersion,locale:((s=e.locale)==null?void 0:s.default)||"es",receipt:n,choices:t}}getConfig(){return this.config}getState(){return y({},this.state)}getChoices(){return y({},this.state.choices)}getReceipt(){return this.state.receipt}hasCategory(e){return this.state.choices[e]===!0}hasService(e){if(!this.config||!this.config.services)return!1;let t=this.config.services[e];return t?this.hasCategory(t.category):!1}updateChoices(e){this.state.receipt=e,this.state.choices=y({},e.choices)}clearChoices(){if(!this.config)return;let e={};for(let[t,n]of Object.entries(this.config.categories))e[t]=n.required===!0;this.state.choices=e,this.state.receipt=null}};var J=class{constructor(){this.handlers=new Map}on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set);let n=this.handlers.get(e);return n.add(t),()=>{n.delete(t)}}emit(e,t){let n=this.handlers.get(e);if(n)for(let s of n)try{s(t)}catch(o){console.error(`[ConsentSDK Event Error] Handler for '${e}' failed:`,o)}}clear(){this.handlers.clear()}};function $e(r){let e,t,n="",s=r.length*8,o=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],i=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],c=[];for(e=0;e<r.length;e++)c[e>>2]|=r.charCodeAt(e)<<24-e%4*8;for(c[s>>5]|=128<<24-s%32,c[(s+64>>9<<4)+15]=s,e=0;e<c.length;e+=16){let a=c.slice(e,e+16),f=[...o];for(t=0;t<64;t++){let l=a[t-15],d=a[t-2],p=(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3,x=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10;a[t]=t<16?a[t]||0:a[t-16]+p+a[t-7]+x|0;let u=o[4]&o[5]^~o[4]&o[6],k=o[0]&o[1]^o[0]&o[2]^o[1]&o[2],C=(o[0]>>>2|o[0]<<30)^(o[0]>>>13|o[0]<<19)^(o[0]>>>22|o[0]<<10),m=(o[4]>>>6|o[4]<<26)^(o[4]>>>11|o[4]<<21)^(o[4]>>>25|o[4]<<7),S=o[7]+m+u+i[t]+(a[t]|0),K=C+k;o[7]=o[6],o[6]=o[5],o[5]=o[4],o[4]=o[3]+S|0,o[3]=o[2],o[2]=o[1],o[1]=o[0],o[0]=S+K|0}for(t=0;t<8;t++)o[t]=o[t]+f[t]|0}for(e=0;e<8;e++)for(t=3;t>=0;t--){let a=o[e]>>t*8&255;n+=(a<16?"0":"")+a.toString(16)}return n}function P(r,e){if(e)return $e(`${e}:${r}:${e}`);let t=2166136261;for(let n=0;n<r.length;n++)t^=r.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function Ce(r,e,t){return e?P(r,t)===e:!1}function g(r){return r?r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}function de(r){if(!r)return"#";let e=r.trim().toLowerCase();return e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:")?"#":r}function Te(){return typeof crypto!="undefined"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Y(r,e,t,n,s){let o=new Date().toISOString(),i=(n==null?void 0:n.receiptId)||Te(),c=(n==null?void 0:n.decidedAt)||o,a=`${i}:${r}:${JSON.stringify(e)}`,f=P(a,s);return{schema:1,receiptId:i,policyVersion:r,decidedAt:c,updatedAt:o,source:t,choices:e,signature:f}}function Q(r){try{let e=JSON.parse(r);return typeof e=="object"&&e!==null&&typeof e.receiptId=="string"&&typeof e.policyVersion=="string"&&typeof e.choices=="object"?e:null}catch(e){return null}}function X(r,e=365){if(!r.updatedAt)return!0;let t=new Date(r.updatedAt).getTime(),n=Date.now(),s=e*86400*1e3;return n-t>s}function we(r,e){var o,i,c;let t={};for(let[a,f]of Object.entries(r.categories))t[a]=f.required===!0;if(!e)return{isValid:!1,reason:"missing",choices:t};if(e.policyVersion!==r.policyVersion)return{isValid:!1,reason:"policy_version_changed",choices:t};let n=(i=(o=r.consent)==null?void 0:o.maxAgeDays)!=null?i:365;if(X(e,n))return{isValid:!1,reason:"expired",choices:t};if(e.signature){let a=`${e.receiptId}:${e.policyVersion}:${JSON.stringify(e.choices)}`,f=P(a,(c=r.security)==null?void 0:c.secretKey);if(e.signature!==f)return{isValid:!1,reason:"tampered",choices:t}}let s=y({},t);for(let a of Object.keys(r.categories))a==="necessary"?s[a]=!0:typeof e.choices[a]=="boolean"&&(s[a]=e.choices[a]);return{isValid:!0,reason:"valid",choices:s}}var z=class{get(e){return v.get(e)}set(e,t,n){v.set(e,t,n)}remove(e,t="/",n){v.remove(e,t,n)}},v=class{static get(e){if(typeof document=="undefined")return null;let t=encodeURIComponent(e)+"=",n=document.cookie.split(";");for(let s=0;s<n.length;s++){let o=n[s];for(;o.charAt(0)===" ";)o=o.substring(1,o.length);if(o.indexOf(t)===0)return decodeURIComponent(o.substring(t.length,o.length))}return null}static set(e,t,n={}){var d,p;if(typeof document=="undefined")return;let s=n.path||"/",o=(d=n.maxAgeDays)!=null?d:365,i=Math.floor(o*86400),c=n.sameSite||"Lax",a=typeof window!="undefined"&&window.location.protocol==="https:",f=(p=n.secure)!=null?p:a,l=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; Path=${s}; Max-Age=${i}; SameSite=${c}`;n.domain&&(l+=`; Domain=${n.domain}`),f&&(l+="; Secure"),document.cookie=l}static remove(e,t="/",n){if(typeof document=="undefined")return;let s=`${encodeURIComponent(e)}=; Path=${t}; Max-Age=0; SameSite=Lax`;n&&(s+=`; Domain=${n}`),document.cookie=s}static clearServiceCookies(e,t){var o,i;if(typeof document=="undefined"||!e.services)return;let n=((o=e.storage)==null?void 0:o.path)||"/",s=(i=e.storage)==null?void 0:i.domain;for(let c of Object.values(e.services))if(c.category===t&&c.cookies)for(let a of c.cookies)this.remove(a.name,n,s||a.domain)}};var H=class H{get(e){var t;return(t=H.store.get(e))!=null?t:null}set(e,t){H.store.set(e,t)}remove(e){H.store.delete(e)}clear(){H.store.clear()}};H.store=new Map;var A=H,O={get:r=>new A().get(r),set:(r,e)=>new A().set(r,e),remove:r=>new A().remove(r),clear:()=>new A().clear()};var Z=class{constructor(){this.type="script"}process(e,t){M.scanAndActivate(e,t)}},M=class{static scanAndActivate(e,t,n){var o;if(typeof document=="undefined")return;let s=Array.from(document.querySelectorAll('script[type="text/plain"][data-consent], script[type="text/plain"][data-service]'));for(let i of s){if(this.executedScripts.has(i))continue;let c=i.getAttribute("data-consent"),a=i.getAttribute("data-service"),f=!1;if(a?f=t(a):c&&(f=e(c)),!f)continue;this.executedScripts.add(i);let l=document.createElement("script");for(let d=0;d<i.attributes.length;d++){let p=i.attributes[d];if(p.name!=="type"){if(p.name==="data-src"){l.src=p.value;continue}l.setAttribute(p.name,p.value)}}l.type="text/javascript",!l.src&&i.textContent&&(l.textContent=i.textContent),(o=i.parentNode)==null||o.replaceChild(l,i),(a||c)&&(n==null||n(a||c,c||"custom"))}}};M.executedScripts=new Set;var ee=class{constructor(){this.type="iframe"}process(e,t){L.processIframes(e,t)}},L=class{static processIframes(e,t,n={}){if(typeof document=="undefined")return;let s=Array.from(document.querySelectorAll("iframe[data-consent], iframe[data-service]"));for(let o of s){let i=o.getAttribute("data-consent"),c=o.getAttribute("data-service"),a=!1;c?a=t(c):i&&(a=e(i));let f=o.getAttribute("data-src")||o.getAttribute("src");f&&(o.getAttribute("data-src")||o.setAttribute("data-src",f),a?this.unlockIframe(o,f):this.lockIframe(o,i||"marketing",c||void 0,n))}}static lockIframe(e,t,n,s){var f;if(e.hasAttribute("src")&&e.removeAttribute("src"),this.placeholders.has(e))return;let o=document.createElement("div");o.className="consent-iframe-placeholder",o.style.cssText=`
|
|
1
|
+
"use strict";var ConsentSDK=(()=>{var he=Object.defineProperty,qe=Object.defineProperties,Ke=Object.getOwnPropertyDescriptor,Ve=Object.getOwnPropertyDescriptors,We=Object.getOwnPropertyNames,fe=Object.getOwnPropertySymbols;var Re=Object.prototype.hasOwnProperty,Ue=Object.prototype.propertyIsEnumerable;var Me=(r,e,t)=>e in r?he(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))Re.call(e,t)&&Me(r,t,e[t]);if(fe)for(var t of fe(e))Ue.call(e,t)&&Me(r,t,e[t]);return r},re=(r,e)=>qe(r,Ve(e));var Ne=(r,e)=>{var t={};for(var o in r)Re.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(r!=null&&fe)for(var o of fe(r))e.indexOf(o)<0&&Ue.call(r,o)&&(t[o]=r[o]);return t};var Ye=(r,e)=>{for(var t in e)he(r,t,{get:e[t],enumerable:!0})},Je=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of We(e))!Re.call(r,n)&&n!==t&&he(r,n,{get:()=>e[n],enumerable:!(o=Ke(e,n))||o.enumerable});return r};var Xe=r=>Je(he({},"__esModule",{value:!0}),r);var et={};Ye(et,{BUILTIN_TRANSLATIONS:()=>Ae,ConfigValidationError:()=>P,Consent:()=>pe,ConsentConfigBuilder:()=>ge,ConsentEngine:()=>ee,CookieStorageProvider:()=>H,CookieStore:()=>S,FloatingBadge:()=>W,GoogleConsentAdapter:()=>R,I18nEngine:()=>Z,IframeGate:()=>M,IframeResourceBlocker:()=>we,ImageResourceBlocker:()=>ke,MemoryStorageProvider:()=>z,MemoryStore:()=>q,PolicyGenerator:()=>L,ResourceGate:()=>V,ResourceScanner:()=>Y,SERVICE_PRESETS:()=>J,ScriptGate:()=>B,ScriptResourceBlocker:()=>xe,StorageCleaner:()=>K,StorageFactory:()=>ze,applyGpcChoices:()=>$e,computeReceiptSignature:()=>O,createReceipt:()=>se,defineServices:()=>He,detectGpcSignal:()=>le,getPreset:()=>ae,hasPreset:()=>ce,isReceiptExpired:()=>Ce,parseReceipt:()=>ve,resolveConfigPresets:()=>Ie,resolveGpcConfig:()=>de,sanitizeHtml:()=>p,validateConfig:()=>G,verifyReceiptIntegrity:()=>Ge});var P=class extends Error{constructor(e){super(`[ConsentSDK Config Error] ${e}`),this.name="ConfigValidationError"}};function G(r){if(!r)throw new P("Configuration object is null or undefined.");if(typeof r.schemaVersion!="number"||r.schemaVersion<1)throw new P("Invalid or missing 'schemaVersion'. Expected integer >= 1.");if(!r.policyVersion||typeof r.policyVersion!="string")throw new P("Invalid or missing 'policyVersion'. String required.");if(!r.categories||typeof r.categories!="object")throw new P("Missing 'categories' map in configuration.");if(Object.keys(r.categories).length===0)throw new P("At least one category must be defined in 'categories'.");let t=r.categories.necessary;if(!t)throw new P("Category 'necessary' must be defined.");if(t.required!==!0)throw new P("Category 'necessary' must have 'required: true'.");for(let[o,n]of Object.entries(r.categories))if(o!=="necessary"&&!n.required&&n.default===!0)throw new P(`Legal violation (AEPD): Optional category '${o}' cannot have default: true. All optional categories must be opt-in (default: false).`);if(r.services&&typeof r.services=="object")for(let[o,n]of Object.entries(r.services)){let i=n.category;if(!i)throw new P(`Service '${o}' missing 'category' reference.`);if(!r.categories[i])throw new P(`Service '${o}' references non-existent category '${i}'.`)}}var ye=class{constructor(){this.state={initialized:!1,policyVersion:"",locale:"es",receipt:null,choices:{}};this.config=null}init(e,t,o,n){var i,s;this.config=e,this.state={initialized:!0,policyVersion:e.policyVersion,locale:((i=e.locale)==null?void 0:i.default)||"es",receipt:o,choices:t,gpc:(s=n!=null?n:o==null?void 0:o.gpc)!=null?s:!1}}setLocale(e){this.state.locale=e}getConfig(){return this.config}getState(){return C({},this.state)}getChoices(){return C({},this.state.choices)}getReceipt(){return this.state.receipt}hasCategory(e){return this.state.choices[e]===!0}hasService(e){if(!this.config||!this.config.services)return!1;let t=this.config.services[e];return!t||!t.category?!1:this.hasCategory(t.category)}updateChoices(e){this.state.receipt=e,this.state.choices=C({},e.choices)}clearChoices(){if(!this.config)return;let e={};for(let[t,o]of Object.entries(this.config.categories))e[t]=o.required===!0;this.state.choices=e,this.state.receipt=null}};var be=class{constructor(){this.handlers=new Map}on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set);let o=this.handlers.get(e);return o.add(t),()=>{o.delete(t)}}emit(e,t){let o=this.handlers.get(e);if(o)for(let n of o)try{n(t)}catch(i){console.error(`[ConsentSDK Event Error] Handler for '${e}' failed:`,i)}}clear(){this.handlers.clear()}};function Qe(r){let e,t,o="",n=r.length*8,i=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=[];for(e=0;e<r.length;e++)a[e>>2]|=r.charCodeAt(e)<<24-e%4*8;for(a[n>>5]|=128<<24-n%32,a[(n+64>>9<<4)+15]=n,e=0;e<a.length;e+=16){let c=a.slice(e,e+16),l=[...i];for(t=0;t<64;t++){let d=c[t-15],f=c[t-2],u=(d>>>7|d<<25)^(d>>>18|d<<14)^d>>>3,h=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10;c[t]=t<16?c[t]||0:c[t-16]+u+c[t-7]+h|0;let m=i[4]&i[5]^~i[4]&i[6],g=i[0]&i[1]^i[0]&i[2]^i[1]&i[2],b=(i[0]>>>2|i[0]<<30)^(i[0]>>>13|i[0]<<19)^(i[0]>>>22|i[0]<<10),v=(i[4]>>>6|i[4]<<26)^(i[4]>>>11|i[4]<<21)^(i[4]>>>25|i[4]<<7),y=i[7]+v+m+s[t]+(c[t]|0),x=b+g;i[7]=i[6],i[6]=i[5],i[5]=i[4],i[4]=i[3]+y|0,i[3]=i[2],i[2]=i[1],i[1]=i[0],i[0]=y+x|0}for(t=0;t<8;t++)i[t]=i[t]+l[t]|0}for(e=0;e<8;e++)for(t=3;t>=0;t--){let c=i[e]>>t*8&255;o+=(c<16?"0":"")+c.toString(16)}return o}function O(r,e){if(e)return Qe(`${e}:${r}:${e}`);let t=2166136261;for(let o=0;o<r.length;o++)t^=r.charCodeAt(o),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function Ge(r,e,t){return e?O(r,t)===e:!1}function p(r){return r?r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}function _e(r){if(!r)return"#";let e=r.trim().toLowerCase();return e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:")?"#":r}function Ze(){return typeof crypto!="undefined"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function se(r,e,t,o,n){let i=new Date().toISOString(),s=(o==null?void 0:o.receiptId)||Ze(),a=(o==null?void 0:o.decidedAt)||i,c=`${s}:${r}:${JSON.stringify(e)}`,l=O(c,n);return{schema:1,receiptId:s,policyVersion:r,decidedAt:a,updatedAt:i,source:t,choices:e,signature:l}}function ve(r){try{let e=JSON.parse(r);return typeof e=="object"&&e!==null&&typeof e.receiptId=="string"&&typeof e.policyVersion=="string"&&typeof e.choices=="object"?e:null}catch(e){return null}}function Ce(r,e=365){if(!r.updatedAt)return!0;let t=new Date(r.updatedAt).getTime(),o=Date.now(),n=e*86400*1e3;return o-t>n}function Oe(r,e){var i,s,a;let t={};for(let[c,l]of Object.entries(r.categories))t[c]=l.required===!0;if(!e)return{isValid:!1,reason:"missing",choices:t};if(e.policyVersion!==r.policyVersion)return{isValid:!1,reason:"policy_version_changed",choices:t};let o=(s=(i=r.consent)==null?void 0:i.maxAgeDays)!=null?s:365;if(Ce(e,o))return{isValid:!1,reason:"expired",choices:t};if(e.signature){let c=`${e.receiptId}:${e.policyVersion}:${JSON.stringify(e.choices)}`,l=O(c,(a=r.security)==null?void 0:a.secretKey);if(e.signature!==l)return{isValid:!1,reason:"tampered",choices:t}}let n=C({},t);for(let c of Object.keys(r.categories))c==="necessary"?n[c]=!0:typeof e.choices[c]=="boolean"&&(n[c]=e.choices[c]);return{isValid:!0,reason:"valid",choices:n}}var H=class{get(e){return S.get(e)}set(e,t,o){S.set(e,t,o)}remove(e,t="/",o){S.remove(e,t,o)}},S=class{static get(e){if(typeof document=="undefined")return null;let t=encodeURIComponent(e)+"=",o=document.cookie.split(";");for(let n=0;n<o.length;n++){let i=o[n];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(t)===0)return decodeURIComponent(i.substring(t.length,i.length))}return null}static set(e,t,o={}){var f,u;if(typeof document=="undefined")return;let n=o.path||"/",i=(f=o.maxAgeDays)!=null?f:365,s=Math.floor(i*86400),a=o.sameSite||"Lax",c=typeof window!="undefined"&&window.location.protocol==="https:",l=(u=o.secure)!=null?u:c,d=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; Path=${n}; Max-Age=${s}; SameSite=${a}`;o.domain&&(d+=`; Domain=${o.domain}`),l&&(d+="; Secure"),document.cookie=d}static remove(e,t="/",o){if(typeof document=="undefined")return;let n=`${encodeURIComponent(e)}=; Path=${t}; Max-Age=0; SameSite=Lax`;o&&(n+=`; Domain=${o}`),document.cookie=n}static clearServiceCookies(e,t){var i,s;if(typeof document=="undefined"||!e.services)return;let o=((i=e.storage)==null?void 0:i.path)||"/",n=(s=e.storage)==null?void 0:s.domain;for(let a of Object.values(e.services))if(a.category===t&&a.cookies)for(let c of a.cookies)this.remove(c.name,o,n||c.domain)}};var F=class F{get(e){var t;return(t=F.store.get(e))!=null?t:null}set(e,t){F.store.set(e,t)}remove(e){F.store.delete(e)}clear(){F.store.clear()}};F.store=new Map;var z=F,q={get:r=>new z().get(r),set:(r,e)=>new z().set(r,e),remove:r=>new z().remove(r),clear:()=>new z().clear()};var K=class{static matchesPattern(e,t){if(!e||!t)return!1;if(t==="*"||e===t)return!0;if(t.includes("*")){let o=t.split("*").map(n=>n.replace(/[-[\]{}()+?.,\\^$|#\s]/g,"\\$&")).join(".*");try{return new RegExp(`^${o}$`,"i").test(e)}catch(n){return!1}}return e.toLowerCase()===t.toLowerCase()}static purgeLocalStorage(e){if(typeof window=="undefined"||!e||e.length===0)return[];try{if(typeof window.localStorage=="undefined")return[];let t=[],o=window.localStorage.length;for(let n=0;n<o;n++){let i=window.localStorage.key(n);i&&e.some(s=>this.matchesPattern(i,s))&&t.push(i)}for(let n of t)window.localStorage.removeItem(n);return t}catch(t){return[]}}static purgeSessionStorage(e){if(typeof window=="undefined"||!e||e.length===0)return[];try{if(typeof window.sessionStorage=="undefined")return[];let t=[],o=window.sessionStorage.length;for(let n=0;n<o;n++){let i=window.sessionStorage.key(n);i&&e.some(s=>this.matchesPattern(i,s))&&t.push(i)}for(let n of t)window.sessionStorage.removeItem(n);return t}catch(t){return[]}}static purgeCookies(e,t="/",o){if(typeof document=="undefined"||!e||e.length===0)return[];let n=[],i=this.getAllCookieNames();for(let s of e){let a=s.domain||o;if(s.name.includes("*"))for(let c of i)this.matchesPattern(c,s.name)&&(S.remove(c,t,a),n.includes(c)||n.push(c));else S.remove(s.name,t,a),n.includes(s.name)||n.push(s.name)}return n}static getAllCookieNames(){if(typeof document=="undefined")return[];try{return document.cookie.split(";").map(e=>e.trim().split("=")[0]).filter(e=>!!e)}catch(e){return[]}}static purgeCategory(e,t){var d,f,u;let o={category:t,purgedCookies:[],purgedLocalStorage:[],purgedSessionStorage:[]};if(!e)return o;let n=((d=e.storage)==null?void 0:d.path)||"/",i=(f=e.storage)==null?void 0:f.domain,s=[],a=new Set,c=new Set,l=(u=e.categories)==null?void 0:u[t];if(l&&(l.storageKeys&&l.storageKeys.forEach(h=>{a.add(h),c.add(h)}),l.localStorage&&l.localStorage.forEach(h=>a.add(h)),l.sessionStorage&&l.sessionStorage.forEach(h=>c.add(h))),e.services){for(let h of Object.values(e.services))if(h.category===t){if(h.cookies)for(let m of h.cookies)s.push({name:m.name,domain:m.domain||i});h.storageKeys&&h.storageKeys.forEach(m=>{a.add(m),c.add(m)}),h.localStorage&&h.localStorage.forEach(m=>a.add(m)),h.sessionStorage&&h.sessionStorage.forEach(m=>c.add(m))}}return o.purgedCookies=this.purgeCookies(s,n,i),o.purgedLocalStorage=this.purgeLocalStorage(Array.from(a)),o.purgedSessionStorage=this.purgeSessionStorage(Array.from(c)),o}};var xe=class{constructor(){this.type="script"}process(e,t){B.scanAndActivate(e,t)}},B=class{static scanAndActivate(e,t,o){var i;if(typeof document=="undefined")return;let n=Array.from(document.querySelectorAll('script[type="text/plain"][data-consent], script[type="text/plain"][data-service]'));for(let s of n){if(this.executedScripts.has(s))continue;let a=s.getAttribute("data-consent"),c=s.getAttribute("data-service"),l=!1;if(c?l=t(c):a&&(l=e(a)),!l)continue;this.executedScripts.add(s);let d=document.createElement("script");for(let f=0;f<s.attributes.length;f++){let u=s.attributes[f];if(u.name!=="type"){if(u.name==="data-src"){d.src=u.value;continue}d.setAttribute(u.name,u.value)}}d.type="text/javascript",!d.src&&s.textContent&&(d.textContent=s.textContent),(i=s.parentNode)==null||i.replaceChild(d,s),(c||a)&&(o==null||o(c||a,a||"custom"))}}};B.executedScripts=new Set;var we=class{constructor(){this.type="iframe"}process(e,t){M.processIframes(e,t)}},M=class{static processIframes(e,t,o={}){if(typeof document=="undefined")return;let n=Array.from(document.querySelectorAll("iframe[data-consent], iframe[data-service]"));for(let i of n){let s=i.getAttribute("data-consent"),a=i.getAttribute("data-service"),c=!1;a?c=t(a):s&&(c=e(s));let l=i.getAttribute("data-src")||i.getAttribute("src");l&&(i.getAttribute("data-src")||i.setAttribute("data-src",l),c?this.unlockIframe(i,l):this.lockIframe(i,s||"marketing",a||void 0,o))}}static lockIframe(e,t,o,n){var l;if(e.hasAttribute("src")&&e.removeAttribute("src"),this.placeholders.has(e))return;let i=document.createElement("div");i.className="consent-iframe-placeholder",i.style.cssText=`
|
|
2
2
|
width: ${e.width?e.width.endsWith("%")||e.width.endsWith("px")?e.width:e.width+"px":"100%"};
|
|
3
3
|
height: ${e.height?e.height.endsWith("%")||e.height.endsWith("px")?e.height:e.height+"px":"315px"};
|
|
4
4
|
min-height: 200px;
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
border-radius: 8px;
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
font-family: system-ui, -apple-system, sans-serif;
|
|
16
|
-
`;let
|
|
16
|
+
`;let s=o?`Contenido de ${o} bloqueado`:"Contenido externo bloqueado",a="Este contenido est\xE1 bloqueado hasta que autorices esta finalidad de privacidad.";i.innerHTML=`
|
|
17
17
|
<div style="font-weight: 600; font-size: 1.1rem; margin-bottom: 0.5rem; color: #f8fafc;">
|
|
18
|
-
${
|
|
18
|
+
${s}
|
|
19
19
|
</div>
|
|
20
20
|
<p style="font-size: 0.9rem; color: #94a3b8; margin: 0 0 1rem 0; max-width: 400px;">
|
|
21
|
-
${
|
|
21
|
+
${a}
|
|
22
22
|
</p>
|
|
23
23
|
<button type="button" class="consent-placeholder-allow-btn" style="
|
|
24
24
|
background: #2563eb;
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
">
|
|
34
34
|
Permitir y mostrar contenido
|
|
35
35
|
</button>
|
|
36
|
-
`;let
|
|
36
|
+
`;let c=i.querySelector(".consent-placeholder-allow-btn");c==null||c.addEventListener("click",()=>{var d;(d=n.onAllowClick)==null||d.call(n,t,o)}),e.style.display="none",(l=e.parentNode)==null||l.insertBefore(i,e),this.placeholders.set(e,i)}static unlockIframe(e,t){var n;e.getAttribute("src")!==t&&e.setAttribute("src",t),e.style.display="";let o=this.placeholders.get(e);o&&((n=o.parentNode)==null||n.removeChild(o),this.placeholders.delete(e))}};M.placeholders=new Map;var ke=class{constructor(){this.type="image"}process(e,t){V.processImages(e,t)}},V=class{static processImages(e,t){if(typeof document=="undefined")return;let o=Array.from(document.querySelectorAll("img[data-consent], img[data-service]"));for(let n of o){let i=n.getAttribute("data-consent"),s=n.getAttribute("data-service"),a=!1;s?a=t(s):i&&(a=e(i));let c=n.getAttribute("data-src")||n.getAttribute("src");c&&(n.getAttribute("data-src")||n.setAttribute("data-src",c),a?n.getAttribute("src")!==c&&n.setAttribute("src",c):n.hasAttribute("src")&&n.removeAttribute("src"))}}};var Se=class{constructor(){this.observer=null}init(e,t,o,n){let i=()=>{B.scanAndActivate(e,t,n),M.processIframes(e,t,o),V.processImages(e,t)};i(),typeof MutationObserver!="undefined"&&typeof document!="undefined"&&(this.observer=new MutationObserver(()=>{i()}),this.observer.observe(document.documentElement||document.body,{childList:!0,subtree:!0}))}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null)}};var R=class{static initDefault(e){typeof window!="undefined"&&(window.dataLayer=window.dataLayer||[],window.gtag||(window.gtag=function(){var t;(t=window.dataLayer)==null||t.push(arguments)}),this.initialized||(window.gtag("consent","default",{analytics_storage:"denied",ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",wait_for_update:500}),this.initialized=!0))}static update(e,t){if(typeof window=="undefined")return;this.initDefault(t);let o=(t==null?void 0:t.analytics_storage)||"analytics",n=(t==null?void 0:t.ad_storage)||"marketing",i=e[o]===!0,s=e[n]===!0;window.gtag("consent","update",{analytics_storage:i?"granted":"denied",ad_storage:s?"granted":"denied",ad_user_data:s?"granted":"denied",ad_personalization:s?"granted":"denied"})}};R.initialized=!1;var Pe=class{static createWhen(e,t,o){return function(i,s){if(t(i)||o(i))try{s()}catch(a){console.error("[ConsentSDK when()] Callback execution failed:",a)}return e.on("consent:changed",({choices:a})=>{if(a[i]===!0||o(i))try{s()}catch(c){console.error("[ConsentSDK when()] Callback execution failed:",c)}})}}};function Q(r){if(typeof document=="undefined")return;let e=document.getElementById("consent-sdk-styles");e&&e.remove();let t=document.createElement("style");t.id="consent-sdk-styles",r&&t.setAttribute("nonce",r),t.textContent=`
|
|
37
37
|
:root {
|
|
38
38
|
--consent-bg: #ffffff;
|
|
39
39
|
--consent-fg: #0f172a;
|
|
@@ -471,7 +471,153 @@
|
|
|
471
471
|
flex-direction: row;
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
|
-
|
|
474
|
+
|
|
475
|
+
/* Floating Revocation & Preference Badge */
|
|
476
|
+
.consent-floating-badge {
|
|
477
|
+
position: fixed;
|
|
478
|
+
z-index: 2147483640;
|
|
479
|
+
font-family: var(--consent-font);
|
|
480
|
+
opacity: 0;
|
|
481
|
+
transform: scale(0.85);
|
|
482
|
+
pointer-events: none;
|
|
483
|
+
transition: opacity 0.28s cubic-bezier(0.16, 1, 0.3, 1), transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.consent-floating-badge.is-visible {
|
|
487
|
+
opacity: 1;
|
|
488
|
+
transform: scale(1);
|
|
489
|
+
pointer-events: auto;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
.consent-floating-badge--bottom-left {
|
|
493
|
+
bottom: 1.25rem;
|
|
494
|
+
left: 1.25rem;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.consent-floating-badge--bottom-right {
|
|
498
|
+
bottom: 1.25rem;
|
|
499
|
+
right: 1.25rem;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.consent-floating-badge--top-left {
|
|
503
|
+
top: 1.25rem;
|
|
504
|
+
left: 1.25rem;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.consent-floating-badge--top-right {
|
|
508
|
+
top: 1.25rem;
|
|
509
|
+
right: 1.25rem;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.consent-floating-badge-inner {
|
|
513
|
+
position: relative;
|
|
514
|
+
display: inline-flex;
|
|
515
|
+
align-items: center;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.consent-floating-badge-btn {
|
|
519
|
+
display: inline-flex;
|
|
520
|
+
align-items: center;
|
|
521
|
+
justify-content: center;
|
|
522
|
+
gap: 0.5rem;
|
|
523
|
+
width: 46px;
|
|
524
|
+
height: 46px;
|
|
525
|
+
min-width: 46px;
|
|
526
|
+
border-radius: 9999px;
|
|
527
|
+
background: var(--consent-bg);
|
|
528
|
+
color: var(--consent-fg);
|
|
529
|
+
border: 1px solid var(--consent-border);
|
|
530
|
+
box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.15), 0 4px 6px -2px rgba(15, 23, 42, 0.05);
|
|
531
|
+
cursor: pointer;
|
|
532
|
+
padding: 0;
|
|
533
|
+
margin: 0;
|
|
534
|
+
transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s ease, border-color 0.2s ease, color 0.2s ease;
|
|
535
|
+
outline: none;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.consent-floating-badge-btn.has-label {
|
|
539
|
+
width: auto;
|
|
540
|
+
padding: 0 1rem;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.consent-floating-badge-btn:hover {
|
|
544
|
+
transform: translateY(-2px);
|
|
545
|
+
box-shadow: 0 14px 28px -6px rgba(15, 23, 42, 0.2), 0 6px 10px -3px rgba(15, 23, 42, 0.08);
|
|
546
|
+
border-color: var(--consent-accent);
|
|
547
|
+
color: var(--consent-accent);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.consent-floating-badge-btn:active {
|
|
551
|
+
transform: translateY(0) scale(0.96);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.consent-floating-badge-btn:focus-visible {
|
|
555
|
+
box-shadow: 0 0 0 3px var(--consent-focus-ring), 0 10px 25px -5px rgba(15, 23, 42, 0.15);
|
|
556
|
+
border-color: var(--consent-accent);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
.consent-floating-badge-icon {
|
|
560
|
+
display: inline-flex;
|
|
561
|
+
align-items: center;
|
|
562
|
+
justify-content: center;
|
|
563
|
+
width: 22px;
|
|
564
|
+
height: 22px;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
.consent-floating-badge-text {
|
|
568
|
+
font-size: 0.85rem;
|
|
569
|
+
font-weight: 600;
|
|
570
|
+
white-space: nowrap;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.consent-floating-badge-tooltip {
|
|
574
|
+
position: absolute;
|
|
575
|
+
white-space: nowrap;
|
|
576
|
+
pointer-events: none;
|
|
577
|
+
opacity: 0;
|
|
578
|
+
visibility: hidden;
|
|
579
|
+
background: var(--consent-primary);
|
|
580
|
+
color: var(--consent-primary-fg);
|
|
581
|
+
font-size: 0.76rem;
|
|
582
|
+
font-weight: 500;
|
|
583
|
+
padding: 0.4rem 0.75rem;
|
|
584
|
+
border-radius: 8px;
|
|
585
|
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
|
|
586
|
+
transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
|
|
587
|
+
z-index: 2147483641;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.consent-floating-badge--bottom-left .consent-floating-badge-tooltip {
|
|
591
|
+
bottom: calc(100% + 8px);
|
|
592
|
+
left: 0;
|
|
593
|
+
transform: translateY(4px);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.consent-floating-badge--bottom-right .consent-floating-badge-tooltip {
|
|
597
|
+
bottom: calc(100% + 8px);
|
|
598
|
+
right: 0;
|
|
599
|
+
transform: translateY(4px);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
.consent-floating-badge--top-left .consent-floating-badge-tooltip {
|
|
603
|
+
top: calc(100% + 8px);
|
|
604
|
+
left: 0;
|
|
605
|
+
transform: translateY(-4px);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.consent-floating-badge--top-right .consent-floating-badge-tooltip {
|
|
609
|
+
top: calc(100% + 8px);
|
|
610
|
+
right: 0;
|
|
611
|
+
transform: translateY(-4px);
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.consent-floating-badge-inner:hover .consent-floating-badge-tooltip,
|
|
615
|
+
.consent-floating-badge-btn:focus-visible + .consent-floating-badge-tooltip {
|
|
616
|
+
opacity: 1;
|
|
617
|
+
visibility: visible;
|
|
618
|
+
transform: translateY(0);
|
|
619
|
+
}
|
|
620
|
+
`,document.head.appendChild(t)}var Le=class{constructor(){this.element=null}render(e,t){var g,b,v,y,x,E,_;if(typeof document=="undefined")return;this.remove(),Q((g=e.csp)==null?void 0:g.nonce);let o=((b=e.ui)==null?void 0:b.banner)||{},n=p(o.title||"Tu privacidad, bajo tu control"),i=p(o.description||"Usamos tecnolog\xEDas necesarias para el funcionamiento del sitio. Con tu permiso, tambi\xE9n podemos utilizar anal\xEDtica y marketing."),s=p(o.accept||"Aceptar todas"),a=p(o.reject||"Rechazar todas"),c=p(o.configure||"Configurar"),l=p(o.cookiesPolicy||"Pol\xEDtica de cookies"),d=p(o.privacyPolicy||"Pol\xEDtica de privacidad"),f=p(o.ariaLabel||"Gesti\xF3n de consentimiento de privacidad"),u=_e(((v=e.policy)==null?void 0:v.privacyUrl)||"/politica-privacidad"),h=_e(((y=e.policy)==null?void 0:y.cookiesUrl)||"/politica-cookies"),m=document.createElement("div");m.className="consent-banner-wrapper",m.setAttribute("role","region"),m.setAttribute("aria-label",f),m.innerHTML=`
|
|
475
621
|
<div class="consent-banner-container">
|
|
476
622
|
<div class="consent-banner-text">
|
|
477
623
|
<h2 class="consent-banner-title">
|
|
@@ -480,110 +626,346 @@
|
|
|
480
626
|
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
481
627
|
</svg>
|
|
482
628
|
</span>
|
|
483
|
-
${
|
|
629
|
+
${n}
|
|
484
630
|
</h2>
|
|
485
|
-
<p class="consent-banner-desc">${
|
|
631
|
+
<p class="consent-banner-desc">${i}</p>
|
|
486
632
|
<div class="consent-banner-links">
|
|
487
|
-
<a href="${
|
|
488
|
-
<a href="${
|
|
633
|
+
<a href="${h}" target="_blank" rel="noopener">${l}</a>
|
|
634
|
+
<a href="${u}" target="_blank" rel="noopener">${d}</a>
|
|
489
635
|
</div>
|
|
490
636
|
</div>
|
|
491
637
|
<div class="consent-banner-actions">
|
|
492
638
|
<button type="button" class="consent-btn consent-btn-reject" id="consent-btn-reject">
|
|
493
|
-
${
|
|
639
|
+
${a}
|
|
494
640
|
</button>
|
|
495
641
|
<button type="button" class="consent-btn consent-btn-configure" id="consent-btn-configure">
|
|
496
|
-
${
|
|
642
|
+
${c}
|
|
497
643
|
</button>
|
|
498
644
|
<button type="button" class="consent-btn consent-btn-accept" id="consent-btn-accept">
|
|
499
|
-
${
|
|
645
|
+
${s}
|
|
500
646
|
</button>
|
|
501
647
|
</div>
|
|
502
648
|
</div>
|
|
503
|
-
`,(
|
|
649
|
+
`,(x=m.querySelector("#consent-btn-reject"))==null||x.addEventListener("click",()=>{t.onRejectAll(),this.remove()}),(E=m.querySelector("#consent-btn-configure"))==null||E.addEventListener("click",()=>{t.onConfigure()}),(_=m.querySelector("#consent-btn-accept"))==null||_.addEventListener("click",()=>{t.onAcceptAll(),this.remove()}),document.body.appendChild(m),this.element=m}getIsVisible(){return this.element!==null}remove(){this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.element=null)}};var Ee=class{constructor(){this.backdrop=null;this.lastFocusedElement=null}render(e,t,o){var oe,ie,ne,w,I,ue,je;if(typeof document=="undefined")return;this.close(),Q((oe=e.csp)==null?void 0:oe.nonce),this.lastFocusedElement=document.activeElement;let n=((ie=e.ui)==null?void 0:ie.preferences)||{},i=p(n.title||"Preferencias de privacidad"),s=p(n.subtitle||"Gestiona tus permisos de almacenamiento por finalidad (LSSI art. 22.2 & RGPD)."),a=p(n.save||"Guardar selecci\xF3n"),c=p(n.acceptAll||"Permitir todas"),l=p(n.rejectAll||"Rechazar opcionales"),d=p(n.closeLabel||"Cerrar ventana"),f=p(n.requiredBadge||"Requerida"),u=p(n.optionalBadge||"Opcional"),h=p(n.servicesLabel||"Servicios incluidos"),m=p(n.viewServices||"Ver servicios"),g=p(n.hideServices||"Ocultar servicios"),b=p(n.thirdParty||"Terceros"),v=document.createElement("div");v.className="consent-dialog-backdrop";let y=document.createElement("div");y.className="consent-dialog",y.setAttribute("role","dialog"),y.setAttribute("aria-modal","true"),y.setAttribute("aria-labelledby","consent-dialog-title-id");let x=document.createElement("div");x.className="consent-dialog-header",x.innerHTML=`
|
|
504
650
|
<div>
|
|
505
|
-
<h2 class="consent-dialog-title" id="consent-dialog-title-id">${
|
|
651
|
+
<h2 class="consent-dialog-title" id="consent-dialog-title-id">${i}</h2>
|
|
506
652
|
<p style="margin: 0.2rem 0 0 0; font-size: 0.84rem; color: var(--consent-muted); font-weight: 400;">
|
|
507
|
-
|
|
653
|
+
${s}
|
|
508
654
|
</p>
|
|
509
655
|
</div>
|
|
510
|
-
<button type="button" class="consent-dialog-close" aria-label="
|
|
656
|
+
<button type="button" class="consent-dialog-close" aria-label="${d}">
|
|
511
657
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round">
|
|
512
658
|
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
513
659
|
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
514
660
|
</svg>
|
|
515
661
|
</button>
|
|
516
|
-
`;let
|
|
517
|
-
<div class="consent-category-services" id="cat-services-${
|
|
662
|
+
`;let E=document.createElement("div");E.className="consent-dialog-body";let _=C({},t);for(let[k,U]of Object.entries(e.categories)){let A=document.createElement("div");A.className="consent-category-row";let j=U.required===!0,Fe=j?!0:(ne=_[k])!=null?ne:!1,N=e.services?Object.entries(e.services).filter(([D,$])=>$.category===k):[],De="";if(N.length>0&&(De=`
|
|
663
|
+
<div class="consent-category-services" id="cat-services-${k}" style="display: none; margin-top: 0.75rem; padding-top: 0.6rem; border-top: 1px dashed var(--consent-divider); font-size: 0.82rem;">
|
|
518
664
|
<div style="font-weight: 600; color: var(--consent-muted); margin-bottom: 0.4rem; font-size: 0.75rem; letter-spacing: 0.02em;">
|
|
519
|
-
|
|
665
|
+
${h} (${N.length})
|
|
520
666
|
</div>
|
|
521
667
|
<div style="display: flex; flex-direction: column; gap: 0.3rem;">
|
|
522
|
-
${
|
|
668
|
+
${N.map(([D,$])=>`
|
|
523
669
|
<div style="display: flex; justify-content: space-between; align-items: center; padding: 0.2rem 0;">
|
|
524
|
-
<span style="font-weight: 500;">${
|
|
525
|
-
<span style="color: var(--consent-muted); font-size: 0.78rem;">${
|
|
670
|
+
<span style="font-weight: 500;">${p($.label||D)}</span>
|
|
671
|
+
<span style="color: var(--consent-muted); font-size: 0.78rem;">${p($.provider||b)}</span>
|
|
526
672
|
</div>
|
|
527
673
|
`).join("")}
|
|
528
674
|
</div>
|
|
529
675
|
</div>
|
|
530
|
-
`),
|
|
676
|
+
`),A.innerHTML=`
|
|
531
677
|
<div class="consent-category-header">
|
|
532
678
|
<div style="flex: 1; padding-right: 1rem;">
|
|
533
679
|
<div style="display: flex; align-items: center; gap: 0.4rem;">
|
|
534
|
-
<span class="consent-category-name">${
|
|
535
|
-
${j
|
|
680
|
+
<span class="consent-category-name">${p(U.label)}</span>
|
|
681
|
+
${j?`<span class="consent-badge consent-badge-required">${f}</span>`:`<span class="consent-badge consent-badge-optional">${u}</span>`}
|
|
536
682
|
</div>
|
|
537
|
-
<p class="consent-category-desc">${
|
|
538
|
-
${
|
|
539
|
-
|
|
683
|
+
<p class="consent-category-desc">${p(U.description)}</p>
|
|
684
|
+
${N.length>0?`<button type="button" class="consent-toggle-services-btn" data-target="cat-services-${k}">
|
|
685
|
+
${m} (${N.length}) \u25BE
|
|
540
686
|
</button>`:""}
|
|
541
687
|
</div>
|
|
542
688
|
<label class="consent-toggle">
|
|
543
|
-
<input type="checkbox" id="cat-toggle-${
|
|
689
|
+
<input type="checkbox" id="cat-toggle-${k}" ${Fe?"checked":""} ${j?"disabled":""}>
|
|
544
690
|
<span class="consent-toggle-slider"></span>
|
|
545
691
|
</label>
|
|
546
692
|
</div>
|
|
547
|
-
${
|
|
548
|
-
`,!j){let
|
|
693
|
+
${De}
|
|
694
|
+
`,!j){let D=A.querySelector(`#cat-toggle-${k}`);D==null||D.addEventListener("change",$=>{_[k]=$.target.checked})}let me=A.querySelector(".consent-toggle-services-btn");me&&me.addEventListener("click",()=>{let D=me.getAttribute("data-target");if(D){let $=A.querySelector(`#${D}`);if($){let Be=$.style.display==="none";$.style.display=Be?"block":"none",me.textContent=Be?`${g} (${N.length}) \u25B4`:`${m} (${N.length}) \u25BE`}}}),E.appendChild(A)}let T=document.createElement("div");T.className="consent-dialog-footer",T.innerHTML=`
|
|
549
695
|
<button type="button" class="consent-btn consent-btn-reject" id="consent-pref-reject">
|
|
550
|
-
${
|
|
696
|
+
${l}
|
|
551
697
|
</button>
|
|
552
698
|
<div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
|
|
553
699
|
<button type="button" class="consent-btn consent-btn-configure" id="consent-pref-accept">
|
|
554
700
|
${c}
|
|
555
701
|
</button>
|
|
556
702
|
<button type="button" class="consent-btn consent-btn-accept" id="consent-pref-save">
|
|
557
|
-
${
|
|
703
|
+
${a}
|
|
704
|
+
</button>
|
|
705
|
+
</div>
|
|
706
|
+
`,y.appendChild(x),y.appendChild(E),y.appendChild(T),v.appendChild(y),(w=x.querySelector(".consent-dialog-close"))==null||w.addEventListener("click",()=>{o.onClose(),this.close()}),v.addEventListener("click",k=>{k.target===v&&(o.onClose(),this.close())}),(I=T.querySelector("#consent-pref-reject"))==null||I.addEventListener("click",()=>{o.onRejectAll(),this.close()}),(ue=T.querySelector("#consent-pref-accept"))==null||ue.addEventListener("click",()=>{o.onAcceptAll(),this.close()}),(je=T.querySelector("#consent-pref-save"))==null||je.addEventListener("click",()=>{o.onSave(_),this.close()});let te=k=>{if(k.key==="Escape"){o.onClose(),this.close();return}if(k.key==="Tab"){let U=y.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),A=U[0],j=U[U.length-1];k.shiftKey?document.activeElement===A&&(j==null||j.focus(),k.preventDefault()):document.activeElement===j&&(A==null||A.focus(),k.preventDefault())}};document.addEventListener("keydown",te),this._keyListener=te,document.body.appendChild(v),this.backdrop=v;let X=y.querySelector("button");X==null||X.focus()}getIsOpen(){return this.backdrop!==null}close(){this._keyListener&&(document.removeEventListener("keydown",this._keyListener),delete this._keyListener),this.backdrop&&this.backdrop.parentNode&&(this.backdrop.parentNode.removeChild(this.backdrop),this.backdrop=null),this.lastFocusedElement&&typeof this.lastFocusedElement.focus=="function"&&(this.lastFocusedElement.focus(),this.lastFocusedElement=null)}};var W=class{constructor(){this.element=null;this.isVisible=!1}getIconSvg(e){switch(e){case"shield":return`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
707
|
+
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
708
|
+
<path d="m9 12 2 2 4-4"/>
|
|
709
|
+
</svg>`;case"settings":return`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
710
|
+
<circle cx="12" cy="12" r="3"/>
|
|
711
|
+
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/>
|
|
712
|
+
</svg>`;case"cookie":default:return`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
713
|
+
<path d="M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5"/>
|
|
714
|
+
<path d="M8.5 8.5v.01"/>
|
|
715
|
+
<path d="M16 15.5v.01"/>
|
|
716
|
+
<path d="M12 12v.01"/>
|
|
717
|
+
<path d="M11 17v.01"/>
|
|
718
|
+
<path d="M7 13v.01"/>
|
|
719
|
+
</svg>`}}render(e,t){var u,h,m;if(typeof document=="undefined")return;this.remove(),Q((u=e.csp)==null?void 0:u.nonce);let o=typeof((h=e.ui)==null?void 0:h.floatingBadge)=="object"&&((m=e.ui)==null?void 0:m.floatingBadge)!==null?e.ui.floatingBadge:{},n=o.position||"bottom-left",i=o.label?p(o.label):"",s=o.ariaLabel?p(o.ariaLabel):i||"Configuraci\xF3n y revocaci\xF3n de cookies",a=o.tooltip?p(o.tooltip):i||"Configurar o declinar cookies",c=o.showLabel===!0&&!!i,l=this.getIconSvg(o.icon),d=document.createElement("div");d.className=`consent-floating-badge consent-floating-badge--${n}`,d.setAttribute("role","complementary"),d.setAttribute("aria-label",s),d.innerHTML=`
|
|
720
|
+
<div class="consent-floating-badge-inner">
|
|
721
|
+
<button
|
|
722
|
+
type="button"
|
|
723
|
+
class="consent-floating-badge-btn ${c?"has-label":""}"
|
|
724
|
+
id="consent-floating-trigger"
|
|
725
|
+
data-consent-open
|
|
726
|
+
aria-label="${s}"
|
|
727
|
+
>
|
|
728
|
+
<span class="consent-floating-badge-icon" aria-hidden="true">
|
|
729
|
+
${l}
|
|
730
|
+
</span>
|
|
731
|
+
${c?`<span class="consent-floating-badge-text">${i}</span>`:""}
|
|
558
732
|
</button>
|
|
733
|
+
<div class="consent-floating-badge-tooltip" role="tooltip" aria-hidden="true">
|
|
734
|
+
${a}
|
|
735
|
+
</div>
|
|
559
736
|
</div>
|
|
560
|
-
|
|
561
|
-
<div class="
|
|
562
|
-
<table style="width: 100%; border-collapse: collapse; text-align: left;
|
|
737
|
+
`;let f=d.querySelector("#consent-floating-trigger");f==null||f.addEventListener("click",g=>{g.preventDefault(),t.onClick()}),document.body.appendChild(d),this.element=d}show(){this.element&&(this.element.classList.add("is-visible"),this.isVisible=!0)}hide(){this.element&&(this.element.classList.remove("is-visible"),this.isVisible=!1)}getIsVisible(){return this.isVisible}hasElement(){return this.element!==null}getElement(){return this.element}remove(){this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.element=null,this.isVisible=!1)}};var Y=class r{static runDiagnostic(e,t){let o=[];return typeof document!="undefined"&&document.querySelectorAll("script[src]").forEach(i=>{let s=i.getAttribute("src");s&&(s.startsWith("http://")||s.startsWith("https://"))&&o.push(s)}),{timestamp:new Date().toISOString(),unblockedThirdPartyScripts:t?[]:o,compliant:t||o.length===0}}scanThirdPartyResources(){return r.runDiagnostic({},!0).unblockedThirdPartyScripts}};var L=class{static extractCookieRows(e){var n,i,s,a,c,l,d,f,u,h;let t=[];if(e.services)for(let[m,g]of Object.entries(e.services)){let b=e.categories[g.category||"necessary"]||{label:g.category||"General"},v=g.provider||g.label||m;if(g.cookies&&g.cookies.length>0)for(let y of g.cookies)t.push({name:y.name,type:"Cookie",provider:v,purpose:y.purpose||g.description||b.description||"Funcionalidad del servicio",duration:y.duration||"Persistente",categoryLabel:b.label,policyUrl:g.policyUrl});if(g.storageKeys&&g.storageKeys.length>0)for(let y of g.storageKeys)t.push({name:y,type:"localStorage",provider:v,purpose:g.description||b.description||"Almacenamiento de estado y preferencias",duration:"Persistente",categoryLabel:b.label,policyUrl:g.policyUrl});if(g.localStorage&&g.localStorage.length>0)for(let y of g.localStorage)t.push({name:y,type:"localStorage",provider:v,purpose:g.description||b.description||"Almacenamiento web local",duration:"Persistente",categoryLabel:b.label,policyUrl:g.policyUrl});if(g.sessionStorage&&g.sessionStorage.length>0)for(let y of g.sessionStorage)t.push({name:y,type:"sessionStorage",provider:v,purpose:g.description||b.description||"Almacenamiento temporal de sesi\xF3n",duration:"Sesi\xF3n",categoryLabel:b.label,policyUrl:g.policyUrl});!((n=g.cookies)!=null&&n.length)&&!((i=g.storageKeys)!=null&&i.length)&&!((s=g.localStorage)!=null&&s.length)&&!((a=g.sessionStorage)!=null&&a.length)&&t.push({name:m,type:"Cookie",provider:v,purpose:g.description||b.description||"Servicio integrado",duration:"Variable",categoryLabel:b.label,policyUrl:g.policyUrl})}if(e.categories)for(let[,m]of Object.entries(e.categories)){if(m.storageKeys)for(let g of m.storageKeys)t.some(b=>b.name===g)||t.push({name:g,type:"localStorage",provider:"Propia / Sitio Web",purpose:m.description,duration:"Persistente",categoryLabel:m.label});if(m.localStorage)for(let g of m.localStorage)t.some(b=>b.name===g)||t.push({name:g,type:"localStorage",provider:"Propia / Sitio Web",purpose:m.description,duration:"Persistente",categoryLabel:m.label});if(m.sessionStorage)for(let g of m.sessionStorage)t.some(b=>b.name===g)||t.push({name:g,type:"sessionStorage",provider:"Propia / Sitio Web",purpose:m.description,duration:"Sesi\xF3n",categoryLabel:m.label})}let o=((c=e.storage)==null?void 0:c.name)||"site_consent";return t.some(m=>m.name===o)||t.unshift({name:o,type:((l=e.storage)==null?void 0:l.type)==="memory"?"localStorage":"Cookie",provider:"Propia (Solvenza Cookies Compliance)",purpose:"Guarda las preferencias y recibo firmado de consentimiento del usuario.",duration:`${(f=(d=e.consent)==null?void 0:d.maxAgeDays)!=null?f:365} d\xEDas`,categoryLabel:((h=(u=e.categories)==null?void 0:u.necessary)==null?void 0:h.label)||"Necesarias"}),t}static renderTable(e,t={}){let o=t.theme==="dark",n=o?"#1e293b":"#f8fafc",i=o?"#334155":"#e2e8f0",s=o?"#f8fafc":"#0f172a",a=o?"#94a3b8":"#64748b",c=o?"#0f172a":"#ffffff",l=o?"#1e293b":"#f8fafc",d=`
|
|
738
|
+
<div class="solvenza-policy-table-wrapper" style="overflow-x: auto; margin: 1.5rem 0; border: 1px solid ${i}; border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: system-ui, -apple-system, sans-serif;">
|
|
739
|
+
<table style="width: 100%; border-collapse: collapse; text-align: left; font-size: 0.88rem; color: ${s};">
|
|
563
740
|
<thead>
|
|
564
|
-
<tr style="background:
|
|
565
|
-
<th style="padding: 0.
|
|
566
|
-
<th style="padding: 0.
|
|
567
|
-
<th style="padding: 0.
|
|
568
|
-
<th style="padding: 0.
|
|
741
|
+
<tr style="background: ${n}; border-bottom: 2px solid ${i};">
|
|
742
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Nombre / Clave</th>
|
|
743
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Tipo</th>
|
|
744
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Categor\xEDa</th>
|
|
745
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Proveedor</th>
|
|
746
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Finalidad</th>
|
|
747
|
+
<th style="padding: 0.85rem 1rem; font-weight: 700;">Duraci\xF3n</th>
|
|
569
748
|
</tr>
|
|
570
749
|
</thead>
|
|
571
750
|
<tbody>
|
|
572
|
-
|
|
573
|
-
<tr
|
|
574
|
-
<td style="padding:
|
|
575
|
-
|
|
751
|
+
`,f=this.extractCookieRows(e);return f.length===0?d+=`
|
|
752
|
+
<tr>
|
|
753
|
+
<td colspan="6" style="padding: 1.5rem; text-align: center; color: ${a};">
|
|
754
|
+
No se han registrado cookies ni elementos de almacenamiento en la configuraci\xF3n.
|
|
755
|
+
</td>
|
|
576
756
|
</tr>
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
</
|
|
584
|
-
|
|
757
|
+
`:f.forEach((u,h)=>{let m=h%2===0?c:l,g=u.policyUrl?`<a href="${p(u.policyUrl)}" target="_blank" rel="noopener noreferrer" style="color: #2563eb; text-decoration: underline;">${p(u.provider)} \u2197</a>`:p(u.provider);d+=`
|
|
758
|
+
<tr style="background: ${m}; border-bottom: 1px solid ${i};">
|
|
759
|
+
<td style="padding: 0.75rem 1rem; font-family: monospace; font-weight: 600; color: #2563eb;">${p(u.name)}</td>
|
|
760
|
+
<td style="padding: 0.75rem 1rem;">
|
|
761
|
+
<span style="display: inline-block; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.75rem; font-weight: 600; background: ${u.type==="Cookie"?"#e0e7ff":"#fef3c7"}; color: ${u.type==="Cookie"?"#3730a3":"#92400e"};">
|
|
762
|
+
${u.type}
|
|
763
|
+
</span>
|
|
764
|
+
</td>
|
|
765
|
+
<td style="padding: 0.75rem 1rem; font-weight: 500;">${p(u.categoryLabel)}</td>
|
|
766
|
+
<td style="padding: 0.75rem 1rem;">${g}</td>
|
|
767
|
+
<td style="padding: 0.75rem 1rem; color: ${a};">${p(u.purpose)}</td>
|
|
768
|
+
<td style="padding: 0.75rem 1rem; white-space: nowrap;">${p(u.duration)}</td>
|
|
769
|
+
</tr>
|
|
770
|
+
`}),d+=`
|
|
585
771
|
</tbody>
|
|
586
772
|
</table>
|
|
587
773
|
</div>
|
|
588
|
-
`,
|
|
774
|
+
`,d}static renderCookiePolicy(e,t={}){var u,h,m;if(t.view==="table-only")return this.renderTable(e,t);let o=((u=e.legalEntity)==null?void 0:u.tradeName)||((h=e.legalEntity)==null?void 0:h.name)||"el Titular del Sitio Web",n=((m=e.legalNotice)==null?void 0:m.lastUpdated)||e.policyVersion||new Date().toISOString().split("T")[0],i=t.theme==="dark",s=i?"#f8fafc":"#0f172a",a=i?"#94a3b8":"#475569",c=i?"#1e293b":"#ffffff",l=i?"#334155":"#e2e8f0",d=this.renderTable(e,t),f=`
|
|
775
|
+
<article class="solvenza-cookie-policy-document ${t.className||""}" style="font-family: system-ui, -apple-system, sans-serif; color: ${s}; line-height: 1.7; max-width: 900px; margin: 0 auto; padding: 1rem 0;">
|
|
776
|
+
<header style="margin-bottom: 2rem; border-bottom: 1px solid ${l}; padding-bottom: 1.5rem;">
|
|
777
|
+
<h1 style="font-size: 1.85rem; font-weight: 800; margin: 0 0 0.5rem 0; color: ${s};">Pol\xEDtica de Cookies</h1>
|
|
778
|
+
<p style="margin: 0; font-size: 0.9rem; color: ${a};">
|
|
779
|
+
Conforme al art\xEDculo 22.2 de la Ley 34/2002 (LSSI-CE), el RGPD (UE 2016/679) y la Gu\xEDa sobre el uso de cookies de la AEPD.
|
|
780
|
+
<br><em>\xDAltima actualizaci\xF3n: ${p(n)}</em>
|
|
781
|
+
</p>
|
|
782
|
+
</header>
|
|
783
|
+
|
|
784
|
+
<section style="margin-bottom: 2rem;">
|
|
785
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s};">1. \xBFQu\xE9 son las cookies y tecnolog\xEDas de almacenamiento local?</h2>
|
|
786
|
+
<p style="color: ${a};">
|
|
787
|
+
Este sitio web, titularidad de <strong>${p(o)}</strong>, utiliza cookies y tecnolog\xEDas de almacenamiento similares (tales como <code>localStorage</code>, <code>sessionStorage</code>, p\xEDxeles de seguimiento y etiquetas) para garantizar el funcionamiento t\xE9cnico del sitio, optimizar la experiencia de navegaci\xF3n, medir el uso de la web y, en su caso, mostrar contenidos personalizados o multimedia.
|
|
788
|
+
</p>
|
|
789
|
+
<p style="color: ${a};">
|
|
790
|
+
Una <strong>cookie</strong> es un peque\xF1o fichero de texto que se descarga y almacena en el navegador del usuario al acceder a determinadas p\xE1ginas web. Permite a una p\xE1gina web, entre otras cosas, recordar las preferencias de navegaci\xF3n, almacenar y recuperar informaci\xF3n sobre los h\xE1bitos de visita y reconocer al usuario en visitas posteriores.
|
|
791
|
+
</p>
|
|
792
|
+
</section>
|
|
793
|
+
|
|
794
|
+
<section style="margin-bottom: 2rem;">
|
|
795
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s};">2. Tipos de cookies y finalidades utilizadas</h2>
|
|
796
|
+
<p style="color: ${a};">
|
|
797
|
+
En funci\xF3n de su finalidad, titularidad y plazo de permanencia, en este sitio web se utilizan las siguientes categor\xEDas:
|
|
798
|
+
</p>
|
|
799
|
+
<ul style="color: ${a}; padding-left: 1.5rem; margin-bottom: 1.5rem;">
|
|
800
|
+
`;for(let[,g]of Object.entries(e.categories)){let b=g.required===!0;f+=`
|
|
801
|
+
<li style="margin-bottom: 0.6rem;">
|
|
802
|
+
<strong>${p(g.label)}</strong> (${b?"T\xE9cnicas / Exentas de consentimiento":"Opcionales / Sujetas a consentimiento"}):
|
|
803
|
+
${p(g.description)}
|
|
804
|
+
</li>
|
|
805
|
+
`}return f+=`
|
|
806
|
+
</ul>
|
|
807
|
+
|
|
808
|
+
<h3 style="font-size: 1.1rem; font-weight: 700; color: ${s}; margin-top: 1.5rem;">Inventario detallado de cookies y almacenamiento web</h3>
|
|
809
|
+
<p style="color: ${a}; font-size: 0.9rem;">
|
|
810
|
+
A continuaci\xF3n se detallan de forma transparente todas las cookies y claves de almacenamiento registradas en la aplicaci\xF3n:
|
|
811
|
+
</p>
|
|
812
|
+
${d}
|
|
813
|
+
</section>
|
|
814
|
+
|
|
815
|
+
<section style="margin-bottom: 2rem; background: ${c}; border: 1px solid ${l}; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 4px rgba(0,0,0,0.03);">
|
|
816
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s}; margin-top: 0;">3. Gesti\xF3n, configuraci\xF3n y revocaci\xF3n del consentimiento</h2>
|
|
817
|
+
<p style="color: ${a};">
|
|
818
|
+
De acuerdo con las directrices de la Agencia Espa\xF1ola de Protecci\xF3n de Datos (AEPD), retirar o modificar el consentimiento debe ser tan f\xE1cil como otorgarlo. Puedes modificar tus preferencias o revocar el consentimiento en cualquier momento:
|
|
819
|
+
</p>
|
|
820
|
+
<div style="display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.25rem;">
|
|
821
|
+
<button
|
|
822
|
+
type="button"
|
|
823
|
+
data-consent-open
|
|
824
|
+
onclick="if(window.Consent) window.Consent.openPreferences()"
|
|
825
|
+
style="background: #0f172a; color: #ffffff; border: none; padding: 0.65rem 1.3rem; border-radius: 8px; font-weight: 600; font-size: 0.9rem; cursor: pointer; display: inline-flex; align-items: center; gap: 0.5rem;"
|
|
826
|
+
>
|
|
827
|
+
\u2699\uFE0F Abrir panel de preferencias de cookies
|
|
828
|
+
</button>
|
|
829
|
+
<button
|
|
830
|
+
type="button"
|
|
831
|
+
onclick="if(window.Consent) window.Consent.withdraw()"
|
|
832
|
+
style="background: #ffffff; color: #dc2626; border: 1px solid #fca5a5; padding: 0.65rem 1.3rem; border-radius: 8px; font-weight: 600; font-size: 0.9rem; cursor: pointer; display: inline-flex; align-items: center; gap: 0.5rem;"
|
|
833
|
+
>
|
|
834
|
+
\u{1F504} Revocar consentimiento y purgar datos
|
|
835
|
+
</button>
|
|
836
|
+
</div>
|
|
837
|
+
</section>
|
|
838
|
+
|
|
839
|
+
<section style="margin-bottom: 2rem;">
|
|
840
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s};">4. C\xF3mo deshabilitar o eliminar las cookies en los navegadores</h2>
|
|
841
|
+
<p style="color: ${a};">
|
|
842
|
+
El usuario puede permitir, bloquear o eliminar las cookies instaladas en su equipo mediante la configuraci\xF3n de las opciones de su navegador web:
|
|
843
|
+
</p>
|
|
844
|
+
<ul style="color: #2563eb; padding-left: 1.5rem;">
|
|
845
|
+
<li style="margin-bottom: 0.4rem;"><a href="https://support.google.com/chrome/answer/95647" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: underline;">Google Chrome</a></li>
|
|
846
|
+
<li style="margin-bottom: 0.4rem;"><a href="https://support.mozilla.org/es/kb/habilitar-y-deshabilitar-cookies-sitios-web-rastrear-preferencias" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: underline;">Mozilla Firefox</a></li>
|
|
847
|
+
<li style="margin-bottom: 0.4rem;"><a href="https://support.apple.com/es-es/guide/safari/sfri11471/mac" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: underline;">Apple Safari</a></li>
|
|
848
|
+
<li style="margin-bottom: 0.4rem;"><a href="https://support.microsoft.com/es-es/microsoft-edge/eliminar-las-cookies-en-microsoft-edge-63947406-40ac-c3b8-57b9-2a946a29ae09" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: underline;">Microsoft Edge</a></li>
|
|
849
|
+
<li style="margin-bottom: 0.4rem;"><a href="https://help.opera.com/en/latest/web-preferences/#cookies" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: underline;">Opera Browser</a></li>
|
|
850
|
+
</ul>
|
|
851
|
+
</section>
|
|
852
|
+
|
|
853
|
+
<section style="margin-bottom: 2rem;">
|
|
854
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s};">5. Reconocimiento de Global Privacy Control (GPC)</h2>
|
|
855
|
+
<p style="color: ${a};">
|
|
856
|
+
Este sitio web est\xE1 adaptado al est\xE1ndar <strong>Global Privacy Control (GPC)</strong> y a la cabecera <code>Do Not Track (DNT)</code>. Si tu navegador emite una se\xF1al universal de no seguimiento, nuestro sistema desactivar\xE1 autom\xE1ticamente todas las cookies no necesarias sin requerir interacci\xF3n manual.
|
|
857
|
+
</p>
|
|
858
|
+
</section>
|
|
859
|
+
|
|
860
|
+
<section style="margin-bottom: 2rem;">
|
|
861
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${s};">6. Transferencias internacionales de datos</h2>
|
|
862
|
+
<p style="color: ${a};">
|
|
863
|
+
Determinadas cookies de terceros (tales como Google Analytics o Meta) pueden implicar la transferencia internacional de datos a servidores ubicados en Estados Unidos u otros pa\xEDses fuera del Espacio Econ\xF3mico Europeo (EEE). Dichas transferencias se encuentran amparadas bajo el Marco de Privacidad de Datos UE-EE.UU. (Data Privacy Framework) o Cl\xE1usulas Contractuales Tipo aprobadas por la Comisi\xF3n Europea.
|
|
864
|
+
</p>
|
|
865
|
+
</section>
|
|
866
|
+
</article>
|
|
867
|
+
`,f}static renderLegalNotice(e,t={}){var f,u,h;let o=e.legalEntity||{name:"[Raz\xF3n Social del Titular]",taxId:"[NIF / CIF]",address:"[Domicilio Social]",email:"[Email de Contacto]"},n=((f=e.legalNotice)==null?void 0:f.applicableLaw)||"Legislaci\xF3n espa\xF1ola (LSSI-CE, LOPDGDD) y Reglamento General de Protecci\xF3n de Datos (RGPD UE 2016/679)",i=((u=e.legalNotice)==null?void 0:u.jurisdiction)||"Juzgados y Tribunales competentes conforme a la normativa de consumidores y usuarios",s=((h=e.legalNotice)==null?void 0:h.lastUpdated)||e.policyVersion||new Date().toISOString().split("T")[0],a=t.theme==="dark",c=a?"#f8fafc":"#0f172a",l=a?"#94a3b8":"#475569",d=a?"#334155":"#e2e8f0";return`
|
|
868
|
+
<article class="solvenza-legal-notice-document ${t.className||""}" style="font-family: system-ui, -apple-system, sans-serif; color: ${c}; line-height: 1.7; max-width: 900px; margin: 0 auto; padding: 1rem 0;">
|
|
869
|
+
<header style="margin-bottom: 2rem; border-bottom: 1px solid ${d}; padding-bottom: 1.5rem;">
|
|
870
|
+
<h1 style="font-size: 1.85rem; font-weight: 800; margin: 0 0 0.5rem 0; color: ${c};">Aviso Legal</h1>
|
|
871
|
+
<p style="margin: 0; font-size: 0.9rem; color: ${l};">
|
|
872
|
+
En cumplimiento del art\xEDculo 10 de la Ley 34/2002, de 11 de julio, de Servicios de la Sociedad de la Informaci\xF3n y de Comercio Electr\xF3nico (LSSI-CE).
|
|
873
|
+
<br><em>\xDAltima actualizaci\xF3n: ${p(s)}</em>
|
|
874
|
+
</p>
|
|
875
|
+
</header>
|
|
876
|
+
|
|
877
|
+
<section style="margin-bottom: 2rem;">
|
|
878
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${c};">1. Datos identificativos del titular</h2>
|
|
879
|
+
<table style="width: 100%; border-collapse: collapse; margin-top: 1rem; border: 1px solid ${d};">
|
|
880
|
+
<tbody>
|
|
881
|
+
<tr style="border-bottom: 1px solid ${d};">
|
|
882
|
+
<td style="padding: 0.75rem 1rem; font-weight: 600; width: 30%;">Raz\xF3n Social:</td>
|
|
883
|
+
<td style="padding: 0.75rem 1rem; color: ${l};">${p(o.name)}</td>
|
|
884
|
+
</tr>
|
|
885
|
+
${o.tradeName?`<tr style="border-bottom: 1px solid ${d};"><td style="padding: 0.75rem 1rem; font-weight: 600;">Nombre Comercial:</td><td style="padding: 0.75rem 1rem; color: ${l};">${p(o.tradeName)}</td></tr>`:""}
|
|
886
|
+
<tr style="border-bottom: 1px solid ${d};">
|
|
887
|
+
<td style="padding: 0.75rem 1rem; font-weight: 600;">NIF / CIF:</td>
|
|
888
|
+
<td style="padding: 0.75rem 1rem; color: ${l};">${p(o.taxId||"-")}</td>
|
|
889
|
+
</tr>
|
|
890
|
+
<tr style="border-bottom: 1px solid ${d};">
|
|
891
|
+
<td style="padding: 0.75rem 1rem; font-weight: 600;">Domicilio Social:</td>
|
|
892
|
+
<td style="padding: 0.75rem 1rem; color: ${l};">${p(o.address||"-")}</td>
|
|
893
|
+
</tr>
|
|
894
|
+
<tr style="border-bottom: 1px solid ${d};">
|
|
895
|
+
<td style="padding: 0.75rem 1rem; font-weight: 600;">Correo Electr\xF3nico:</td>
|
|
896
|
+
<td style="padding: 0.75rem 1rem; color: ${l};"><a href="mailto:${p(o.email||"")}" style="color: #2563eb;">${p(o.email||"-")}</a></td>
|
|
897
|
+
</tr>
|
|
898
|
+
${o.phone?`<tr style="border-bottom: 1px solid ${d};"><td style="padding: 0.75rem 1rem; font-weight: 600;">Tel\xE9fono:</td><td style="padding: 0.75rem 1rem; color: ${l};">${p(o.phone)}</td></tr>`:""}
|
|
899
|
+
${o.registryData?`<tr style="border-bottom: 1px solid ${d};"><td style="padding: 0.75rem 1rem; font-weight: 600;">Datos Registrales:</td><td style="padding: 0.75rem 1rem; color: ${l};">${p(o.registryData)}</td></tr>`:""}
|
|
900
|
+
${o.dpoEmail?`<tr><td style="padding: 0.75rem 1rem; font-weight: 600;">Delegado de Protecci\xF3n de Datos (DPO):</td><td style="padding: 0.75rem 1rem; color: ${l};"><a href="mailto:${p(o.dpoEmail)}" style="color: #2563eb;">${p(o.dpoEmail)}</a></td></tr>`:""}
|
|
901
|
+
</tbody>
|
|
902
|
+
</table>
|
|
903
|
+
</section>
|
|
904
|
+
|
|
905
|
+
<section style="margin-bottom: 2rem;">
|
|
906
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${c};">2. Condiciones generales de uso</h2>
|
|
907
|
+
<p style="color: ${l};">
|
|
908
|
+
El acceso y/o uso de este sitio web atribuye la condici\xF3n de usuario, que acepta, desde dicho acceso y/o uso, las presentes condiciones generales. El usuario se compromete a hacer un uso adecuado de los contenidos y servicios que el titular ofrece a trav\xE9s de su sitio web y a no emplearlos para incurrir en actividades il\xEDcitas o contrarias a la buena fe y al orden p\xFAblico.
|
|
909
|
+
</p>
|
|
910
|
+
</section>
|
|
911
|
+
|
|
912
|
+
<section style="margin-bottom: 2rem;">
|
|
913
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${c};">3. Propiedad intelectual e industrial</h2>
|
|
914
|
+
<p style="color: ${l};">
|
|
915
|
+
Todos los derechos de propiedad intelectual e industrial sobre el dise\xF1o, marcas, logotipos, textos, c\xF3digo fuente e ilustraciones de este sitio web corresponden al titular o a sus leg\xEDtimos licenciantes. Queda expresamente prohibida la reproducci\xF3n, distribuci\xF3n o comunicaci\xF3n p\xFAblica de la totalidad o parte de los contenidos sin autorizaci\xF3n previa y por escrito.
|
|
916
|
+
</p>
|
|
917
|
+
</section>
|
|
918
|
+
|
|
919
|
+
<section style="margin-bottom: 2rem;">
|
|
920
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${c};">4. Exclusi\xF3n de garant\xEDas y responsabilidad</h2>
|
|
921
|
+
<p style="color: ${l};">
|
|
922
|
+
El titular no se hace responsable, en ning\xFAn caso, de los da\xF1os y perjuicios de cualquier naturaleza que pudieran ocasionar errores u omisiones en los contenidos, falta de disponibilidad del portal o la transmisi\xF3n de virus o programas maliciosos, a pesar de haber adoptado todas las medidas tecnol\xF3gicas necesarias para evitarlo.
|
|
923
|
+
</p>
|
|
924
|
+
</section>
|
|
925
|
+
|
|
926
|
+
<section style="margin-bottom: 2rem;">
|
|
927
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${c};">5. Legislaci\xF3n aplicable y jurisdicci\xF3n</h2>
|
|
928
|
+
<p style="color: ${l};">
|
|
929
|
+
Las relaciones entre el titular y el usuario se regir\xE1n por la <strong>${p(n)}</strong>. Para la resoluci\xF3n de cualquier controversia, las partes se someten a los <strong>${p(i)}</strong>, sin perjuicio de los fueros imperativos legales aplicables.
|
|
930
|
+
</p>
|
|
931
|
+
</section>
|
|
932
|
+
</article>
|
|
933
|
+
`}static renderPrivacyPolicy(e,t={}){let o=e.legalEntity||{name:"[Raz\xF3n Social del Responsable]",taxId:"[NIF / CIF]",address:"[Domicilio]",email:"privacidad@solvenza.es"},n=t.theme==="dark",i=n?"#f8fafc":"#0f172a",s=n?"#94a3b8":"#475569",a=n?"#334155":"#e2e8f0";return`
|
|
934
|
+
<article class="solvenza-privacy-policy-document ${t.className||""}" style="font-family: system-ui, -apple-system, sans-serif; color: ${i}; line-height: 1.7; max-width: 900px; margin: 0 auto; padding: 1rem 0;">
|
|
935
|
+
<header style="margin-bottom: 2rem; border-bottom: 1px solid ${a}; padding-bottom: 1.5rem;">
|
|
936
|
+
<h1 style="font-size: 1.85rem; font-weight: 800; margin: 0 0 0.5rem 0; color: ${i};">Pol\xEDtica de Privacidad y Protecci\xF3n de Datos</h1>
|
|
937
|
+
<p style="margin: 0; font-size: 0.9rem; color: ${s};">
|
|
938
|
+
Conforme al Reglamento General de Protecci\xF3n de Datos (RGPD UE 2016/679) y la Ley Org\xE1nica 3/2018 (LOPDGDD).
|
|
939
|
+
</p>
|
|
940
|
+
</header>
|
|
941
|
+
|
|
942
|
+
<section style="margin-bottom: 2rem;">
|
|
943
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${i};">1. Responsable del tratamiento</h2>
|
|
944
|
+
<p style="color: ${s};">
|
|
945
|
+
<strong>Identidad:</strong> ${p(o.name)}<br>
|
|
946
|
+
<strong>NIF / CIF:</strong> ${p(o.taxId||"-")}<br>
|
|
947
|
+
<strong>Direcci\xF3n:</strong> ${p(o.address||"-")}<br>
|
|
948
|
+
<strong>Correo electr\xF3nico:</strong> <a href="mailto:${p(o.email||"")}" style="color: #2563eb;">${p(o.email||"-")}</a><br>
|
|
949
|
+
${o.dpoEmail?`<strong>Contacto DPO:</strong> <a href="mailto:${p(o.dpoEmail)}" style="color: #2563eb;">${p(o.dpoEmail)}</a>`:""}
|
|
950
|
+
</p>
|
|
951
|
+
</section>
|
|
952
|
+
|
|
953
|
+
<section style="margin-bottom: 2rem;">
|
|
954
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${i};">2. Finalidad del tratamiento y base jur\xEDdica</h2>
|
|
955
|
+
<p style="color: ${s};">
|
|
956
|
+
Tratamos los datos facilitados por los usuarios con las finalidades de gestionar sus solicitudes, prestar los servicios contratados y, en su caso, analizar el rendimiento de la web y remitir comunicaciones comerciales sobre la base de su <strong>consentimiento expl\xEDcito</strong> (art. 6.1.a RGPD) o en la <strong>ejecuci\xF3n contractual</strong> (art. 6.1.b RGPD).
|
|
957
|
+
</p>
|
|
958
|
+
</section>
|
|
959
|
+
|
|
960
|
+
<section style="margin-bottom: 2rem;">
|
|
961
|
+
<h2 style="font-size: 1.3rem; font-weight: 700; color: ${i};">3. Derechos del interesado</h2>
|
|
962
|
+
<p style="color: ${s};">
|
|
963
|
+
Cualquier persona tiene derecho a obtener confirmaci\xF3n sobre si estamos tratando datos personales que le conciernen. Los interesados tienen derecho a acceder a sus datos personales, solicitar la rectificaci\xF3n de los datos inexactos o, en su caso, solicitar su supresi\xF3n cuando los datos ya no sean necesarios para los fines que fueron recogidos.
|
|
964
|
+
</p>
|
|
965
|
+
<p style="color: ${s};">
|
|
966
|
+
Puedes ejercer tus derechos de Acceso, Rectificaci\xF3n, Supresi\xF3n, Limitaci\xF3n, Portabilidad y Oposici\xF3n enviando un correo a <a href="mailto:${p(o.email||"")}" style="color: #2563eb;">${p(o.email||"")}</a>. Asimismo, puedes presentar una reclamaci\xF3n ante la Agencia Espa\xF1ola de Protecci\xF3n de Datos (<a href="https://www.aepd.es" target="_blank" rel="noopener noreferrer" style="color: #2563eb;">www.aepd.es</a>).
|
|
967
|
+
</p>
|
|
968
|
+
</section>
|
|
969
|
+
</article>
|
|
970
|
+
`}};var Ae={es:{ui:{banner:{title:"Tu privacidad, bajo tu control",description:"Usamos tecnolog\xEDas necesarias para el funcionamiento del sitio. Con tu permiso, tambi\xE9n podemos utilizar anal\xEDtica y marketing.",accept:"Aceptar todas",reject:"Rechazar todas",configure:"Configurar",cookiesPolicy:"Pol\xEDtica de cookies",privacyPolicy:"Pol\xEDtica de privacidad",ariaLabel:"Gesti\xF3n de consentimiento de privacidad"},preferences:{title:"Preferencias de privacidad",subtitle:"Gestiona tus permisos de almacenamiento por finalidad (LSSI art. 22.2 & RGPD).",save:"Guardar selecci\xF3n",acceptAll:"Permitir todas",rejectAll:"Rechazar opcionales",closeLabel:"Cerrar ventana",requiredBadge:"Requerida",optionalBadge:"Opcional",servicesLabel:"Servicios incluidos",viewServices:"Ver servicios",hideServices:"Ocultar servicios",thirdParty:"Terceros"},floatingBadge:{label:"Cookies",ariaLabel:"Configuraci\xF3n y revocaci\xF3n de cookies",tooltip:"Configurar o declinar cookies"}},categories:{necessary:{label:"Cookies T\xE9cnicas y Necesarias",description:"Imprescindibles para que el sitio web funcione y no pueden ser desactivadas."},analytics:{label:"Medici\xF3n y Rendimiento",description:"Nos permiten analizar las visitas y fuentes de tr\xE1fico para optimizar el sitio."},marketing:{label:"Publicidad Personalizada",description:"Utilizadas para mostrar anuncios relevantes seg\xFAn tus intereses y navegaci\xF3n."},preferences:{label:"Preferencias y Personalizaci\xF3n",description:"Permiten recordar informaci\xF3n que cambia el aspecto o comportamiento del sitio."}}},en:{ui:{banner:{title:"Your privacy, under your control",description:"We use essential technologies for our website to function. With your consent, we may also use analytics and marketing technologies.",accept:"Accept all",reject:"Reject all",configure:"Customize",cookiesPolicy:"Cookie policy",privacyPolicy:"Privacy policy",ariaLabel:"Privacy consent management"},preferences:{title:"Privacy Preferences",subtitle:"Manage your storage permissions by purpose (GDPR & ePrivacy compliant).",save:"Save preferences",acceptAll:"Allow all",rejectAll:"Reject optional",closeLabel:"Close dialog",requiredBadge:"Required",optionalBadge:"Optional",servicesLabel:"Included services",viewServices:"View services",hideServices:"Hide services",thirdParty:"Third-party"},floatingBadge:{label:"Cookies",ariaLabel:"Cookie preferences and revocation",tooltip:"Customize or decline cookies"}},categories:{necessary:{label:"Strictly Necessary Cookies",description:"Essential for the website to function properly and cannot be deactivated."},analytics:{label:"Performance & Analytics",description:"Help us understand visitor behavior and traffic sources to optimize performance."},marketing:{label:"Targeted Advertising",description:"Used to deliver relevant ads and track campaign effectiveness across websites."},preferences:{label:"Preferences & Personalization",description:"Enable the website to remember user choices like language and layout settings."}}},ca:{ui:{banner:{title:"La teva privacitat, sota el teu control",description:"Utilitzem tecnologies necess\xE0ries per al funcionament del lloc. Amb el teu perm\xEDs, tamb\xE9 podem utilitzar anal\xEDtica i m\xE0rqueting.",accept:"Acceptar-les totes",reject:"Rebutjar-les totes",configure:"Configurar",cookiesPolicy:"Pol\xEDtica de cookies",privacyPolicy:"Pol\xEDtica de privacitat",ariaLabel:"Gesti\xF3 de consentiment de privacitat"},preferences:{title:"Prefer\xE8ncies de privacitat",subtitle:"Gestiona els teus permisos d'emmagatzematge per finalitat (LSSI art. 22.2 & RGPD).",save:"Desar selecci\xF3",acceptAll:"Permetre-les totes",rejectAll:"Rebutjar opcionals",closeLabel:"Tancar finestra",requiredBadge:"Requerida",optionalBadge:"Opcional",servicesLabel:"Serveis inclosos",viewServices:"Veure serveis",hideServices:"Amagar serveis",thirdParty:"Tercers"},floatingBadge:{label:"Cookies",ariaLabel:"Configuraci\xF3 i revocaci\xF3 de cookies",tooltip:"Configurar o declinar cookies"}},categories:{necessary:{label:"Cookies T\xE8cniques i Necess\xE0ries",description:"Imprescindibles perqu\xE8 el lloc web funcioni correctament i no es poden desactivar."},analytics:{label:"Mesurament i Rendiment",description:"Ens permeten analitzar les visites i fonts de tr\xE0nsit per optimitzar el lloc."},marketing:{label:"Publicidad Personalitzada",description:"Utilitzades per mostrar anuncis rellevants segons els teus interessos i navegaci\xF3."},preferences:{label:"Prefer\xE8ncies i Personalitzaci\xF3",description:"Permeten recordar informaci\xF3 que canvia l'aspecte o comportament del lloc."}}},eu:{ui:{banner:{title:"Zure pribatutasuna, zure kontrolpean",description:"Webguneak funtzionatzeko beharrezkoak diren teknologiak erabiltzen ditugu. Zure baimenarekin, analitika eta marketina ere erabil ditzakegu.",accept:"Onartu guztiak",reject:"Baztertu guztiak",configure:"Konfiguratu",cookiesPolicy:"Cookie politika",privacyPolicy:"Pribatutasun politika",ariaLabel:"Pribatutasun-baimenen kudeaketa"},preferences:{title:"Pribatutasun-hobespenak",subtitle:"Kudeatu zure biltegiratze-baimenak helburuaren arabera (RGPD).",save:"Gorde hautapena",acceptAll:"Onartu guztiak",rejectAll:"Baztertu aukerakoak",closeLabel:"Itxi leihoa",requiredBadge:"Beharrezkoa",optionalBadge:"Aukerakoa",servicesLabel:"Barne dauden zerbitzuak",viewServices:"Ikusi zerbitzuak",hideServices:"Ezkutatu zerbitzuak",thirdParty:"Hirugarrenak"},floatingBadge:{label:"Cookieak",ariaLabel:"Cookien ezarpenak eta ezeztapena",tooltip:"Konfiguratu edo baztertu cookieak"}}},gl:{ui:{banner:{title:"A t\xFAa privacidade, baixo o teu control",description:"Empregamos tecnolox\xEDas necesarias para o funcionamento do sitio. Co teu permiso, tam\xE9n podemos utilizar anal\xEDtica e m\xE1rketing.",accept:"Aceptar todas",reject:"Rexeitar todas",configure:"Configurar",cookiesPolicy:"Pol\xEDtica de cookies",privacyPolicy:"Pol\xEDtica de privacidade",ariaLabel:"Xesti\xF3n de consentimento de privacidade"},preferences:{title:"Preferencias de privacidade",subtitle:"Xestiona os teus permisos de almacenamento por finalidade (LSSI art. 22.2 & RGPD).",save:"Gardar selecci\xF3n",acceptAll:"Permitir todas",rejectAll:"Rexeitar opcionais",closeLabel:"Pechar xanela",requiredBadge:"Requirida",optionalBadge:"Opcional",servicesLabel:"Servizos inclu\xEDdos",viewServices:"Ver servizos",hideServices:"Ocultar servizos",thirdParty:"Terceiros"},floatingBadge:{label:"Cookies",ariaLabel:"Configuraci\xF3n e revocaci\xF3n de cookies",tooltip:"Configurar ou declinar cookies"}}}},Z=class{constructor(e="es"){this.locale="es";this.locale=e}setLocale(e){this.locale=e.toLowerCase()}getLocale(){return this.locale}detectBrowserLocale(e){if(typeof navigator!="undefined"&&navigator.language){let t=navigator.language.split("-")[0].toLowerCase();if(e&&e.length>0){let o=e.map(n=>n.toLowerCase());return o.includes(t)?t:o[0]}return t}return"es"}isLocaleSupported(e,t){var n,i;let o=e.toLowerCase();return(n=t==null?void 0:t.locale)!=null&&n.supported&&t.locale.supported.length>0?t.locale.supported.map(s=>s.toLowerCase()).includes(o):t!=null&&t.translations&&t.translations[o]||Ae[o]?!0:o===(((i=t==null?void 0:t.locale)==null?void 0:i.default)||"es").toLowerCase()}detectParentLocale(e){var n,i,s,a,c,l;let t=(n=e==null?void 0:e.locale)==null?void 0:n.supported,o=(((i=e==null?void 0:e.locale)==null?void 0:i.default)||"es").toLowerCase();if(((s=e==null?void 0:e.locale)==null?void 0:s.syncHtmlLang)!==!1&&typeof document!="undefined"&&document.documentElement){let d=document.documentElement.lang;if(d&&d.trim().length>0){let f=d.split("-")[0].toLowerCase().trim();if(this.isLocaleSupported(f,e))return f}}if(((a=e==null?void 0:e.locale)==null?void 0:a.syncUrl)!==!1&&typeof window!="undefined"&&window.location){let d=window.location.pathname.split("/").filter(Boolean);if(d.length>0){let f=d[0].toLowerCase();if(this.isLocaleSupported(f,e))return f}try{let f=new URLSearchParams(window.location.search),u=(c=f.get("lang")||f.get("locale"))==null?void 0:c.toLowerCase();if(u&&this.isLocaleSupported(u,e))return u}catch(f){}}return(l=e==null?void 0:e.locale)!=null&&l.autoDetect?this.detectBrowserLocale(t):o}startParentSync(e,t){var n,i;let o=[];if(((n=e.locale)==null?void 0:n.syncHtmlLang)!==!1&&typeof document!="undefined"&&typeof MutationObserver!="undefined"&&document.documentElement){let s=new MutationObserver(a=>{for(let c of a)if(c.type==="attributes"&&c.attributeName==="lang"){let l=document.documentElement.lang;if(l&&l.trim().length>0){let d=l.split("-")[0].toLowerCase().trim();this.isLocaleSupported(d,e)&&d!==this.locale&&t(d)}}});s.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}),o.push(()=>s.disconnect())}if((i=e.locale)!=null&&i.autoDetect&&typeof window!="undefined"){let s=()=>{var c;let a=this.detectBrowserLocale((c=e.locale)==null?void 0:c.supported);a!==this.locale&&t(a)};window.addEventListener("languagechange",s),o.push(()=>window.removeEventListener("languagechange",s))}return()=>{o.forEach(s=>s())}}resolveConfig(e,t){var c,l;let o=(((c=e.locale)==null?void 0:c.default)||"es").toLowerCase(),n=(t||this.locale||o).toLowerCase(),i=JSON.parse(JSON.stringify(e)),s=Ae[n];if(s){let d=n===o;this.applyTranslation(i,s,!d)}let a=(l=e.translations)==null?void 0:l[n];return a&&this.applyTranslation(i,a,!0),i}applyTranslation(e,t,o){if(t.policy&&(e.policy||(e.policy={}),t.policy.privacyUrl&&(o||!e.policy.privacyUrl)&&(e.policy.privacyUrl=t.policy.privacyUrl),t.policy.cookiesUrl&&(o||!e.policy.cookiesUrl)&&(e.policy.cookiesUrl=t.policy.cookiesUrl)),t.ui){if(e.ui||(e.ui={}),t.ui.banner){e.ui.banner||(e.ui.banner={});for(let[n,i]of Object.entries(this.filterDefined(t.ui.banner)))(o||!e.ui.banner[n])&&(e.ui.banner[n]=i)}if(t.ui.preferences){e.ui.preferences||(e.ui.preferences={});for(let[n,i]of Object.entries(this.filterDefined(t.ui.preferences)))(o||!e.ui.preferences[n])&&(e.ui.preferences[n]=i)}if(t.ui.floatingBadge)if(typeof e.ui.floatingBadge=="object"&&e.ui.floatingBadge!==null)for(let[n,i]of Object.entries(this.filterDefined(t.ui.floatingBadge)))(o||!e.ui.floatingBadge[n])&&(e.ui.floatingBadge[n]=i);else e.ui.floatingBadge===!0&&(e.ui.floatingBadge=C({enabled:!0,position:"bottom-left",icon:"cookie"},this.filterDefined(t.ui.floatingBadge)))}if(t.categories&&e.categories)for(let[n,i]of Object.entries(t.categories))e.categories[n]&&(i.label&&(o||!e.categories[n].label)&&(e.categories[n].label=i.label),i.description&&(o||!e.categories[n].description)&&(e.categories[n].description=i.description));if(t.services&&e.services)for(let[n,i]of Object.entries(t.services))e.services[n]&&(i.label&&(o||!e.services[n].label)&&(e.services[n].label=i.label),i.provider&&(o||!e.services[n].provider)&&(e.services[n].provider=i.provider))}filterDefined(e){let t={};for(let[o,n]of Object.entries(e))n!=null&&(t[o]=n);return t}};var J={ga4:{id:"ga4",category:"analytics",label:"Google Analytics 4",provider:"Google LLC",description:"Medici\xF3n de visitas, p\xE1ginas vistas, eventos y comportamiento de navegaci\xF3n del usuario.",policyUrl:"https://policies.google.com/privacy",cookies:[{name:"_ga",duration:"2 a\xF1os",purpose:"Distinguir a los usuarios \xFAnicos en el sitio web."},{name:"_ga_*",duration:"2 a\xF1os",purpose:"Mantener el estado de la sesi\xF3n de Google Analytics 4."},{name:"_gid",duration:"24 horas",purpose:"Distinguir a los usuarios durante un \xFAnico d\xEDa."},{name:"_gat*",duration:"1 minuto",purpose:"Limitar el porcentaje de solicitudes a Google Analytics."}],storageKeys:["_ga_*","google_analytics_*"],localStorage:["_ga_*","google_analytics_*"]},google_analytics:{id:"google_analytics",category:"analytics",label:"Google Analytics (Universal / GA4)",provider:"Google LLC",description:"Medici\xF3n de visitas y estad\xEDsticas an\xF3nimas de tr\xE1fico web.",policyUrl:"https://policies.google.com/privacy",cookies:[{name:"_ga",duration:"2 a\xF1os",purpose:"Distinguir usuarios."},{name:"_ga_*",duration:"2 a\xF1os",purpose:"Estado de la sesi\xF3n GA4."},{name:"_gid",duration:"24 horas",purpose:"Identificador diario."}],storageKeys:["_ga_*"]},posthog:{id:"posthog",category:"analytics",label:"PostHog Analytics",provider:"PostHog, Inc.",description:"Anal\xEDtica de producto, registro de sesiones, mapas de ruta y embudos de interacci\xF3n.",policyUrl:"https://posthog.com/privacy",cookies:[{name:"ph_*_posthog",duration:"1 a\xF1o",purpose:"Persistencia de usuario e identificaci\xF3n de sesiones en PostHog."}],storageKeys:["ph_*_posthog"],localStorage:["ph_*_posthog"],sessionStorage:["ph_*_posthog"]},hotjar:{id:"hotjar",category:"analytics",label:"Hotjar Heatmaps & Feedback",provider:"Hotjar Ltd.",description:"Mapas de calor de clics, desplazamientos, grabaciones de comportamiento y encuestas.",policyUrl:"https://www.hotjar.com/legal/policies/privacy/",cookies:[{name:"_hjSession*",duration:"30 minutos",purpose:"Mantener los datos de la sesi\xF3n actual del usuario en Hotjar."},{name:"_hjSessionUser*",duration:"1 a\xF1o",purpose:"Mantener el ID de usuario an\xF3nimo en el navegador."},{name:"_hjIncludedIn*",duration:"Sesi\xF3n",purpose:"Determinar si el usuario est\xE1 incluido en el muestreo de datos."},{name:"_hjAbsoluteCanvasUrl",duration:"Sesi\xF3n",purpose:"Almacenar la URL can\xF3nica de visualizaci\xF3n."},{name:"_hjTLDTest",duration:"Sesi\xF3n",purpose:"Verificar el nivel de dominio para cookies."}],storageKeys:["_hj*","hj*"],localStorage:["_hj*"],sessionStorage:["_hj*"]},clarity:{id:"clarity",category:"analytics",label:"Microsoft Clarity",provider:"Microsoft Corporation",description:"Grabaci\xF3n de navegaci\xF3n y mapas t\xE9rmicos de interacci\xF3n sin datos personales.",policyUrl:"https://privacy.microsoft.com/privacystatement",cookies:[{name:"_clck",duration:"1 a\xF1o",purpose:"Persistir el ID de usuario Clarity y sus preferencias de p\xE1gina."},{name:"_clsk",duration:"24 horas",purpose:"Conectar m\xFAltiples visitas de p\xE1gina en una \xFAnica sesi\xF3n."},{name:"CLID",duration:"1 a\xF1o",purpose:"Identificador de navegador para Clarity."},{name:"MUID",duration:"1 a\xF1o",purpose:"Identificador de usuario \xFAnico de Microsoft."}],storageKeys:["_cl*"],localStorage:["_cl*"]},matomo:{id:"matomo",category:"analytics",label:"Matomo Analytics",provider:"InnoCraft Ltd.",description:"Plataforma de anal\xEDtica web local-first y centrada en la privacidad.",policyUrl:"https://matomo.org/privacy-policy/",cookies:[{name:"_pk_id*",duration:"13 meses",purpose:"Almacenar datos de usuario \xFAnicos como el ID de visitante."},{name:"_pk_ses*",duration:"30 minutos",purpose:"Almacenar datos temporales de la sesi\xF3n de navegaci\xF3n."},{name:"_pk_ref*",duration:"6 meses",purpose:"Almacenar la informaci\xF3n de atribuci\xF3n de procedencia."}],storageKeys:["_pk_*"],localStorage:["_pk_*"]},plausible:{id:"plausible",category:"analytics",label:"Plausible Analytics",provider:"Plausible Insights O\xDC",description:"Anal\xEDtica web ligera y respetuosa con la privacidad, 100% libre de cookies.",policyUrl:"https://plausible.io/data-policy",cookies:[],storageKeys:[]},meta_pixel:{id:"meta_pixel",category:"marketing",label:"Meta Pixel (Facebook)",provider:"Meta Platforms Ireland Ltd.",description:"Medici\xF3n de conversiones, personalizaci\xF3n y optimizaci\xF3n de campa\xF1as publicitarias en Facebook e Instagram.",policyUrl:"https://www.facebook.com/privacy/policy",cookies:[{name:"_fbp",duration:"90 d\xEDas",purpose:"Almacenar y rastrear visitas en los sitios web para segmentaci\xF3n publicitaria."},{name:"_fbc",duration:"90 d\xEDas",purpose:"Guardar el \xFAltimo clic en un anuncio de Facebook (par\xE1metro fbclid)."},{name:"fr",duration:"90 d\xEDas",purpose:"Cookie de publicidad comportamental de Facebook."},{name:"tr",duration:"Sesi\xF3n",purpose:"P\xEDxel de seguimiento de eventos en tiempo real."},{name:"datr",duration:"2 a\xF1os",purpose:"Identificaci\xF3n del navegador web para seguridad y anal\xEDtica publicitaria."}],storageKeys:["_fbp*"],localStorage:["_fbp*"]},facebook_pixel:{id:"facebook_pixel",category:"marketing",label:"Meta Pixel (Facebook)",provider:"Meta Platforms Ireland Ltd.",description:"Medici\xF3n de conversiones y retargeting en Meta/Facebook.",policyUrl:"https://www.facebook.com/privacy/policy",cookies:[{name:"_fbp",duration:"90 d\xEDas",purpose:"Rastreo de conversiones y atribuci\xF3n de campa\xF1as."},{name:"_fbc",duration:"90 d\xEDas",purpose:"Identificador de clic de anuncio."}],storageKeys:["_fbp*"]},google_ads:{id:"google_ads",category:"marketing",label:"Google Ads & Remarketing",provider:"Google LLC",description:"Medici\xF3n de conversiones publicitarias y campa\xF1as de retargeting de Google Ads.",policyUrl:"https://policies.google.com/technologies/ads",cookies:[{name:"_gcl_au",duration:"90 d\xEDas",purpose:"Medici\xF3n de conversiones publicitarias de Google AdSense y Ads."},{name:"_gcl_aw",duration:"90 d\xEDas",purpose:"Conversiones procedentes de clics en anuncios de Google Ads."},{name:"IDE",duration:"1 a\xF1o",purpose:"Publicidad dirigida y medici\xF3n de rendimiento de DoubleClick."},{name:"DSID",duration:"2 semanas",purpose:"Identificar usuario conectado en sitios web ajenos a Google."},{name:"RUL",duration:"1 a\xF1o",purpose:"Audiencias de remarketing de Google Ads."}],storageKeys:["_gcl_*"]},tiktok_pixel:{id:"tiktok_pixel",category:"marketing",label:"TikTok Pixel",provider:"TikTok Technology Limited",description:"Medici\xF3n de rendimiento y segmentaci\xF3n de campa\xF1as publicitarias en TikTok.",policyUrl:"https://www.tiktok.com/legal/privacy-policy-eea",cookies:[{name:"_tt_enable_cookie",duration:"13 meses",purpose:"Habilitar la medici\xF3n de conversiones del p\xEDxel de TikTok."},{name:"_ttp",duration:"13 meses",purpose:"Medir y mejorar el rendimiento de las campa\xF1as publicitarias en TikTok."}],storageKeys:["tt_*","_ttp*"]},linkedin_insight:{id:"linkedin_insight",category:"marketing",label:"LinkedIn Insight Tag",provider:"LinkedIn Ireland Unlimited Company",description:"Informes de conversiones y atribuci\xF3n de campa\xF1as profesionales B2B en LinkedIn.",policyUrl:"https://www.linkedin.com/legal/privacy-policy",cookies:[{name:"li_sugr",duration:"90 d\xEDas",purpose:"Identificador probabil\xEDstico de navegador en LinkedIn."},{name:"bcookie",duration:"1 a\xF1o",purpose:"Identificador de sesi\xF3n de navegador para servicios de LinkedIn."},{name:"lidc",duration:"24 horas",purpose:"Enrutamiento de centros de datos para LinkedIn."},{name:"UserMatchHistory",duration:"30 d\xEDas",purpose:"Sincronizaci\xF3n de identificadores de publicidad de LinkedIn."}]},twitter_pixel:{id:"twitter_pixel",category:"marketing",label:"X / Twitter Ads Pixel",provider:"X Corp.",description:"Medici\xF3n de conversiones e interacci\xF3n con campa\xF1as publicitarias en X (Twitter).",policyUrl:"https://twitter.com/privacy",cookies:[{name:"personalization_id",duration:"2 a\xF1os",purpose:"Personalizaci\xF3n de publicidad y medici\xF3n de eventos en X."},{name:"muc_ads",duration:"2 a\xF1os",purpose:"Seguimiento de conversiones publicitarias en X."}]},hubspot:{id:"hubspot",category:"marketing",label:"HubSpot CRM & Tracking",provider:"HubSpot, Inc.",description:"Anal\xEDtica de leads, formularios inteligentes y seguimiento de clientes potenciales.",policyUrl:"https://legal.hubspot.com/privacy-policy",cookies:[{name:"__hstc",duration:"6 meses",purpose:"Rastreo de visitantes \xFAnicos, sesiones y marcas de tiempo."},{name:"hubspotutk",duration:"6 meses",purpose:"Rastreo de identidad de visitante pasado a formularios."},{name:"__hssc",duration:"30 minutos",purpose:"Rastreo de sesiones activas en HubSpot."},{name:"__hssrc",duration:"Sesi\xF3n",purpose:"Determinar si el usuario ha reiniciado su navegador."}],storageKeys:["__hs*","hubspot*"]},youtube:{id:"youtube",category:"marketing",label:"YouTube Video Player",provider:"Google LLC",description:"Reproducci\xF3n de contenidos de v\xEDdeo integrados y almacenamiento de preferencias del reproductor.",policyUrl:"https://policies.google.com/privacy",cookies:[{name:"VISITOR_INFO1_LIVE",duration:"6 meses",purpose:"Estimar el ancho de banda del usuario en p\xE1ginas con v\xEDdeos de YouTube."},{name:"YSC",duration:"Sesi\xF3n",purpose:"Registrar estad\xEDsticas de visualizaciones de v\xEDdeo de YouTube."},{name:"PREF",duration:"8 meses",purpose:"Almacenar preferencias de configuraci\xF3n del reproductor."},{name:"GPS",duration:"30 minutos",purpose:"Rastrear ubicaci\xF3n en dispositivos m\xF3viles."}],storageKeys:["yt-*","yt-remote-*"],localStorage:["yt-*","yt-remote-*"]},vimeo:{id:"vimeo",category:"marketing",label:"Vimeo Video Player",provider:"Vimeo, Inc.",description:"Reproducci\xF3n de v\xEDdeos interactivos alojados en Vimeo y estad\xEDsticas de visualizaci\xF3n.",policyUrl:"https://vimeo.com/privacy",cookies:[{name:"vuid",duration:"2 a\xF1os",purpose:"Almacenar el historial de reproducciones de v\xEDdeo del usuario en Vimeo."},{name:"player",duration:"1 a\xF1o",purpose:"Guardar las preferencias de volumen y resoluci\xF3n del reproductor."}],storageKeys:["vimeo*"]},spotify:{id:"spotify",category:"marketing",label:"Spotify Player",provider:"Spotify AB",description:"Reproducci\xF3n embebida de canciones, podcasts y listas de reproducci\xF3n de Spotify.",policyUrl:"https://www.spotify.com/legal/privacy-policy/",cookies:[{name:"sp_t",duration:"1 a\xF1o",purpose:"Identificador de usuario \xFAnico de Spotify para contenido embebido."},{name:"sp_m",duration:"1 a\xF1o",purpose:"Preferencias de reproducci\xF3n y cookies de sesi\xF3n."}]},intercom:{id:"intercom",category:"marketing",label:"Intercom Messenger",provider:"Intercom R&D Unlimited Company",description:"Widget de mensajer\xEDa, soporte al cliente en tiempo real y asistencia guiada.",policyUrl:"https://www.intercom.com/legal/privacy",cookies:[{name:"intercom-id-*",duration:"9 meses",purpose:"Identificador an\xF3nimo de visitante para conversaciones en Intercom."},{name:"intercom-session-*",duration:"7 d\xEDas",purpose:"Persistir la sesi\xF3n de chat activa."},{name:"intercom-device-id-*",duration:"9 meses",purpose:"Identificador del dispositivo del visitante."}],storageKeys:["intercom*"]},crisp:{id:"crisp",category:"marketing",label:"Crisp Live Chat",provider:"Crisp IM SARL",description:"Chat en vivo de soporte y mensajer\xEDa multicanal para visitantes.",policyUrl:"https://crisp.chat/privacy",cookies:[{name:"crisp-client/*",duration:"6 meses",purpose:"Identificador de sesi\xF3n de chat en Crisp."}],storageKeys:["crisp-client*"]},gtm:{id:"gtm",category:"necessary",label:"Google Tag Manager",provider:"Google LLC",description:"Contenedor t\xE9cnico para la inyecci\xF3n y gesti\xF3n centralizada de scripts del sitio web.",policyUrl:"https://policies.google.com/privacy",cookies:[{name:"_gtm_*",duration:"Sesi\xF3n",purpose:"Depuraci\xF3n t\xE9cnica de contenedores de Google Tag Manager."}]},google_recaptcha:{id:"google_recaptcha",category:"necessary",label:"Google reCAPTCHA",provider:"Google LLC",description:"Protecci\xF3n contra bots automatizados, ataques de fuerza bruta y spam en formularios.",policyUrl:"https://policies.google.com/privacy",cookies:[{name:"_GRECAPTCHA",duration:"6 meses",purpose:"Evaluaci\xF3n de riesgo de bots para protecci\xF3n de formularios."},{name:"rc::a",duration:"Persistente",purpose:"Distinguir entre humanos y bots automatizados."},{name:"rc::b",duration:"Sesi\xF3n",purpose:"Distinguir entre humanos y bots automatizados."},{name:"rc::c",duration:"Sesi\xF3n",purpose:"Distinguir entre humanos y bots automatizados."}]},cloudflare:{id:"cloudflare",category:"necessary",label:"Cloudflare Security & Turnstile",provider:"Cloudflare, Inc.",description:"Mitigaci\xF3n de ataques DDoS, balanceo de carga CDN y validaci\xF3n de seguridad Turnstile.",policyUrl:"https://www.cloudflare.com/privacypolicy/",cookies:[{name:"__cf_bm",duration:"30 minutos",purpose:"Gesti\xF3n de bots y mitigaci\xF3n de tr\xE1fico malicioso en Cloudflare."},{name:"cf_clearance",duration:"1 a\xF1o",purpose:"Autorizaci\xF3n de paso tras superar desaf\xEDo de seguridad Turnstile/Cloudflare."}]},stripe:{id:"stripe",category:"necessary",label:"Stripe Payments & Fraud Prevention",provider:"Stripe, Inc.",description:"Procesamiento seguro de transacciones bancarias, tarjetas y prevenci\xF3n de fraude financiero.",policyUrl:"https://stripe.com/privacy",cookies:[{name:"__stripe_mid",duration:"1 a\xF1o",purpose:"Prevenci\xF3n de fraude y autenticaci\xF3n de pagos en Stripe."},{name:"__stripe_sid",duration:"30 minutos",purpose:"Identificador de sesi\xF3n de transacci\xF3n en Stripe."},{name:"m",duration:"2 a\xF1os",purpose:"Detecci\xF3n de fraude financiero en la pasarela de pagos Stripe."}],storageKeys:["__stripe_*"],localStorage:["__stripe_*"]},paypal:{id:"paypal",category:"necessary",label:"PayPal Checkout",provider:"PayPal (Europe) S.\xE0 r.l. et Cie, S.C.A.",description:"Procesamiento de pagos y pasarela de cobro segura de PayPal.",policyUrl:"https://www.paypal.com/webapps/mpp/ua/privacy-full",cookies:[{name:"ts",duration:"3 a\xF1os",purpose:"Gesti\xF3n segura de pagos y prevenci\xF3n de fraude en PayPal."},{name:"ts_c",duration:"3 a\xF1os",purpose:"Autenticaci\xF3n segura de usuario en la pasarela PayPal."}]}};function ce(r){return Object.prototype.hasOwnProperty.call(J,r)}function ae(r,e){let t=J[r];if(!t)throw new Error(`[ConsentSDK] Unknown service preset: '${r}'. Available presets: ${Object.keys(J).join(", ")}`);let o={category:t.category,label:t.label,provider:t.provider,policyUrl:t.policyUrl,description:t.description,cookies:t.cookies?[...t.cookies]:void 0,storageKeys:t.storageKeys?[...t.storageKeys]:void 0,localStorage:t.localStorage?[...t.localStorage]:void 0,sessionStorage:t.sessionStorage?[...t.sessionStorage]:void 0};return e?re(C(C({},o),e),{cookies:e.cookies||o.cookies,storageKeys:e.storageKeys||o.storageKeys,localStorage:e.localStorage||o.localStorage,sessionStorage:e.sessionStorage||o.sessionStorage}):o}function He(r){let e={};for(let[o,n]of Object.entries(r))if(typeof n=="string")e[o]=ae(n);else if(n&&typeof n=="object")if(n.preset){let t=n,{preset:i}=t,s=Ne(t,["preset"]);e[o]=ae(i,s)}else ce(o)?e[o]=ae(o,n):e[o]=n;return e}function Ie(r){if(!r||!r.services||typeof r.services!="object")return r;let e={};for(let[t,o]of Object.entries(r.services)){if(!o||typeof o!="object"){e[t]=o;continue}let n=o.preset||(ce(t)&&!o.category?t:void 0);if(n&&ce(n)){let i=J[n];e[t]=C({category:o.category||i.category,label:o.label||i.label,provider:o.provider||i.provider,policyUrl:o.policyUrl||i.policyUrl,description:o.description||i.description,cookies:o.cookies||(i.cookies?[...i.cookies]:void 0),storageKeys:o.storageKeys||(i.storageKeys?[...i.storageKeys]:void 0),localStorage:o.localStorage||(i.localStorage?[...i.localStorage]:void 0),sessionStorage:o.sessionStorage||(i.sessionStorage?[...i.sessionStorage]:void 0)},o)}else e[t]=o}return re(C({},r),{services:e})}function le(){var o,n,i,s;if(typeof window=="undefined"&&typeof navigator=="undefined"&&typeof globalThis=="undefined")return!1;let r=typeof navigator!="undefined"?navigator:null,e=typeof window!="undefined"?window:null,t=typeof globalThis!="undefined"?globalThis:null;return!!((r==null?void 0:r.globalPrivacyControl)===!0||(e==null?void 0:e.globalPrivacyControl)===!0||((o=e==null?void 0:e.navigator)==null?void 0:o.globalPrivacyControl)===!0||((n=t==null?void 0:t.navigator)==null?void 0:n.globalPrivacyControl)===!0||(t==null?void 0:t.globalPrivacyControl)===!0||(r==null?void 0:r.doNotTrack)==="1"||(e==null?void 0:e.doNotTrack)==="1"||((i=e==null?void 0:e.navigator)==null?void 0:i.doNotTrack)==="1"||((s=t==null?void 0:t.navigator)==null?void 0:s.doNotTrack)==="1"||(t==null?void 0:t.doNotTrack)==="1"||(r==null?void 0:r.msDoNotTrack)==="1"||e!=null&&e.external&&typeof e.external.msTrackingProtectionEnabled=="function"&&e.external.msTrackingProtectionEnabled())}function de(r){let e=r==null?void 0:r.gpc;return{enabled:(e==null?void 0:e.enabled)!==!1,respectSignal:(e==null?void 0:e.respectSignal)!==!1,mode:(e==null?void 0:e.mode)||"auto-reject",categories:(e==null?void 0:e.categories)||[],noticeText:(e==null?void 0:e.noticeText)||"Se\xF1al de Privacidad Global (GPC) detectada: cookies no esenciales desactivadas."}}function $e(r,e){let t=C({},e||{}),o=de(r);for(let[n,i]of Object.entries(r.categories))i.required||n==="necessary"?t[n]=!0:(o.categories.length===0||o.categories.includes(n))&&(t[n]=!1);return t}var ee=class{constructor(){this.stateManager=new ye;this.eventBus=new be;this.blockerRegistry=new Se;this.banner=new Le;this.preferencesModal=new Ee;this.floatingBadge=new W;this.i18n=new Z;this.stopLocaleSync=null;this.initPromise=null;this.resolveReady=null;this.readyPromise=new Promise(e=>{this.resolveReady=e})}async init(e){return this.initPromise?this.initPromise:(this.initPromise=(async()=>{var b,v,y,x,E,_,T,te,X,oe,ie,ne;let t;if(typeof e=="string"){let w=await fetch(e);if(!w.ok)throw new Error(`[ConsentSDK] Failed to fetch consent configuration from '${e}' (HTTP ${w.status})`);t=await w.json()}else t=e;t=Ie(t),G(t);let o=this.i18n.detectParentLocale(t);this.i18n.setLocale(o),(b=this.stopLocaleSync)==null||b.call(this),this.stopLocaleSync=this.i18n.startParentSync(t,w=>{this.setLocale(w)});let n=((v=t.storage)==null?void 0:v.name)||"site_consent",i=((y=t.storage)==null?void 0:y.type)==="memory"?q.get(n):S.get(n),s=i?ve(i):null,a=Oe(t,s),c=le(),l=de(t),d=c&&l.enabled&&l.respectSignal,f=a.isValid?s:null,u=a.choices,h=!1;if(!a.isValid&&d&&l.mode!=="notice-only"){u=$e(t),f=se(t.policyVersion,u,"gpc",null,(x=t.security)==null?void 0:x.secretKey),f.gpc=!0,h=!0;let w=JSON.stringify(f);((E=t.storage)==null?void 0:E.type)==="memory"?q.set(n,w):S.set(n,w,{path:((_=t.storage)==null?void 0:_.path)||"/",maxAgeDays:(te=(T=t.consent)==null?void 0:T.maxAgeDays)!=null?te:365,sameSite:((X=t.storage)==null?void 0:X.sameSite)||"Lax",secure:(oe=t.storage)==null?void 0:oe.secure,domain:(ie=t.storage)==null?void 0:ie.domain});for(let[I,ue]of Object.entries(u))!ue&&I!=="necessary"&&K.purgeCategory(t,I)}this.stateManager.init(t,u,f,c),this.stateManager.setLocale(o),c&&(this.eventBus.emit("gpc:detected",{signal:!0,autoApplied:h,choices:u}),this.dispatchDomEvent("solvenza:gpc",{signal:!0,autoApplied:h,choices:u})),R.initDefault(),(a.isValid||h)&&(R.update(u),this.dispatchDomEvent("solvenza:restored",{state:this.getConsent()})),this.blockerRegistry.init(w=>this.has(w),w=>this.hasService(w),{onAllowClick:w=>{let I=this.stateManager.getChoices();I[w]=!0,this.setPreferences(I)}},(w,I)=>{this.eventBus.emit("service:loaded",{serviceId:w,category:I})}),this.setupGlobalRevocationTrigger();let m=this.getResolvedConfig()||t,g=this.resolveFloatingBadgeConfig(m);g.enabled&&(this.floatingBadge.render(m,{onClick:()=>this.openPreferences()}),(a.isValid||h||g.visibility==="always")&&this.showFloatingBadge()),(ne=this.resolveReady)==null||ne.call(this),this.eventBus.emit("ready",{state:this.getConsent()}),!a.isValid&&!h&&this.showBanner()})(),this.initPromise)}async ready(){return this.readyPromise}getConsent(){return this.stateManager.getState()}has(e){return this.stateManager.hasCategory(e)}hasService(e){return this.stateManager.hasService(e)}acceptAll(){let e=this.stateManager.getConfig();if(!e)return;let t={};for(let o of Object.keys(e.categories))t[o]=!0;this.saveChoices(t,"banner"),this.eventBus.emit("consent:accepted",{choices:t,receipt:this.getReceipt()})}rejectAll(){let e=this.stateManager.getConfig();if(!e)return;let t={};for(let[o,n]of Object.entries(e.categories))t[o]=n.required===!0;this.saveChoices(t,"banner"),this.eventBus.emit("consent:rejected",{choices:t,receipt:this.getReceipt()})}setPreferences(e){if(!this.stateManager.getConfig())return;let o=C({},e);o.necessary=!0,this.saveChoices(o,"preferences")}openPreferences(){let e=this.getResolvedConfig();e&&(this.hideFloatingBadge(),this.preferencesModal.render(e,this.stateManager.getChoices(),{onSave:t=>{this.setPreferences(t),this.restoreFloatingBadgeIfNeeded()},onAcceptAll:()=>{this.acceptAll(),this.restoreFloatingBadgeIfNeeded()},onRejectAll:()=>{this.rejectAll(),this.restoreFloatingBadgeIfNeeded()},onClose:()=>{this.restoreFloatingBadgeIfNeeded(),this.eventBus.emit("preferences:closed",void 0)}}),this.eventBus.emit("preferences:opened",void 0))}closePreferences(){this.preferencesModal.close(),this.restoreFloatingBadgeIfNeeded(),this.eventBus.emit("preferences:closed",void 0)}getLocale(){return this.i18n.getLocale()}setLocale(e){let t=this.i18n.getLocale();if(e.toLowerCase()===t.toLowerCase())return;this.i18n.setLocale(e),this.stateManager.setLocale(e);let o=this.getResolvedConfig();if(!o)return;if(this.banner.getIsVisible()&&this.banner.render(o,{onAcceptAll:()=>this.acceptAll(),onRejectAll:()=>this.rejectAll(),onConfigure:()=>this.openPreferences()}),this.preferencesModal.getIsOpen()&&this.preferencesModal.render(o,this.stateManager.getChoices(),{onSave:i=>{this.setPreferences(i),this.restoreFloatingBadgeIfNeeded()},onAcceptAll:()=>{this.acceptAll(),this.restoreFloatingBadgeIfNeeded()},onRejectAll:()=>{this.rejectAll(),this.restoreFloatingBadgeIfNeeded()},onClose:()=>{this.restoreFloatingBadgeIfNeeded(),this.eventBus.emit("preferences:closed",void 0)}}),this.resolveFloatingBadgeConfig(o).enabled){let i=this.floatingBadge.getIsVisible();this.floatingBadge.render(o,{onClick:()=>this.openPreferences()}),i&&this.floatingBadge.show()}this.eventBus.emit("locale:changed",{locale:e,previousLocale:t}),this.dispatchDomEvent("solvenza:locale:changed",{locale:e,previousLocale:t})}syncLocale(e){this.setLocale(e)}isGpcActive(){return le()}restoreFloatingBadgeIfNeeded(){let e=this.getResolvedConfig();!e||!this.resolveFloatingBadgeConfig(e).enabled||this.showFloatingBadge()}getResolvedConfig(){let e=this.stateManager.getConfig();return e?this.i18n.resolveConfig(e,this.getLocale()):null}withdraw(){var i,s,a,c;let e=this.stateManager.getChoices(),t=this.stateManager.getConfig();if(!t)return;let o=((i=t.storage)==null?void 0:i.name)||"site_consent";((s=t.storage)==null?void 0:s.type)==="memory"?q.remove(o):S.remove(o,((a=t.storage)==null?void 0:a.path)||"/",(c=t.storage)==null?void 0:c.domain);for(let l of Object.keys(t.categories))l!=="necessary"&&this.purgeCategory(l);this.stateManager.clearChoices(),R.update(this.stateManager.getChoices()),this.eventBus.emit("consent:withdrawn",{previousChoices:e}),this.dispatchDomEvent("solvenza:updated",{choices:this.stateManager.getChoices()});let n=this.resolveFloatingBadgeConfig(this.getResolvedConfig()||t);n.enabled&&n.visibility!=="always"&&this.hideFloatingBadge(),this.showBanner()}purgeCategory(e){let t=this.stateManager.getConfig();if(!t)return{category:e,purgedCookies:[],purgedLocalStorage:[],purgedSessionStorage:[]};let o=K.purgeCategory(t,e);return this.eventBus.emit("storage:purged",{category:e,report:o}),this.dispatchDomEvent("solvenza:storage:purged",{category:e,report:o}),o}purgeStorage(e){var i,s;let t=this.stateManager.getConfig();if(!t)return[];if(e){if((i=t.categories)!=null&&i[e])return[this.purgeCategory(e)];let a=(s=t.services)==null?void 0:s[e];if(a!=null&&a.category)return[this.purgeCategory(a.category)]}let o=[],n=this.stateManager.getChoices();for(let[a,c]of Object.entries(n))!c&&a!=="necessary"&&o.push(this.purgeCategory(a));return o}showFloatingBadge(){let e=this.getResolvedConfig();if(!e||!this.resolveFloatingBadgeConfig(e).enabled)return;let o=this.floatingBadge.getElement();(!o||!o.parentNode)&&this.floatingBadge.render(e,{onClick:()=>this.openPreferences()}),this.floatingBadge.show(),this.eventBus.emit("floating-badge:shown",void 0),this.dispatchDomEvent("solvenza:badge:shown",void 0)}hideFloatingBadge(){this.floatingBadge.hide(),this.eventBus.emit("floating-badge:hidden",void 0),this.dispatchDomEvent("solvenza:badge:hidden",void 0)}when(e,t){return Pe.createWhen(this.eventBus,o=>this.has(o),o=>this.hasService(o))(e,t)}on(e,t){return this.eventBus.on(e,t)}getReceipt(){return this.stateManager.getReceipt()}rescan(){let e=this.stateManager.getConfig();if(!e)throw new Error("[ConsentSDK] SDK not initialized.");let t=!!this.getReceipt();return Y.runDiagnostic(e,t)}mountPolicy(e,t){let o=this.getResolvedConfig()||this.stateManager.getConfig();if(!o)throw new Error("[ConsentSDK] SDK not initialized.");let n=typeof e=="string"?document.querySelector(e):e;n&&(n.innerHTML=L.renderCookiePolicy(o,t))}renderPolicyHtml(e){let t=this.getResolvedConfig()||this.stateManager.getConfig();if(!t)throw new Error("[ConsentSDK] SDK not initialized.");return L.renderCookiePolicy(t,e)}mountLegalNotice(e,t){let o=this.getResolvedConfig()||this.stateManager.getConfig();if(!o)throw new Error("[ConsentSDK] SDK not initialized.");let n=typeof e=="string"?document.querySelector(e):e;n&&(n.innerHTML=L.renderLegalNotice(o,t))}renderLegalNoticeHtml(e){let t=this.getResolvedConfig()||this.stateManager.getConfig();if(!t)throw new Error("[ConsentSDK] SDK not initialized.");return L.renderLegalNotice(t,e)}mountPrivacyPolicy(e,t){let o=this.getResolvedConfig()||this.stateManager.getConfig();if(!o)throw new Error("[ConsentSDK] SDK not initialized.");let n=typeof e=="string"?document.querySelector(e):e;n&&(n.innerHTML=L.renderPrivacyPolicy(o,t))}renderPrivacyPolicyHtml(e){let t=this.getResolvedConfig()||this.stateManager.getConfig();if(!t)throw new Error("[ConsentSDK] SDK not initialized.");return L.renderPrivacyPolicy(t,e)}saveChoices(e,t){var l,d,f,u,h,m,g,b,v,y;let o=this.stateManager.getConfig();if(!o)return;let n=se(o.policyVersion,e,t,this.stateManager.getReceipt(),(l=o.security)==null?void 0:l.secretKey);this.isGpcActive()&&(n.gpc=!0),this.stateManager.updateChoices(n);for(let[x,E]of Object.entries(e))E||this.purgeCategory(x);let i=((d=o.storage)==null?void 0:d.name)||"site_consent",s=JSON.stringify(n);if(((f=o.storage)==null?void 0:f.type)==="memory"?q.set(i,s):S.set(i,s,{path:((u=o.storage)==null?void 0:u.path)||"/",maxAgeDays:(m=(h=o.consent)==null?void 0:h.maxAgeDays)!=null?m:365,sameSite:((g=o.storage)==null?void 0:g.sameSite)||"Lax",secure:(b=o.storage)==null?void 0:b.secure,domain:(v=o.storage)==null?void 0:v.domain}),R.update(e),this.blockerRegistry.init(x=>this.has(x),x=>this.hasService(x)),(y=o.logging)!=null&&y.enabled&&o.logging.endpoint)try{fetch(o.logging.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:s}).catch(()=>{})}catch(x){}this.banner.remove();let a=this.getResolvedConfig()||o;this.resolveFloatingBadgeConfig(a).enabled&&this.showFloatingBadge(),this.eventBus.emit("consent:changed",{choices:e,receipt:n}),this.dispatchDomEvent("solvenza:updated",{choices:e,receipt:n})}showBanner(){let e=this.getResolvedConfig()||this.stateManager.getConfig();if(!e)return;let t=this.resolveFloatingBadgeConfig(e);t.enabled&&t.visibility!=="always"&&this.hideFloatingBadge(),this.banner.render(e,{onAcceptAll:()=>this.acceptAll(),onRejectAll:()=>this.rejectAll(),onConfigure:()=>this.openPreferences()}),this.eventBus.emit("banner:shown",void 0),this.dispatchDomEvent("solvenza:show",void 0)}setupGlobalRevocationTrigger(){typeof document!="undefined"&&(document.addEventListener("click",e=>{let t=e.target;t!=null&&t.closest("[data-consent-open]")&&(e.preventDefault(),this.openPreferences())}),document.addEventListener("solvenza:show",()=>{this.showBanner()}),document.addEventListener("solvenza:preferences",()=>{this.openPreferences()}),document.addEventListener("solvenza:badge:show",()=>{this.showFloatingBadge()}),document.addEventListener("solvenza:badge:hide",()=>{this.hideFloatingBadge()}),document.addEventListener("solvenza:locale",e=>{var t;(t=e==null?void 0:e.detail)!=null&&t.locale&&this.setLocale(e.detail.locale)}))}resolveFloatingBadgeConfig(e){var o;let t=(o=e==null?void 0:e.ui)==null?void 0:o.floatingBadge;return t===!1?{enabled:!1}:t===!0||t===void 0?{enabled:!0,position:"bottom-left",icon:"cookie",visibility:"after-consent"}:typeof t=="object"&&t!==null?{enabled:t.enabled!==!1,position:t.position||"bottom-left",label:t.label,ariaLabel:t.ariaLabel,showLabel:t.showLabel,icon:t.icon||"cookie",visibility:t.visibility||"after-consent"}:{enabled:!0,position:"bottom-left",icon:"cookie",visibility:"after-consent"}}dispatchDomEvent(e,t){if(typeof document!="undefined")try{let o=new CustomEvent(e,{detail:t,bubbles:!0});document.dispatchEvent(o)}catch(o){}}},Te=typeof window!="undefined"?window:globalThis;Te.__ConsentSDK_Instance__||(Te.__ConsentSDK_Instance__=new ee);var pe=Te.__ConsentSDK_Instance__;var ge=class{constructor(e){this.config={schemaVersion:1,policyVersion:"1.0.0",categories:{},services:{}};e&&(this.config.policyVersion=e)}setSchemaVersion(e){return this.config.schemaVersion=e,this}setPolicyVersion(e){return this.config.policyVersion=e,this}setLegalEntity(e){return this.config.legalEntity=e,this}setLegalNotice(e){return this.config.legalNotice=e,this}setPolicyUrls(e,t){return this.config.policy={privacyUrl:e,cookiesUrl:t},this}setLocale(e,t=!0,o){return this.config.locale={default:e,autoDetect:t,supported:o},this}setTranslations(e){return this.config.translations=e,this}addTranslation(e,t){return this.config.translations||(this.config.translations={}),this.config.translations[e.toLowerCase()]=t,this}setFloatingBadge(e){return this.config.ui||(this.config.ui={}),this.config.ui.floatingBadge=e,this}addCategory(e,t){return this.config.categories||(this.config.categories={}),this.config.categories[e]=t,this}addService(e,t){return this.config.services||(this.config.services={}),this.config.services[e]=t,this}build(){var t;(t=this.config.categories)!=null&&t.necessary||(this.config.categories=re(C({},this.config.categories),{necessary:{required:!0,default:!0,label:"Necesarias",description:"Cookies y almacenamiento imprescindible para el funcionamiento del sitio."}}));let e=this.config;return G(e),e}};var ze=class{static create(e){switch(e){case"cookie":return new H;case"memory":return new z;default:return new H}}};typeof window!="undefined"&&(window.Consent=pe,window.ConsentSDK={Consent:pe,ConsentEngine:ee,ConsentConfigBuilder:ge,validateConfig:G,PolicyGenerator:L,FloatingBadge:W,ResourceScanner:Y});if(typeof document!="undefined"){let r=document.currentScript,e=r==null?void 0:r.getAttribute("data-config");if(e){let t=()=>{pe.init(e).catch(o=>{console.warn("[ConsentSDK AutoInit Warning]",o)})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}}return Xe(et);})();
|
|
589
971
|
//# sourceMappingURL=consent.min.js.map
|