PageSourceSearch

https://lodz-psrwn.pl/wp-content/plugins/holler-box/assets/js/popups.min.js?ver=1791590856

js lodz-psrwn.pl collected 2026-10-10 00:08:05 UTC 41,676 bytes, 313 lines download raw bytes

1(()=>{const Cookies={MINUTE_IN_SECONDS:60,HOUR_IN_SECONDS:this.MINUTE_IN_SECONDS*60,DAY_IN_SECONDS:this.HOUR_IN_SECONDS*24,WEEK_IN_SECONDS:this.DAY_IN_SECONDS*7,MONTH_IN_SECONDS:this.DAY_IN_SECONDS*30,closedPopups:"holler-closed-popups",popupConversions:"holler-popup-conversions",popupViews:"holler-popup-views",pageViews:"holler-page-views",sessions:"holler-sessions",addClosedPopup(id){let allClosed=this.getCookie(this.closedPopups,"").split(",");allClosed.push(id);this.setCookie(this.closedPopups,allClosed.join(),HollerBox.cookie_lifetime)},isClosed(id){let allClosed=this.getCookie(this.closedPopups,"").split(",").map(id=>parseInt(id));return allClosed.includes(id)},addPopupCount(cookie,id){let counts=JSON.parse(this.getCookie(cookie,"{}"));if(!counts){counts={}}if(counts[id]){counts[id]+=1}else{counts[id]=1}this.setCookie(cookie,JSON.stringify(counts),HollerBox.cookie_lifetime)},getPopupCount(cookie,id){let counts=JSON.parse(this.getCookie(cookie,"{}"));return parseInt(counts[id]??0)},addPopupConversion(id){this.addPopupCount(this.popupConversions,id)},getPopupConversions(id){return this.getPopupCount(this.popupConversions,id)},addPopupView(id){this.addPopupCount(this.popupViews,id)},getPopupViews(id){return this.getPopupCount(this.popupViews,id)},addPageView(){this.setCookie(this.pageViews,this.getPageViews()+1,this.DAY_IN_SECONDS)},getPageViews(){return parseInt(this.getCookie(this.pageViews,0))},setCookie(name,value,duration){if(isBuilderPreview()){return}let d=new Date;d.setTime(d.getTime()+duration*1e3);let expires="expires="+d.toUTCString();document.cookie=name+"="+value+";"+expires+";path=/"},getCookie(cname,_default=null){let name=cname+"=";let ca=document.cookie.split(";");for(let i=0;i<ca.length;i++){let c=ca[i];while(c.charAt(0)==" "){c=c.substring(1)}if(c.indexOf(name)==0){return c.substring(name.length,c.length)}}return _default},getSessions(){let obj=JSON.parse(this.getCookie(this.sessions,"{}"));return parseInt(obj.sessions||0)},maybeAddSession(){let obj=JSON.parse(this.getCookie(this.sessions,"{}"));let lastSession=new Date(obj.lastSession);lastSession.setDate(lastSession.getDate()+1);let now=new Date;if(now>lastSession){this.setCookie(this.sessions,JSON.stringify({sessions:parseInt(obj.sessions)+1,lastSession:now.toString()}),HollerBox.cookie_lifetime)}},hasAccepted(){if(!HollerBox.settings.cookie_compliance){return true}let{cookie_name:cookie_name="",cookie_value:cookie_value=""}=HollerBox.settings;return this.getCookie(cookie_name)===cookie_value}};function ApiError(message){this.name="ApiError";this.message=message}ApiError.prototype=Error.prototype;async function apiPost(url="",data={},opts={}){const response=await fetch(url,{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":HollerBox.nonces._wprest},body:JSON.stringify(data),...opts});let json=await response.json();if(!response.ok){throw new ApiError(json.message)}return json}const maybeLog=error=>{if(HollerBox.settings?.script_debug_mode){console.debug(error)}};const overlay=()=>{return`
2        <div class="holler-box-overlay"></div>`};const closeButton=()=>{return`
3        <button class="holler-box-modal-close">&times;</button>`};const credit=()=>{if(HollerBox.settings?.credit_disabled){return""}return`
4        <div class="holler-box-credit"><a href="https://hollerwp.com/">⚡ by
5            HollerBox</a></div>`};const createHTML=HTML=>{let div=document.createElement("div");div.innerHTML=HTML;return div.firstElementChild};const gdprInput=()=>{const HTML=createHTML(HollerBox.settings.gdpr_text);return`<label class="holler-gdpr-consent">
6        <input type="checkbox"
7               name="gdpr_consent"
8               value="yes" required>
9        <span>${HTML.innerHTML}</span></label>`};const nameInput=(placeholder="Your name",required=true)=>{return`<input class="holler-box-input" type="text" name="name"
10                   placeholder="${placeholder}" ${required?"required":""}>`};const phoneInput=(placeholder="Mobile Number",required=false)=>{return`<input class="holler-box-input" type="tel" name="phone"
11                   placeholder="${placeholder}" ${required?"required":""}>`};const emailInput=(placeholder="Your email")=>{return`<input class="holler-box-input" type="email" name="email"
12                   placeholder="${placeholder}" required>`};const submitButton=(text,type="submit")=>{return`
13        <button type="${type}" class="holler-box-button">${text}</button>`};const __title=title=>{return`
14        <h2 class="holler-box-modal-title">${title}</h2>
15    `};const __content=content=>{return`
16        <div class="holler-box-modal-content">
17            ${content}
18        </div>
19    `};const __chatResponse=content=>{return`
20        <div class="holler-box-chat-response">
21            <div class="content">
22                ${content}
23            </div>
24        </div>
25    `};const __chatMessage=({content,avatar})=>{content=`<div class="content">${content}</div>`;return`
26        <div class="holler-box-chat-message">
27            ${avatar?`<img src="${avatar}" class="avatar" alt="">`:""}
28            ${content}
29        </div>
30    `};const notificationClosedTemplate=({id,position})=>{return`
31        <div id="${id}" class="holler-box holler-notification-box">
32            <div class="positioner ${position}">
33                <div class="animation slide-in">
34                    <div class="holler-box-modal notification-closed">
35                        <svg xmlns="http://www.w3.org/2000/svg"
36                             viewBox="0 0 512 512">
37                            <rect width="107.6" height="145.6" x="319.1"
38                                  y="76.6" fill="#fff" rx="5" ry="5"/>
39                            <path fill="#f44336"
40                                  d="M373 0a139 139 0 1 0 1 278 139 139 0 0 0-1-278zm22 187a16 16 0 0 1-32 0v-70h-11a16 16 0 0 1 0-32h27c8 0 16 8 16 16zm0 0"/>
41                            <path fill="#ffa000"
42                                  d="M299 427a85 85 0 1 1-171 0 85 85 0 0 1 171 0zm0 0"/>
43                            <path fill="#ffc107"
44                                  d="M380 320h-7A182 182 0 0 1 220 43h-7c-82 0-149 67-149 149v59c0 43-18 83-51 110a37 37 0 0 0 24 66h352a37 37 0 0 0 24-66c-13-12-24-26-33-41zm0 0"/>
45                        </svg>
46                    </div>
47                </div>
48            </div>
49        </div>`};const SubmitActions={close:popup=>{popup.close()},redirect:popup=>{let{redirect_url:redirect_url=""}=popup;let url=new URL(redirect_url);let home=new URL(HollerBox.home_url);if(isBuilderPreview()){if(url.hostname!==home.hostname){popup.close();return}url.searchParams.append("suppress_hollerbox",1)}window.open(url,"_self")},message:popup=>{popup.open()}};function sanitizeTextField(string){const map={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};const reg=/[&<>"'/]/gi;return string.replace(reg,match=>map[match])}const CommonActions={maybeDisableScrolling:popup=>{if(popup.disable_scrolling){document.body.classList.add("disable-scrolling")}},enableScrolling:()=>{document.body.classList.remove("disable-scrolling")},notificationClosed:popup=>{popup.closed=true;popup.open()},notificationOpened:popup=>{if(popup.closed){document.getElementById(popup.id).addEventListener("click",e=>{popup.close().then(()=>{popup.closed=false;popup.open()})})}},formSubmitted:(popup,filters={})=>{if(popup.use_custom_form){let customForm;let customHTML=createHTML(popup.custom_form_html);if(customHTML.tagName==="FORM"){customForm=customHTML}else{customForm=customHTML.querySelector("form");if(!customForm){alert("Invalid custom form HTML");return}}let form=popup.querySelector("form.holler-box-form");customForm.classList.add("holler-box-form","custom-form");Array.from(customForm.elements).forEach(el=>{switch(el.tagName){case"INPUT":switch(el.type){default:el.classList.add("holler-box-input");break;case"submit":case"button":el.classList.add("holler-box-button");break;case"radio":case"checkbox":break}break;case"TEXTAREA":case"SELECT":el.classList.add("holler-box-input");break;case"BUTTON":el.classList.add("holler-box-button");break}});form.replaceWith(customForm);customForm.addEventListener("submit",e=>{if(isBuilderPreview()){e.preventDefault()}customForm.querySelector("button.holler-box-button").innerHTML='<span class="holler-spinner"></span>';Array.from(customForm.elements).forEach(el=>el.disabled=true);popup.converted()});return}const{modifyFormData:modifyFormData=fd=>{},modifyPayload:modifyPayload=pl=>{}}=filters;const{id,after_submit:after_submit="close"}=popup;document.querySelector(`#${id} form.holler-box-form`).addEventListener("submit",e=>{e.preventDefault();let form=e.target;let formData=new FormData(form);formData.append("location",window.location.href);formData.append("referer",document.referrer);modifyFormData(formData);form.querySelectorAll("input, button").forEach(el=>el.disabled=true);form.querySelector("button").innerHTML='<span class="holler-spinner"></span>';let payload=Object.fromEntries(formData);modifyPayload(payload);const submit=()=>apiPost(`${HollerBox.routes.submit}/${popup.ID}`,payload).then(({status:status="success",failures:failures=[]})=>{if(status==="failed"){if(!failures.length){alert("Something when wrong, please try again later.");popup.close();return}console.log(failures);popup.querySelector("form").innerHTML=[`<div class="hollerbox-integration-errors">`,`<p>There are issues with some of your integrations:</p>`,`<ul>`,...failures.map(f=>`<li>${f}</li>`),`</ul>`,`<p>Only admins see this message.</p>`,`</div>`].join("");return}popup.submitted=true;popup.converted(false);SubmitActions[after_submit](popup);document.dispatchEvent(new CustomEvent("holler_submit",{formData:formData,form:form}))}).catch(e=>{maybeLog(e);popup.close()});return submit()})},buttonClicked:popup=>{const{id,button_link}=popup;let button=document.querySelector(`#${id} button.holler-box-button`);button.addEventListener("click",e=>{e.preventDefault();button.innerHTML='<span class="holler-spinner"></span>';popup.converted().then(()=>{window.open(button_link,"_self")})})}};const isGDPREnabled=()=>{return HollerBox.settings?.gdpr_enabled??false};const formProps=({enable_name:enable_name=true,enable_phone:enable_phone=false,...props})=>({name:enable_name,phone:enable_phone,...props});const form=props=>{const{email:email=true,name:name=true,phone:phone=false,direction:direction="vertical",name_placeholder:name_placeholder="Name",email_placeholder:email_placeholder="Email",phone_placeholder:phone_placeholder="Phone",button_text:button_text="Subscribe",phone_required:phone_required=false,name_required:name_required=true}=formProps(props);let classes=["holler-box-form",direction,name?"has-name":"",phone?"has-phone":"",isGDPREnabled()?"has-gdpr":""];return`
50        <form class="${classes.join(" ")}">
51            <div class="fields">
52                ${name?nameInput(name_placeholder,name_required):""}
53                ${email?emailInput(email_placeholder):""}
54                ${phone?phoneInput(phone_placeholder,phone_required):""}
55                ${direction==="vertical"&&isGDPREnabled()?gdprInput():""}
56                ${submitButton(button_text)}
57            </div>
58            ${direction==="horizontal"&&isGDPREnabled()?gdprInput():""}
59        </form>`};const PopupTemplates={notification_box:{render:({id:id="",position:position="bottom-right",post_content:post_content="",avatar:avatar="",closed:closed=false})=>
59{if(closed){return notificationClosedTemplate({id:id,position:position})}return`
60            <div id="${id}" class="holler-box holler-notification-box">
61                <div class="positioner ${position}">
62                    <div class="animation slide-in">
63                        <div class="holler-box-modal">
64                            ${closeButton()}
65                            <div class="display-flex">
66                                ${avatar?`<img src="${avatar}" alt="">`:""}
67                                ${__content(post_content)}
68                            </div>
69                            ${credit()}
70                        </div>
71                    </div>
72                </div>
73            </div>`},onOpen:CommonActions.notificationOpened,onClosed:CommonActions.notificationClosed},notification_box_with_button:{render:({id:id="",position:position="bottom-right",post_content:post_content="",avatar:avatar="",button_text:button_text="",closed:closed=false})=>{if(closed){return notificationClosedTemplate({id:id,position:position})}return`
74            <div id="${id}"
75                 class="holler-box holler-notification-box with-button">
76                <div class="positioner ${position}">
77                    <div class="animation slide-in">
78                        <div class="holler-box-modal ">
79                            ${closeButton()}
80                            <div class="display-flex">
81                                ${avatar?`<img src="${avatar}" alt="">`:""}
82                                ${__content(post_content)}
83                            </div>
84                            <div class="holler-button-cta">
85                                ${submitButton(button_text,"button")}
86                            </div>
87                            ${credit()}
88                        </div>
89                    </div>
90                </div>
91            </div>`},onOpen:popup=>{CommonActions.notificationOpened(popup);CommonActions.buttonClicked(popup)},onClosed:CommonActions.notificationClosed},notification_box_with_form:{render:({id:id="",position:position="bottom-right",post_content:post_content="",avatar:avatar="",button_text:button_text="Signup",email_placeholder:email_placeholder="Email",success_message:success_message="",closed:closed=false,submitted:submitted=false})=>{if(closed){return notificationClosedTemplate({id:id,position:position})}return`
92            <div id="${id}"
93                 class="holler-box holler-notification-box with-form ${submitted?"no-animation":""}">
94                <div class="positioner ${position}">
95                    <div class="animation slide-in">
96                        <div class="holler-box-modal">
97                            ${closeButton()}
98                            <div class="display-flex">
99                                ${avatar?`<img src="${avatar}" alt="">`:""}
100                                ${__content(submitted?success_message:post_content)}
101                            </div>
102                            ${submitted?"":form({direction:"horizontal",name:false,button_text:button_text,email_placeholder:email_placeholder})}
103                            ${credit()}
104                        </div>
105                    </div>
106                </div>
107            </div>`},onOpen:popup=>{CommonActions.notificationOpened(popup);CommonActions.formSubmitted(popup)},onClosed:CommonActions.notificationClosed},fake_chat:{render:popup=>{const{id:id="",position:position="bottom-right",post_content:post_content="",avatar:avatar="",button_text:button_text="",message_placeholder:message_placeholder="Type your message",state:state="message",closed:closed=false,doAnimations:doAnimations=true}=popup;if(closed){return`
108              <div id="${id}" class="holler-box holler-notification-box">
109                  <div class="positioner ${position}">
110                      <div class="animation slide-in">
111                          <div class="holler-box-modal notification-closed">
112                              <svg xmlns="http://www.w3.org/2000/svg"
113                                   viewBox="0 0 512 512">
114                                  <path fill="#fff"
115                                        d="M303.4 61.4A207 207 0 0 0 195 31C89 31 0 110 0 211a169 169 0 0 0 32 98.7L2.6 401.4a15 15 0 0 0 21.1 18l88.8-45.2c3.6 1.6 7.3 3 11 4.3A198.2 198.2 0 0 1 92 271c0-114.9 96.7-203.2 211.4-209.6z"/>
116                                  <path fill="#fff"
117                                        d="M480 369.7a169 169 0 0 0 32-98.7c0-101.1-89-180-195-180s-195 79-195 180c0 101.1 89 180 195 180 28.4 0 56.7-5.8 82.4-16.8l88.8 45.2a15 15 0 0 0 21-18zM256 286a15 15 0 1 1 0-30 15 15 0 0 1 0 30zm60 0a15 15 0 1 1 0-30 15 15 0 0 1 0 30zm60 0a15 15 0 1 1 0-30 15 15 0 0 1 0 30z"/>
118                              </svg>
119                          </div>
120                      </div>
121                  </div>
122              </div>`}if(!popup.messages){popup.messages=[]}if(!popup.messages.length){popup.messages.push(__chatMessage({avatar:avatar,content:post_content}))}let input;switch(state){default:case"message":case"message_2":input=`<textarea rows="1" name="message"
123                               placeholder="${message_placeholder}"
124                               class="holler-box-input" required></textarea>`;break;case"name":input=nameInput();break;case"email":input=emailInput();break}if(state==="done"){return`
125              <div id="${id}"
126                   class="holler-box holler-notification-box with-chat">
127                  <div class="positioner ${position}">
128                      <div class="animation ${doAnimations?"slide-in":""}">
129                          <div class="holler-box-modal ">
130                              ${closeButton()}
131                              ${popup.messages.join("")}
132                              <div class="close-chat-wrap">
133                                  <button class="close-chat">&times; Close
134                                      chat
135                                  </button>
136                              </div>
137                              ${credit()}
138                          </div>
139                      </div>
140                  </div>
141              </div>`}return`
142            <div id="${id}"
143                 class="holler-box holler-notification-box with-chat">
144                <div class="positioner ${position}">
145                    <div class="animation ${doAnimations?"slide-in":""}">
146                        <div class="holler-box-modal ">
147                            ${closeButton()}
148                            ${popup.messages.join("")}
149                            <form class="holler-chat-form">
150                                ${input}
151                                <button type="submit" class="send-message">
152                                    <svg xmlns="http://www.w3.org/2000/svg"
153                                         viewBox="0 0 404.644 404.644">
154                                        <path fill="currentColor"
155                                              d="M5.535 386.177c-3.325 15.279 8.406 21.747 19.291 16.867l367.885-188.638h.037c4.388-2.475 6.936-6.935 6.936-12.08 0-5.148-2.548-9.611-6.936-12.085h-.037L24.826 1.6C13.941-3.281 2.21 3.189 5.535 18.469c.225 1.035 21.974 97.914 33.799 150.603l192.042 33.253-192.042 33.249C27.509 288.26 5.759 385.141 5.535 386.177z"/>
156                                    </svg>
157                                </button>
158                            </form>
159                            ${credit()}
160                        </div>
161                    </div>
162                </div>
163            </div>`},beforeOpen:popup=>{if(!popup.state){popup.state="message"}if(!popup.responses){popup.responses={}}if(!popup.messages){popup.messages=[]}},onOpen:popup=>{if(popup.closed){return CommonActions.notificationOpened(popup)}let modal=popup.querySelector(".holler-box-modal");modal.scrollTop=modal.scrollHeight;const form=document.querySelector(`#${popup.id} form.holler-chat-form`);if(popup.state!=="message"){document.querySelector(`#${popup.id} .holler-box-input`)?.focus()}if(["message","more"].includes(popup.state)){document.querySelector(`#${popup.id} .holler-box-input`).addEventListener("keydown",e=>{if(e.key==="Enter"&&!e.shiftKey){form.dispatchEvent(new Event("submit"))}})}if(popup.state==="done"){document.querySelector(`#${popup.id} .close-chat`).addEventListener("click",()=>{popup.close()})}if(!form){return}form.addEventListener("submit",e=>{e.preventDefault();let fd=new FormData(e.target);switch(popup.state){default:case"message":let message=sanitizeTextField(fd.get("message"));popup.responses.message=message;popup.messages.push(__chatResponse(message));popup.messages.push(__chatMessage({content:popup.name_prompt??"<p>What is your name?</p>",avatar:popup.avatar}));popup.state="name";break;case"name":let name=sanitizeTextField(fd.get("name"));popup.responses.name=name;popup.messages.push(__chatResponse(name));popup.messages.push(__chatMessage({content:popup.email_prompt??"<p>What is your best email address?</p>",avatar:popup.avatar}));popup.state="email";break;case"email":popup.responses.email=fd.get("email");popup.messages.push(__chatResponse(fd.get("email")));popup.messages.push(__chatMessage({content:popup.message_prompt??"<p>Thanks for providing that information!</p><p>Can you please describe your needs in more detail?</p>",avatar:popup.avatar}));popup.state="more";break;case"more":let message2="\n\n"+sanitizeTextField(fd.get("message"));popup.responses.message+=message2;popup.messages.push(__chatResponse(message2));popup.state="done";apiPost(`${HollerBox.routes.submit}/${popup.ID}`,popup.responses).then(r=>{popup.submitted=true;popup.converted(false);document.dispatchEvent(new CustomEvent("holler_submit",this.responses))}).then(()=>{switch(popup.after_submit){case"message":popup.messages.push(__chatMessage({content:popup.success_message,avatar:popup.avatar}));popup.open();break;case"close":popup.close();break;case"redirect":SubmitActions["redirect"](popup);break}}).catch(e=>maybeLog(e));break}popup.doAnimations=false;popup.open()})},onClosed:popup=>{CommonActions.notificationClosed(popup);popup.doAnimations=true}},popup_custom:{render:({id:id="",position:position="center-center",animation:animation="appear",post_content:post_content="",overlay_enabled:overlay_enabled=true})=>{return`
164            <div id="${id}" class="holler-box holler-popup holler-popup-custom">
165                ${overlay_enabled?overlay():""}
166                <div class="positioner ${position}">
167                    <div class="animation ${animation}">
168                        <div class="holler-box-modal">
169                            ${closeButton()}
170                            ${__content(post_content)}
171                        </div>
172                        ${credit()}
173                    </div>
174                </div>
175            </div>`},onOpen:CommonActions.maybeDisableScrolling,onClosed:CommonActions.enableScrolling},popup_standard:{render:({id:id="",position:position="center-center",animation:animation="appear",post_content:post_content="",button_text:button_text="Subscribe",submitted:submitted=false,success_message:success_message="",overlay_enabled:overlay_enabled=true,...props})=>{return`
176            <div id="${id}"
177                 class="holler-box holler-popup holler-popup-standard ${submitted?"no-animation":""}">
178                ${overlay_enabled?overlay():""}
179                <div class="positioner ${position}">
180                    <div class="animation ${animation}">
181                        <div class="holler-box-modal">
182                            ${closeButton()}
183                            ${__content(submitted?success_message:post_content)}
184                            ${submitted?"":form({direction:"vertical",...props})}
185                        </div>
186                        ${credit()}
187                    </div>
188                </div>
189            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_image_left:{render:({id:id="",position:position="center-center",animation:animation="appear",title:title="",post_content:post_content="",image_src:image_src="",button_text:button_text="Subscribe",submitted:submitted=false,success_message:success_message="",overlay_enabled:overlay_enabled=true,...props})=>{return`
190            <div id="${id}"
191                 class="holler-box holler-popup holler-popup-image-left ${submitted?"no-animation":""}">
192                ${overlay_enabled?overlay():""}
193                <div class="positioner ${position}">
194                    <div class="animation ${animation}">
195                        <div class="holler-box-modal">
196                            ${closeButton()}
197                            <div class="display-flex">
198                                <div class="left image-width"
199                                     style="background-image: url('${image_src}')">
200                                </div>
201                                <div class="right">
202                                    ${__content(submitted?success_message:post_content)}
203                                    ${submitted?"":form({direction:"vertical",button_text:button_text,...props})}
204                                </div>
205                            </div>
206                        </div>
207                        ${credit()}
208                    </div>
209                </div>
210            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_image_right:{render:({id:id="",position:position="center-center",animation:animation="appear",title:title="",post_content:post_content="",image_src:image_src="",submitted:submitted=false,success_message:success_message="",overlay_enabled:overlay_enabled=true,...props})=>{return`
211            <div id="${id}"
212                 class="holler-box holler-popup holler-popup-image-right ${submitted?"no-animation":""}">
213                ${overlay_enabled?overlay():""}
214                <div class="positioner ${position}">
215                    <div class="animation ${animation}">
216                        <div class="holler-box-modal">
217                            ${closeButton()}
218                            <div class="display-flex">
219                                <div class="left">
220                                    ${__content(submitted?success_message:post_content)}
221                                    ${submitted?"":form({direction:"vertical",...props})}
222                                </div>
223                                <div class="right image-width"
224                                     style="background-image: url('${image_src}')">
225                                </div>
226                            </div>
227                        </div>
228                        ${credit()}
229                    </div>
230                </div>
231            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_form_below:{render:({id:id="",position:position="center-center",animation:animation="appear",post_content:post_content="",image_src:image_src="",overlay_enabled:overlay_enabled=true,submitted:submitted=false,success_message:success_message="",...props})=>{return`
232            <div id="${id}"
233                 class="holler-box holler-popup holler-popup-form-below ${submitted?"no-animation":""}">
234                ${overlay_enabled?overlay():""}
235                <div class="positioner ${position}">
236                    <div class="animation ${animation}">
237                        <div class="holler-box-modal">
238                            ${closeButton()}
239                            <div class="display-flex">
240                                <div class="left">
241                                    ${__content(submitted?success_message:post_content)}
242                                </div>
243                                <div class="right image-width"
244                                     style="background-image: url('${image_src}')">
245                                </div>
246                            </div>
247                            ${submitted?"":form({direction:"horizontal",...props,phone:false})}
248                        </div>
249                        ${credit()}
250                    </div>
251                </div>
252            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_progress_bar:{render:({id:id="",position:position="center-center",animation:animation="appear",post_content:post_content="",image_src:image_src="",overlay_enabled:overlay_enabled=true,submitted:submitted=false,success_message:success_message="",...props})=>{return`
253            <div id="${id}"
254                 class="holler-box holler-popup holler-popup-progress-bar ${submitted?"no-animation":""}">
255                ${overlay_enabled?overlay():""}
256                <div class="positioner ${position}">
257                    <div class="animation ${animation}">
258                        <div class="holler-box-modal">
259                            ${closeButton()}
260                            <div class="holler-box-progress-bar-wrap">
261                                <div class="holler-box-progress-bar">
262                                    <div
263                                            class="holler-box-progress-bar-fill ${submitted?"filled":""}"></div>
264                                </div>
265                            </div>
266                            <div class="display-flex">
267                                <div class="left image-width"
268                                     style="background-image: url('${image_src}')">
269                                </div>
270                                <div class="right">
271                                    ${__content(submitted?success_message:post_content)}
272                                    ${submitted?"":form({direction:"vertical",...props})}
273                                </div>
274                            </div>
275                        </div>
276                        ${credit()}
277                    </div>
278                </div>
279            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_image_beside_text_top:{render:({id:id="",position:position="center-center",animation:animation="appear",title:title="",post_content:post_content="",image_src:image_src="",overlay_enabled:overlay_enabled=true,submitted:submitted=false,success_message:success_message="",...props})=>{return`
280            <div id="${id}"
281                 class="holler-box holler-popup holler-popup-image-beside-text-top ${submitted?"no-animation":""}">
282                ${overlay_enabled?overlay():""}
283                <div class="positioner ${position}">
284                    <div class="animation ${animation}">
285                        <div class="holler-box-modal">
286                            ${closeButton()}
287                            ${__content(submitted?success_message:post_content)}
288                            <div class="display-flex">
289                                <div class="left image-width"
290                                     style="background-image: url('${image_src}')">
291                                </div>
292                                ${submitted?"":form({direction:"vertical",...props})}
293                            </div>
294                        </div>
295                        ${credit()}
296                    </div>
297                </div>
298            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling},popup_full_image_background:{render:({id:id="",position:position="center-center",animation:animation="appear",image_src:image_src="",post_content:post_content="",overlay_enabled:overlay_enabled=true,submitted:submitted=false,success_message:success_message="",...props})=>{return`
299            <div id="${id}"
300                 class="holler-box holler-popup holler-popup-full-image-background ${submitted?"no-animation":""}">
301                ${overlay_enabled?overlay():""}
302                <div class="positioner ${position}">
303                    <div class="animation ${animation}">
304                        <div class="holler-box-modal"
305                             style="background-image: url('${image_src}')">
306                            ${closeButton()}
307                            ${__content(submitted?success_message:post_content)}
308                            ${submitted?"":form({direction:"vertical",...props})}
309                        </div>
310                        ${credit()}
311                    </div>
312                </div>
313            </div>`},onOpen:popup=>{CommonActions.formSubmitted(popup);CommonActions.maybeDisableScrolling(popup)},onClose:CommonActions.enableScrolling}};function getScrollPercent(){var h=document.documentElement,b=document.body,st="scrollTop",sh="scrollHeight";return(h[st]||b[st])/((h[sh]||b[sh])-h.clientHeight)*100}const PopupStack={stack:[],add(p){this.stack.push(p)},next(){let p=this.stack.pop();if(p){setTimeout(()=>{p.maybeOpen()},HollerBox.settings.stacked_delay*1e3)}}};const TriggerCallbacks={on_page_load:({delay:delay=1},show)=>{setTimeout(show,delay*1e3)},element_click:({selector:selector="",trigger_multiple:trigger_multiple="once"},show,popup)=>{document.querySelectorAll(selector).forEach(el=>{el.addEventListener("click",()=>{if(trigger_multiple==="multiple"){popup._triggered=false}show()})})},scroll_detection:({depth:depth=50},show)=>{document.addEventListener("scroll",()=>{if(getScrollPercent()>=parseInt(depth)){show()}})},exit_intent:(popup,show)=>{window.addEventListener("mouseout",e=>{if(!e.toElement&&!e.relatedTarget){show()}})}};const AdvancedDisplayRules={hide_if_converted:({},popup)=>popup.getConversions()===0,hide_if_closed:({},popup)=>!Cookies.isClosed(popup.ID),show_up_to_x_times:({times:times=1},popup)=>parseInt(times)>popup.getViews(),show_after_x_page_views:({views})=>parseInt(views)<Cookies.getPageViews(),show_to_new_or_returning:({visitor:visitor="all"})=>{switch(visitor){default:case"all":return true;case"new":return Cookies.getSessions()<=1;case"returning":return Cookies.getSessions()>1}},show_on_x_devices:({device})=>{switch(device){default:return true;case"mobile":return Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)<=480;
313case"desktop":return Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>480}}};const Popup=popup=>({...popup,id:`popup-${popup.ID}`,_triggered:false,_open:false,_template:{},isOpen(){return this._open},wasTriggered(){return this._triggered},querySelector(selector=""){return document.querySelector(`#${this.id} ${selector}`)},querySelectorAll(selector=""){return document.querySelectorAll(`#${this.id} ${selector}`)},render(){try{let div=document.createElement("div");div.innerHTML=this._template.render(this);let popup=div.firstElementChild;popup.setAttribute("tabindex",0);return popup}catch(e){maybeLog(e);return""}},addToDom(){let el=document.getElementById(this.id);let rendered=this.render();if(el){el.replaceWith(rendered)}else{document.body.append(rendered)}if(!isBuilderPreview()){rendered.focus()}},removeFromDom(){document.getElementById(this.id)?.remove()},converted(check=true){if(isBuilderPreview()){return}Cookies.addPopupConversion(this.ID);if(check){return apiPost(HollerBox.routes.conversion,{popup_id:this.ID,location:window.location.href,referer:document.referrer})}},viewed(){if(isBuilderPreview()){return}Cookies.addPopupView(this.ID);return apiPost(HollerBox.routes.impression,{popup_id:this.ID,location:window.location.href,referer:document.referrer})},getConversions(){return Cookies.getPopupConversions(this.ID)},getViews(){return Cookies.getPopupViews(this.ID)},cleanup(){try{this._template.cleanup(this)}catch(e){maybeLog(e)}},handleShortcodeContent(when){if(isBuilderPreview()){return}switch(when){case"beforeAddToDom":if(this.has_shortcodes.in_content){this.post_content=`<div id="post-content-for-${this.ID}-goes-here"></div>`}if(this.has_shortcodes.in_success_message){this.success_message=`<div id="success-message-for-${this.ID}-goes-here"></div>`}break;case"afterAddToDom":if(this.has_shortcodes.in_content){let target=this.querySelector(`#post-content-for-${this.ID}-goes-here`);let content=document.querySelector(`#holler-${this.ID}-content`);if(target&&content){content.querySelectorAll("p:empty").forEach(el=>el.remove());target.replaceWith(content)}}if(this.has_shortcodes.in_success_message){let target=this.querySelector(`#success-message-for-${this.ID}-goes-here`);let content=document.querySelector(`#holler-${this.ID}-success-message`);if(target&&content){content.querySelectorAll("p:empty").forEach(el=>el.remove());target.replaceWith(content)}}break;case"beforeRemoveFromDom":let container=document.querySelector("#hollerbox-popup-content");if(this.has_shortcodes.in_content){let content=document.querySelector(`#holler-${this.ID}-content`);if(content&&container){container.append(content)}}if(this.has_shortcodes.in_success_message){let content=document.querySelector(`#holler-${this.ID}-success-message`);if(content&&container){container.append(content)}}break}},async open(){try{await this._template.beforeOpen(this)}catch(e){maybeLog(e)}this.handleShortcodeContent("beforeAddToDom");this.addToDom();this.handleShortcodeContent("afterAddToDom");this._triggered=true;this._open=true;this.querySelectorAll(".holler-box-modal-close").forEach(el=>{el.addEventListener("click",e=>{this.close()})});setTimeout(()=>{let overlay=this.querySelector(".holler-box-overlay");if(overlay){this.querySelector(".holler-box-overlay").addEventListener("click",e=>{this.close()})}},2e3);this.querySelector().addEventListener("keyup",e=>{if(e.key==="Escape"){this.close()}});try{this._template.onOpen(this)}catch(e){maybeLog(e)}this.viewed()},async close(){try{await this._template.onClose(this)}catch(e){maybeLog(e)}this.handleShortcodeContent("beforeRemoveFromDom");this.removeFromDom();this._open=false;try{await this._template.onClosed(this)}catch(e){maybeLog(e)}if(isBuilderPreview()){this.submitted=false;if(!this.isOpen()){setTimeout(()=>this.open(),1e3)}return}Cookies.addClosedPopup(this.ID);PopupStack.next()},isBlocking(){return!["fake_chat","notification_box","notification_box_with_button","notification_box_with_form"].includes(this.template)},maybeOpen(){if(this.isOpen()||this.wasTriggered()){return}for(let rule in this.advanced_rules){if(!this.advanced_rules[rule].enabled){continue}if(AdvancedDisplayRules.hasOwnProperty(rule)){if(!AdvancedDisplayRules[rule](this.advanced_rules[rule],this)){return}}}if(HollerBox.active.some(p=>p.isOpen()&&p.isBlocking())){PopupStack.add(this);return}this.open()},setTemplate(){if(!PopupTemplates.hasOwnProperty(this.template)){return false}this._template={render:()=>"",onOpen:()=>{},beforeOpen:()=>{},onClose:()=>{},onClosed:()=>{},cleanup:()=>{},...PopupTemplates[this.template]};return true},init(){if(!this.setTemplate()){return}const show=()=>this.maybeOpen();
313Object.keys(TriggerCallbacks).forEach(_t=>{if(this.triggers[_t]?.enabled){TriggerCallbacks[_t](this.triggers[_t],show,this)}});document.querySelectorAll(`.holler-upgrade.holler-show[data-id="${this.ID}"]`).forEach(el=>{el.addEventListener("click",e=>{e.preventDefault();popup._triggered=false;show()})})}});if(HollerBox.is_frontend){const initHollerBox=()=>{if(HollerBox._initialized){return}HollerBox._initialized=true;HollerBox.active=HollerBox.active.map(p=>Popup(p));HollerBox.active.forEach(popup=>{popup.init()});Cookies.addPageView();Cookies.maybeAddSession()};window.addEventListener("load",()=>{if(Cookies.hasAccepted()){initHollerBox();return}document.addEventListener("click",()=>{setTimeout(()=>{if(Cookies.hasAccepted()){initHollerBox()}},100)})})}function clickedIn(e,selector){var el=e.tagName?e:e.srcElement||e.target;if(el&&el.matches(selector)){return el}else{while(el=el.parentNode){if(typeof el.matches!=="undefined"&&el.matches(selector)){return el}}}return false}const isBuilderPreview=()=>HollerBox.is_builder_preview;if(isBuilderPreview()){let home=new URL(HollerBox.home_url);let popup;window.addEventListener("message",function(event){if(event.origin===window.location.origin){if(popup){popup.cleanup()}popup=Popup(event.data.popup);popup.setTemplate();if(event.data.suppressAnimations){document.body.classList.add("holler-suppress-animations")}else{document.body.classList.remove("holler-suppress-animations");document.body.style.marginTop="0";document.body.style.marginBottom="0"}document.querySelectorAll(".holler-box").forEach(el=>el.remove());document.getElementById("hollerbox-builder-styles").innerHTML=popup.css;popup.open()}},false);window.addEventListener("load",()=>{document.addEventListener("click",e=>{let el=clickedIn(e,"a");if(!el){return}let url;try{url=new URL(el.href)}catch(e){maybeLog(e);return}if(url.searchParams.has("suppress_hollerbox")){return}e.preventDefault();if(url.hostname!==home.hostname||url.pathname.match(/wp-admin/)||url.pathname.match(/wp-login\.php/)){}else{url.searchParams.append("suppress_hollerbox",1);el.href=url;el.click()}});document.querySelectorAll("a").forEach(el=>{const noClick=()=>{el.classList.add("no-click");el.addEventListener("click",e=>{e.preventDefault()})};let url;try{url=new URL(el.href)}catch(e){noClick();return}if(url.hostname!==home.hostname||url.pathname.match(/wp-admin/)||url.pathname.match(/wp-login\.php/)){noClick()}else{url.searchParams.append("suppress_hollerbox",1);el.href=url}});document.querySelectorAll("form").forEach(el=>{el.addEventListener("submit",e=>{e.preventDefault();e.stopImmediatePropagation()})})})}HollerBox.templates=PopupTemplates;HollerBox._frontend={CommonActions:CommonActions,SubmitActions:SubmitActions,closeButton:closeButton,credit:credit,form:form,nameInput:nameInput,emailInput:emailInput,__content:__content,overlay:overlay,submitButton:submitButton,TriggerCallbacks:TriggerCallbacks,maybeLog:maybeLog}})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.