class serpWrap{constructor(t=0,e){this.t=e,this.i=document,this.s={h:{title:{o:70,style:"20px arial",p:580,l:1},text:{o:160,style:"14px arial",p:990,l:1},path:{p:380,style:"14px arial"}},mobile:{g:{u:360,m:"Galaxy S5",mobile:!0,N:8,title:{o:70,style:"18px Roboto",p:920,l:1.02},text:{o:130,style:"14px Roboto",p:1300,l:1.02},path:{p:327,style:"12px Roboto",v:!0}},S:{m:"Pixel 2",mobile:!0,u:411,N:8,title:{o:70,style:"18px Roboto",p:920,l:1.02},text:{o:130,style:"14px Roboto",p:980,l:1.02},path:{p:327,style:"12px Roboto",v:!0}},k:{m:"iPad",mobile:!0,u:768,N:8,title:{o:70,style:"18px Roboto",p:920,l:1.02},text:{o:130,style:"14px Roboto",p:980,l:1.02},path:{p:327,style:"12px Roboto",v:!0}}}},this.W="sistrix.com",this.P=this.s.h,this.s.mobile[t]?this.R=this.s.mobile[t]:this.R=this.s.mobile[Object.keys(this.s.mobile)[0]],this.j=getNode(".app-snippet-text-description"),this.C=getNode(".app-snippet-text-progress-badge"),this.T=getNode(".app-snippet-title-progress-badge"),this.L=getNode("#app-snippet-title-input"),this.D=getNode("#app-snippet-text-input"),this.V=getNode("#app-snippet-url-input"),this.A=getNode("#app-snippet-keyword-input"),this.H=getNode("#app-snippet-show-rich-snippet"),this.O=getNode("#app-snippet-show-date"),this.U=getNode("#app-snippet-url-submit"),this.G=getNode("#app-snippet-emojis-select"),this.F=getNode("#app-snippet-emoji-pos"),this.M=getNode(".snippets"),this.$=getNode(".snippet-box.desktop"),this.B=getNode(".snippet-box.mobile"),this.I=getNode("#mobile-device"),this.Z=getNode("#limit-hidden"),this._=getNode("#url-alert"),this.J=getNode("#app-snippet-url"),this.K=getNode("#app-snippet-title"),this.q=getNode("#app-snippet-title-characters"),this.X=getNode("#app-snippet-title-size"),this.Y=this.$.querySelector(".snippet-text"),this.tt=getNode("#app-snippet-text-characters"),this.et=getNode("#app-snippet-text-size"),this.it=this.B.querySelector(".snippet-url"),this.st=this.B.querySelector(".snippet-title"),this.ht=this.B.querySelector(".snippet-text"),this.ot=this.B.querySelector("img.snippet-favicon"),this.at=this.B.querySelector("#faviconinput"),this.pt=getNodes(".app-snippet-date"),this.nt=getNodes(".app-snippet-rich"),this.lt=getNode("#app-snippet-title-progress"),this.rt=getNode("#app-snippet-text-progress"),this.dt={ct:this.H.checked,gt:this.O.checked},this.R.hasOwnProperty("deviceWidth")?(this.I.style.width=this.R.u+"px",this.I.style.paddingLeft=this.R.N+"px",this.I.style.paddingRight=this.R.N+"px",this.R.path.p=this.R.u-32-28-16-2*this.R.N):this.B.style.width="auto",this.ut=!1,this.xt=getNode("#app-snippet-show-mobile"),this.ft=getNode("#app-snippet-mobile-selector");for(const[t,e]of Object.entries(this.s.mobile)){let i=this.ft.hasAttribute("preselect")?this.ft.getAttribute("preselect"):null,s=this.i.createElement("option");s.value=t,s.innerText=e.m?e.m:t,s.value==i&&(s.selected=!0,this.bt(s.value)),this.ft.appendChild(s)}this.Nt()}bt(t){this.R=this.s.mobile[t],this.R.hasOwnProperty("deviceWidth")?(this.I.style.width=this.R.u+"px",this.I.style.paddingLeft=this.R.N+"px",this.I.style.paddingRight=this.R.N+"px",this.R.path.p=this.R.u-32-28-16-2*this.R.N):this.B.style.width="auto",this.updateDisplayValues()}vt(t){let e=0;if(this.i.selection){t.focus();var i=this.i.selection.createRange();i.moveStart("character",-t.value.length),e=i.text.length}else(t.selectionStart||"0"==t.selectionStart)&&(e=t.selectionStart);return e}yt(t,e){if(t.setSelectionRange)t.focus(),t.setSelectionRange(e,e);else if(t.createTextRange){const i=t.createTextRange();i.collapse(!0),i.moveEnd("character",e),i.moveStart("character",e),i.select()}}wt(t){let e=this.A.value;if(""!=e.trim()){e=e.toLowerCase().trim();let i=t.toLowerCase(),s="",h=0;for(h=0;h<i.length-e.length;h++)i.substr(h,e.length)==e?(s+="<b>"+t.substr(h,e.length)+"</b>",h+=e.length-1):s+=t.substr(h,1);return s+=t.substr(h,t.length-h),s}return t}St(t=this.P){let e=this.V.value,i=this.kt(e,t);t.hasOwnProperty("mobile")&&t.mobile?this.it.innerHTML=i:this.J.innerHTML=i}Wt(t,e,i,s,h=this.P){const o=this.Et(t,h[e].style),a=100/h[e].p*o;a>=100?(i.setAttribute("aria-valuenow",100),i.style.width="100%",i.className="progress-bar progress-bar-danger",this.Pt("danger",s)):a>80?(i.setAttribute("aria-valuenow",a),i.style.width=a+"%",i.className="progress-bar progress-bar-warning",this.Pt("warning",s)):(i.setAttribute("aria-valuenow",a),i.style.width=a+"%",i.className="progress-bar",this.Pt("success",s))}Rt(t=!1,e=this.P){t=t||this.L.value;let i=this.jt(t,"title",e);const s=this.Et(t,e.title.style);i=this.wt(i),this.X&&(e.hasOwnProperty("mobile")&&e.mobile?this.st.innerHTML=i:(this.K.innerHTML=i,this.q.innerHTML=t.length,this.X.innerHTML=s))}Ct(t=!1,e=this.P){t=t||this.D.value;let i=this.jt(t,"text",e);const s=this.Et(t,e.text.style);i=this.wt(i),this.et&&(e.hasOwnProperty("mobile")&&e.mobile?this.ht.innerHTML=i:(this.Y.innerHTML=i,this.tt.innerHTML=t.length,this.et.innerHTML=s))}Nt(){let t=this;DOMReady((function(){t.U.addEventListener("click",(function(){t.urlSubmit(t)})),t.U.addEventListener("click",(function(e){e.preventDefault(),dataLayer.push({Tt:"SERP Snippet Generator",Lt:"Ergebnisanzeige",zt:t.V.value,Dt:"app.sistrix.com",Vt:!1,event:"updEvents"})})),t.V.addEventListener("keyup",(function(e){e.preventDefault(),dataLayer.push({Tt:"SERP Snippet Generator",Lt:"Ergebnisanzeige",zt:t.V.value,Dt:"app.sistrix.com",Vt:!1,event:"updEvents"})})),t.V.addEventListener("keyup",(function(e){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex"),e.preventDefault(),e.stopPropagation(),/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/g.test(t.V.value)?t.U.disabled=!1:t.U.disabled=!0,t.St(),t.St(t.R)})),t.L.addEventListener("keyup",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex"),t.Rt(this.value),t.Wt(this.value,"title",t.lt,t.T,t.P),t.Rt(!1,t.R);const e=t.vt(this);t.F.innerHTML="title/"+e})),t.D.addEventListener("keyup",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex"),t.Ct(this.value),t.Wt(this.value,"text",t.rt,t.C,t.P),t.Ct(!1,t.R);const e=t.vt(this);t.F.innerHTML="text/"+e})),t.A.addEventListener("keyup",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex"),t.Rt(),t.Ct(),t.Rt(!1,t.R),t.Ct(!1,t.R);const e=t.vt(this);t.F.innerHTML="keyword/"+e})),t.L.addEventListener("click",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex");const e=t.vt(this);t.F.innerHTML="title/"+e})),t.D.addEventListener("click",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex");const e=t.vt(this);t.F.innerHTML="text/"+e})),t.A.addEventListener("click",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex");const e=t.vt(this);t.F.innerHTML="keyword/"+e})),t.G.addEventListener("change",(function(){hasClass(t.M,"js-no-flex")||(t.M.style.display="flex");let e=t.F.innerHTML.split("/");const i=1 in e?e[1]:0;e=e[0];let s=null;"title"==e?s=t.L:"text"==e?s=t.D:"keyword"==e&&(s=t.A),s&&(s.value=s.value.substr(0,i)+this.value+s.value.substr(i,s.length)),"title"==e?(t.Rt(!1,t.R),t.Wt(this.value,"title",t.lt,t.T,t.P)):"text"==e?(t.Ct(!1,t.R),t.Wt(this.value,"text",t.rt,t.C,t.P)):"keyword"==e&&(t.Rt(!1,t.R),t.Wt(this.value,"title",t.lt,t.T,t.P))})),t.H.addEventListener("change",(function(){t.At()})),t.O.addEventListener("change",(function(){t.At()})),t.ft.addEventListener("change",(function(){t.bt(this.options[this.selectedIndex].value)})),t.xt&&t.xt.addEventListener("change",(function(){let e=this.labels[0],i=e.innerText;e.innerText=e.getAttribute("toggle-title"),e.setAttribute("toggle-title",i),isVisible(t.ft.parentNode)?t.ft.style.display="none":t.ft.style.display="inherit",e.classList.contains("caret")&&(e.classList.contains("caret-up")?(e.classList.remove("caret-up"),e.classList.add("caret-down")):(e.classList.remove("caret-down"),e.classList.add("caret-up"))),this.checked?showNode(t.B):hideNode(t.B)}))}))}Ht(t=""){let e=window.decodeURIComponent(t);return e=e.trim().replace(/\s/g,""),!!/^(:\/\/)|((f|ht)tps?:\/\/)/.test(e)}Ot(t=""){let e=window.decodeURIComponent(t);return e=e.trim().replace(/\s/g,""),/^(:\/\/)/.test(e)?"http"+e:/^(f|ht)tps?:\/\//i.test(e)?e:"http://"+e}kt(t,e=this.P){t=this.Ot(t);let i=" -d#",s=!1,h=new URL(t),o=h.pathname.replace(/(\.(html|pdf|png|jpe?g|gif|mp4|mov))$|\/$/gi,""),a=o.split("/").filter(t=>t).length,p=o.replace(/\//g," › "),n=p.trim().length>1?p:"",l=(e.path.hasOwnProperty("showProtocol")?h.protocol+"//":"")+h.host,r=l+n,d=o.split("/").filter(t=>t),c=e.path.p;if(this.Et(r+"  ... -d#",e.path.style)>c){let t=d.map(t=>t),i=t.length>=0?t[t.length-1]:null,h="",o=l,p=t.length<=1||2==a;if(a>0&&i.length<=2&&(t.pop(),i=t[t.length-1]),p)h=l+" › "+t.pop();else{for(;this.Et(o+"  ... -d#",e.path.style)<c;)if(h=o,o=o+" › "+t.shift(),o=o.trim(),0==t.length){h=o;break}if(t.length>0){h=l+" ›  ... › "+t.pop()}}if(this.Et(h+"  ... -d#")>c){let t=h.split(" ").filter(t=>t),i=t.pop(),o="";for(h=t.join(" ")+" ";i.length&&this.Et(t.join(" ")+" "+o,e.path.style)<c;)h=t.join(" ")+" "+o,o+=i.charAt(0),i=i.substr(1);i.length>0&&(s=!0)}r=h}return s&&(i=" ... -d#"),r=this.Ut(r)+i,r=r.replace(l,'<span class="snippet-path-host">'+l+"</span>"),r=r.replace(/\-d\#/,'<span class="snippet-path-btn"></span>'),r}Et(t,e){this.dt.gt&&(t="01.01.1980 - "+t);let i=(this.Et.canvas||(this.Et.canvas=this.i.createElement("canvas"))).getContext("2d");return i.font=e,Math.round(i.measureText(t).width)}jt(t,e,i=this.P){let s=t=decodeEntities(t),h="";if(this.Et(t,i[e].style)>i[e].p){let o=t.split(" "),a="",p="";for(h="&nbsp;...";this.Et(p,i[e].style)<i[e].p;)a=p,p=p+" "+o.shift(),p=p.trim();i[e].l&&a!=p&&this.Et(p,i[e].style)<i[e].p*i[e].l&&(a=p.trim(),h="&nbsp;..."),s=a}return s=this.Ut(s),s+h}Ut(t,e=5){let i=0;for(;!t.charAt(t.length-1).match(/(?:([\p{L}\p{Nd}\p{Po}\p{Ps}]))$/giu)&&i<e&&!(t.length>1&&t.charAt(t.length-2).match(/(?:([\p{L}\p{Nd}]))/giu));)t=t.slice(0,-1),i++;return t}At(){this.dt={ct:this.H.checked,gt:this.O.checked},this.dt.gt?this.pt.forEach((function(t){t.style.display="inline"})):this.pt.forEach((function(t){t.style.display="none"})),this.dt.ct?this.nt.forEach((function(t){t.style.display="inherit"})):this.nt.forEach((function(t){t.style.display="none"})),this.Ct()}Gt(t,e){this.J.innerHTML=this.kt(t.url),this.j&&this.it&&(this.it.innerHTML=this.kt(t.url,this.R),this.updateDisplayValues(t),this.j.classList.remove("meta-description","badge","badge-success","og-meta","badge","badge-grey"),!0===t.Ft&&(this.j.innerHTML="meta",this.j.classList.add("meta-description","badge","badge-default"),"undefined"!=typeof metaDescTooltip&&this.j.classList.add("csstooltip"),this.j.setAttribute("data-tooltip",metaDescTooltip)),!1===t.Ft&&t.text&&(this.j.innerHTML="og:description",this.j.classList.add("og-meta","badge","badge-grey"),"undefined"!=typeof metaDescTooltip&&(this.j.classList.add("csstooltip"),this.j.setAttribute("data-tooltip",ogDescTooltip))),!1!==t.Ft||t.text&&""!==t.text.toString()||(this.j.innerHTML="",this.j.className="",this.j.setAttribute("data-tooltip",""),this.j.classList.remove("csstooltip")),this.L.value=decodeEntities(t.title),this.D.value=decodeEntities(t.text),this.at.value=t.Mt,this.V.className="form-control input-large",enableNodes(e,"#result-frame"))}urlSubmit(t){this.V.value;let e=this.V,i=(this.U,"input, textarea, select, option, button");e.className="form-control input-large bg";let s=serializeForm(e.closest("form")),h=this;disableNodes(i,["app-snippet-url-input"],"#result-frame"),ajaxLoad(t.t,(function(s){if("error"in(s=JSON.parse(s))){if(!t._){const i=h.i.createElement("div");t._=i,i.innerHTML=urlError,i.className="alert alert-danger",i.id="url-alert",i.style.marginTop="28px",i.style.maxWidth="100%",e.parentNode.parentNode.insertBefore(i,null)}enableNodes(i),t.M.style.display="none",s.title="",s.text=""}else t._&&t._.remove(),enableNodes(i),hasClass(t.M,"js-no-flex")||(t.M.style.display="flex");if("limitReached"in s){let e=t.Z;e.classList.contains("d-none")&&e.classList.remove("d-none")}else t.Gt(s,i)}),null,s)}$t(t=!1){t=t||this.at.value,this.ot&&"undefined"!==t&&!1!==t&&(this.ot.src=t,this.at.value=t)}updateDisplayValues(t=null){t?(this.$t(t.favicon),this.Rt(t.title),this.Ct(t.text),this.Rt(t.title,this.R),this.Ct(t.text,this.R),this.St(),this.St(this.R),this.Wt(t.title,"title",this.lt,this.T,this.P),this.Wt(t.text,"text",this.rt,this.C,this.P)):(this.Rt(!1),this.Ct(!1),this.Rt(!1,this.R),this.Ct(!1,this.R),this.St(),this.St(this.R),this.Wt(this.L.value,"title",this.lt,this.T,this.P),this.Wt(this.D.value,"text",this.rt,this.C,this.P))}Pt(t,e){if(e&&(e.querySelectorAll(".badge").length>0&&e.querySelectorAll(".badge").forEach((function(t){t.remove()})),badgeTexts&&badgeTexts.hasOwnProperty(t))){let i=document.createElement("span");i.classList.add("badge","badge-"+t,"csstooltip"),i.innerHTML=badgeTexts[t].title,i.innerHTML=badgeTexts[t].title,i.setAttribute("data-tooltip",badgeTexts[t].tooltip),e.appendChild(i)}}}