{"version":3,"file":"UTMKeeper.Bi2b3LSH.mjs","names":["p"],"sources":["https:/framerusercontent.com/modules/iQFz2Iv7wIBTH6FEVDSe/6HOJl42qSTTtY97f8bDq/UTMKeeper.js"],"sourcesContent":["// UTMKeeper.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const LS_KEY=\"utm_params_v1\";const UTM_KEYS=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"utm_id\",\"gclid\",\"fbclid\",\"msclkid\",\"wbraid\",\"gbraid\"];function parseCSVPaths(csv){return csv.split(\",\").map(s=>s.trim()).filter(Boolean).map(p=>(\"/\"+p).replace(/\\/+/,\"/\"))// zapewnij wiodący slash\n.map(p=>p.replace(/\\/+$/,\"\"))// bez końcowego slasha\n;}function pickUTMsFrom(search){const sp=new URLSearchParams(search||\"\");const out={};UTM_KEYS.forEach(k=>{const v=sp.get(k);if(v)out[k]=v;});return out;}function any(obj){return obj&&Object.keys(obj).length>0;}function buildQS(obj){const sp=new URLSearchParams;Object.entries(obj).forEach(([k,v])=>v&&sp.set(k,v));return sp.toString();}function norm(path){return(\"/\"+(path||\"\").replace(/^\\/+|\\/+$/g,\"\")).replace(/\\/+$/,\"\");}function isTargetPath(pathname,targets){const n=norm(pathname);return targets.includes(n);}function saveToLS(obj,debug=false){try{const curRaw=window.localStorage.getItem(LS_KEY)||\"{}\";const cur=JSON.parse(curRaw);const merged={...cur,...obj};window.localStorage.setItem(LS_KEY,JSON.stringify(merged));if(debug)console.debug(\"[UTM] saved to LS:\",merged);}catch(e){if(debug)console.warn(\"[UTM] LS save error:\",e);}}function loadFromLS(debug=false){try{const raw=window.localStorage.getItem(LS_KEY)||\"{}\";const obj=JSON.parse(raw);if(debug)console.debug(\"[UTM] loaded from LS:\",obj);return obj;}catch(e){if(debug)console.warn(\"[UTM] LS load error:\",e);return{};}}function writeCookieAllScopes(name,val,days=90,debug=false){try{const max=days?`; max-age=${days*24*60*60}`:\"\";const secure=location.protocol===\"https:\"?\"; Secure\":\"\";// host-only\ndocument.cookie=`${name}=${encodeURIComponent(val)}${max}; path=/; SameSite=Lax${secure}`;// base domain (.example.com)\nconst parts=location.hostname.split(\".\");if(parts.length>=2){const base=\".\"+parts.slice(-2).join(\".\");document.cookie=`${name}=${encodeURIComponent(val)}${max}; path=/; domain=${base}; SameSite=Lax${secure}`;}if(debug)console.debug(\"[UTM] cookie written\");}catch(e){if(debug)console.warn(\"[UTM] cookie write error:\",e);}}function attachToCurrentUrl(saved,hardRedirect,debug=false){const qs=buildQS(saved);if(!qs)return;const next=norm(location.pathname)+\"?\"+qs+location.hash;if(debug)console.debug(\"[UTM] attaching to URL:\",next);if(hardRedirect){if(location.href!==location.origin+next)location.assign(next);}else{if(location.search!==\"?\"+qs)history.replaceState(null,\"\",next);}}export default function UTMKeeper({targetPaths=\"/vsl-step,/vsl-step-1,/vsl-step-2,/vsl-step-karina,/pl/vsl-step,/pl/vsl-step-1,/pl/vsl-step-2,/pl/vsl-step-karina\",hardRedirect=false,alsoCookie=false,debug=false,width=1,height=1}){React.useEffect(()=>{if(typeof window===\"undefined\")return;const targets=parseCSVPaths(targetPaths);// 1) Zbierz UTM-y z bieżącego URLa i zapisz\nconst fromUrl=pickUTMsFrom(location.search);if(any(fromUrl)){saveToLS(fromUrl,debug);if(alsoCookie)writeCookieAllScopes(LS_KEY,JSON.stringify(fromUrl),90,debug);}// 2) Fallback: z referrera jeśli LS pusty\nlet saved=loadFromLS(debug);if(!any(saved)&&document.referrer){try{const ref=new URL(document.referrer);const fromRef=pickUTMsFrom(ref.search);if(any(fromRef)){saveToLS(fromRef,debug);if(alsoCookie)writeCookieAllScopes(LS_KEY,JSON.stringify(fromRef),90,debug);saved=fromRef;}}catch(e){if(debug)console.warn(\"[UTM] referrer parse error:\",e);}}// 3) Jeżeli jesteśmy na stronie docelowej i brak UTM-ów w URL → dopnij\nconst tryAttach=()=>{const onUrl=pickUTMsFrom(location.search);if(isTargetPath(location.pathname,targets)&&!any(onUrl)){const currentSaved=loadFromLS(debug);if(any(currentSaved))attachToCurrentUrl(currentSaved,hardRedirect,debug);}};// natychmiast + kilka „powtórek” by przebić SPA/hydratację\ntryAttach();const retries=[50,150,400,800,1500,2500];const timers=retries.map(ms=>setTimeout(tryAttach,ms));// nasłuch SPA/popstate (gdy Framer zmienia ścieżkę)\nconst onPop=()=>tryAttach();window.addEventListener(\"popstate\",onPop);return()=>{timers.forEach(clearTimeout);window.removeEventListener(\"popstate\",onPop);};},[targetPaths,hardRedirect,alsoCookie,debug]);// komponent może być niewidoczny\nreturn /*#__PURE__*/_jsx(\"div\",{style:{width,height,opacity:0,pointerEvents:\"none\"}});}addPropertyControls(UTMKeeper,{targetPaths:{type:ControlType.String,title:\"Target paths (CSV)\",defaultValue:\"/vsl-step,/vsl-step-1,/vsl-step-2,/vsl-step-karina,/pl/vsl-step,/pl/vsl-step-1,/pl/vsl-step-2,/pl/vsl-step-karina\"},hardRedirect:{type:ControlType.Boolean,title:\"Hard redirect\",defaultValue:false},alsoCookie:{type:ControlType.Boolean,title:\"Also cookie\",defaultValue:false},debug:{type:ControlType.Boolean,title:\"Debug logs\",defaultValue:true},width:{type:ControlType.Number,title:\"w\",defaultValue:1,min:1},height:{type:ControlType.Number,title:\"h\",defaultValue:1,min:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"UTMKeeper\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UTMKeeper.map"],"mappings":"wLACiS,SAAS,EAAc,EAAI,CAAC,OAAO,EAAI,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAIA,GAAG,QAAQ,MAAM,IAAI,CAAC,CACrZ,IAAI,GAAGA,EAAE,QAAQ,OAAO,GAAG,CAAC,CAC3B,SAAS,EAAa,EAAO,CAAC,IAAM,EAAG,IAAI,gBAAgB,GAAQ,GAAG,CAAO,EAAI,EAAE,CAAyD,OAAxD,EAAS,QAAQ,GAAG,CAAC,IAAM,EAAE,EAAG,IAAI,EAAE,CAAI,IAAE,EAAI,GAAG,IAAI,CAAQ,EAAK,SAAS,EAAI,EAAI,CAAC,OAAO,GAAK,OAAO,KAAK,EAAI,CAAC,OAAO,EAAG,SAAS,EAAQ,EAAI,CAAC,IAAM,EAAG,IAAI,gBAAqE,OAArD,OAAO,QAAQ,EAAI,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,EAAG,IAAI,EAAE,EAAE,CAAC,CAAQ,EAAG,UAAU,CAAE,SAAS,EAAK,EAAK,CAAC,OAAO,KAAK,GAAM,IAAI,QAAQ,aAAa,GAAG,EAAE,QAAQ,OAAO,GAAG,CAAE,SAAS,EAAa,EAAS,EAAQ,CAAC,IAAM,EAAE,EAAK,EAAS,CAAC,OAAO,EAAQ,SAAS,EAAE,CAAE,SAAS,EAAS,EAAI,EAAM,GAAM,CAAC,GAAG,CAAC,IAAM,EAAO,EAAO,aAAa,QAAQ,EAAO,EAAE,KAAwC,EAAO,CAAC,GAAjC,KAAK,MAAM,EAAO,CAAsB,GAAG,EAAI,CAAC,EAAO,aAAa,QAAQ,EAAO,KAAK,UAAU,EAAO,CAAC,CAAI,GAAM,QAAQ,MAAM,qBAAqB,EAAO,OAAQ,EAAE,CAAI,GAAM,QAAQ,KAAK,uBAAuB,EAAE,EAAG,SAAS,EAAW,EAAM,GAAM,CAAC,GAAG,CAAC,IAAM,EAAI,EAAO,aAAa,QAAQ,EAAO,EAAE,KAAW,EAAI,KAAK,MAAM,EAAI,CAAqD,OAAjD,GAAM,QAAQ,MAAM,wBAAwB,EAAI,CAAQ,QAAW,EAAE,CAAiD,OAA7C,GAAM,QAAQ,KAAK,uBAAuB,EAAE,CAAO,EAAE,EAAG,SAAS,EAAqB,EAAK,EAAI,EAAK,GAAG,EAAM,GAAM,CAAC,GAAG,CAAC,IAAM,EAAI,EAAK,aAAa,EAAK,GAAG,GAAG,KAAK,GAAS,EAAO,SAAS,WAAW,SAAS,WAAW,GACluC,SAAS,OAAO,GAAG,EAAK,GAAG,mBAAmB,EAAI,GAAG,EAAI,wBAAwB,IACjF,IAAM,EAAM,SAAS,SAAS,MAAM,IAAI,CAAC,GAAG,EAAM,QAAQ,EAAE,CAAC,IAAM,EAAK,IAAI,EAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,OAAO,GAAG,EAAK,GAAG,mBAAmB,EAAI,GAAG,EAAI,mBAAmB,EAAK,gBAAgB,IAAa,GAAM,QAAQ,MAAM,uBAAuB,OAAQ,EAAE,CAAI,GAAM,QAAQ,KAAK,4BAA4B,EAAE,EAAG,SAAS,EAAmB,EAAM,EAAa,EAAM,GAAM,CAAC,IAAM,EAAG,EAAQ,EAAM,CAAC,GAAG,CAAC,EAAG,OAAO,IAAM,EAAK,EAAK,SAAS,SAAS,CAAC,IAAI,EAAG,SAAS,KAAQ,GAAM,QAAQ,MAAM,0BAA0B,EAAK,CAAI,EAAiB,SAAS,OAAO,SAAS,OAAO,GAAK,SAAS,OAAO,EAAK,CAAU,SAAS,SAAS,IAAI,GAAG,QAAQ,aAAa,KAAK,GAAG,EAAK,CAAG,SAAwB,EAAU,CAAC,cAAY,oHAAoH,eAAa,GAAM,aAAW,GAAM,QAAM,GAAM,QAAM,EAAE,SAAO,GAAG,CAM74B,OAN84B,MAAoB,CAAC,GAAU,IAAS,OAAY,OAAO,IAAM,EAAQ,EAAc,EAAY,CAC3+B,EAAQ,EAAa,SAAS,OAAO,CAAI,EAAI,EAAQ,GAAE,EAAS,EAAQ,EAAM,CAAI,GAAW,EAAqB,EAAO,KAAK,UAAU,EAAQ,CAAC,GAAG,EAAM,EAChK,IAAI,EAAM,EAAW,EAAM,CAAC,GAAG,CAAC,EAAI,EAAM,EAAE,SAAS,SAAU,GAAG,CAAsC,IAAM,EAAQ,EAAzC,IAAI,IAAI,SAAS,SAAS,CAAgC,OAAO,CAAI,EAAI,EAAQ,GAAE,EAAS,EAAQ,EAAM,CAAI,GAAW,EAAqB,EAAO,KAAK,UAAU,EAAQ,CAAC,GAAG,EAAM,CAAC,EAAM,SAAgB,EAAE,CAAI,GAAM,QAAQ,KAAK,8BAA8B,EAAE,CACnV,IAAM,MAAc,CAAC,IAAM,EAAM,EAAa,SAAS,OAAO,CAAC,GAAG,EAAa,SAAS,SAAS,EAAQ,EAAE,CAAC,EAAI,EAAM,CAAC,CAAC,IAAM,EAAa,EAAW,EAAM,CAAI,EAAI,EAAa,EAAC,EAAmB,EAAa,EAAa,EAAM,GACrO,GAAW,CAA0C,IAAM,EAAjC,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,CAAsB,IAAI,GAAI,WAAW,EAAU,EAAG,CAAC,CACrG,MAAU,GAAW,CAA2C,OAA1C,EAAO,iBAAiB,WAAW,EAAM,KAAW,CAAC,EAAO,QAAQ,aAAa,CAAC,EAAO,oBAAoB,WAAW,EAAM,GAAK,CAAC,EAAY,EAAa,EAAW,EAAM,CAAC,CACvL,EAAK,MAAM,CAAC,MAAM,CAAC,QAAM,SAAO,QAAQ,EAAE,cAAc,OAAO,CAAC,CAAC,0BAV1C,IAA4B,IAAoD,CAAM,EAAO,gBAAsB,EAAS,CAAC,aAAa,aAAa,eAAe,cAAc,WAAW,SAAS,QAAQ,SAAS,UAAU,SAAS,SAAS,CAUzM,EAAoB,EAAU,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,qBAAqB,aAAa,oHAAoH,CAAC,aAAa,CAAC,KAAK,EAAY,QAAQ,MAAM,gBAAgB,aAAa,GAAM,CAAC,WAAW,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,CAAC,MAAM,CAAC,KAAK,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAK,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC"}