!function(){"use strict";let e;const t=function(e){return"json"===this.responseType||!0===this.json?e({message:this.statusText},!1):"text"===this.responseType?e(this.statusText):void console.error(this)},i=function(e){if(0===this.status||this.status>=200&&this.status<300||304===this.status){if("json"===this.responseType)return e(this.response.data,this.response.success);if("text"===this.responseType)return e(this.responseText);if(!0===this.json){const t=JSON.parse(this.response);return e(t.data,t.success)}}else t.bind(this,e)},s=e=>{let t=new FormData;const i=Object.prototype.toString.call(e);return"[object FormData]"===i&&(t=e),"[object HTMLFormElement]"===i&&(t=new FormData(e)),"[object Object]"===i&&Object.keys(e).forEach(i=>t.append(i,e[i])),t.append("action",GLSR.action),t.append("_ajax_request",!0),t},n=s=>{e=new XMLHttpRequest,e.addEventListener("load",i.bind(e,s)),e.addEventListener("error",t.bind(e,s))},r=t=>{(t=t||{})["X-Requested-With"]="XMLHttpRequest";for(let i in t)t.hasOwnProperty(i)&&e.setRequestHeader(i,t[i])};var o={data:(e,t={})=>{let i={};t._action=e;for(let e of Object.keys(t))i[`${GLSR.nameprefix}[${e}]`]=t[e];return i},get:(t,i,s)=>{n(i),e.open("GET",t,!0),e.responseType="text",r(s),e.send()},post:(t,i,o)=>{n(i),e.open("POST",GLSR.ajax_url,!0),e.responseType="json",e.json=!0,r(o),e.send(s(t))}};const a={},l=function(e,t){const i=a[e]||[],s=[];t&&[].forEach.call(i,e=>{t!==e.fn&&t!==e.fn.once&&s.push(e)}),s.length?a[e]=s:delete a[e]},c=function(e,t,i){(a[e]||(a[e]=[])).push({fn:t,context:i})};var d={events:a,off:l,on:c,once:function(e,t,i){const s=function(){l(e,s),t.apply(i,arguments)};s.once=t,c(e,s,i)},trigger:function(e){const t=[].slice.call(arguments,1),i=(a[e]||[]).slice();[].forEach.call(i,e=>e.fn.apply(e.context,t))}};const h="function",u="isNode",p=(e,t)=>typeof e===t,f=(e,t)=>{null!==t&&(Array.isArray(t)?t.map(t=>f(e,t)):(v[u](t)||(t=document.createTextNode(t)),e.appendChild(t)))};function v(e,t){let i,s,n=arguments,r=1;if(!v.isElement(e)){let t=["circle","clipPath","ellipse","g","line","linearGradient","mask","path","polygon","polyline","radialGradient","rect","stop","svg","text","textPath"].includes(e)?"2000/svg":"1999/xhtml";e=document.createElementNS(`http://www.w3.org/${t}`,e)}if("string"==typeof t&&(t={class:t}),p(t,"object")&&!v[u](t)&&!Array.isArray(t))for(i in r++,t)s=t[i],i=v.attrMap[i]||i,p(i,h)?i(e,s):p(s,h)?e[i]=s:e.setAttribute(i,s);for(;r<n.length;r++)f(e,n[r]);return e}v.attrMap={style:(e,t)=>{p(t,"string")?e.style.cssText=t:p(t,"object")&&Object.assign(e.style,t)}},v.isElement=e=>e instanceof Element,v[u]=e=>e instanceof Node;const g="glsr-read-more",m=".glsr-hidden-text",_=".glsr-tag-value";class y{constructor(e){this.events={click:this._onClick.bind(this)},(e||document).querySelectorAll(m).forEach(e=>this.init(e))}init(e){const t=this._insertLink(e);t&&("expand"===e.dataset.trigger&&(t.dataset.text=e.dataset.showLess,t.removeEventListener("click",this.events.click),t.addEventListener("click",this.events.click)),"modal"===e.dataset.trigger&&(t.dataset.glsrTrigger="glsr-modal-review"))}_insertLink(e){let t=e.parentElement.querySelector("."+g);t&&t.parentElement.removeChild(t);const i=v("a",{href:"#"},e.dataset.showMore),s=v("span",{class:g},i);return e.appendChild(s).querySelector("a")}_onClick(e){e.preventDefault();const t=e.currentTarget,i=t.parentElement,s=t.closest(_),n=s.querySelector(m),r=t.dataset.text,o=t.innerText;t.dataset.text=o,t.innerText=r,t.removeEventListener("click",this.events.click),"false"===s.dataset.expanded?(s.querySelector("p:last-of-type").appendChild(i),s.dataset.expanded="true"):(n.appendChild(i),s.dataset.expanded="false"),t.addEventListener("click",this.events.click),t.focus()}}var w=e=>({el:e,loading:()=>{"false"===e.getAttribute("aria-busy")&&(e.setAttribute("aria-busy",!0),e.setAttribute("disabled",""),e.dataset.text=e.innerText,e.innerHTML='<span class="glsr-loading"></span>'+(e.dataset.loading||e.dataset.text))},loaded:()=>{"true"===e.getAttribute("aria-busy")&&(e.innerHTML=e.dataset.text,e.setAttribute("aria-busy",!1),e.removeAttribute("data-text"),e.removeAttribute("disabled"))}});class b{constructor(e){this.Form=e,this.captcha={friendlycaptcha:"friendlyChallenge",friendlycaptcha_v2:"frcaptcha",hcaptcha:"hcaptcha",procaptcha:"procaptcha",recaptcha_v2_invisible:"grecaptcha",recaptcha_v3:"grecaptcha",turnstile:"turnstile"}[GLSR.captcha.type],this.captchaEl=!1,this.containerEl=this.Form.form.querySelector(".glsr-captcha-holder"),this.loaded=!1,this.token=null,this.widget=-1,this.fixCompatibility()}execute(){if(this.captchaEl&&this.isWidgetLoaded())try{this["execute_"+GLSR.captcha.type]()}catch(e){console.error(e),this.Form.submitForm()}else this.Form.submitForm()}execute_friendlycaptcha(e){1===+this.captchaEl.dataset.error?this._submitFormWithToken("sitekey_invalid"):this.token?this.Form.submitForm():this._retry_execute(e=>this.execute_friendlycaptcha(e),e)}execute_friendlycaptcha_v2(){this.execute_friendlycaptcha()}execute_hcaptcha(){1===+this.captchaEl.dataset.error?this._submitFormWithToken("sitekey_invalid"):this.token?this._submitFormWithToken(this.token):window[this.captcha].execute(this.widget,{action:"submit_review",async:!0}).then(({response:e})=>{this._submitFormWithToken(e)}).catch(e=>{console.error(e)})}execute_procaptcha(){1===+this.captchaEl.dataset.error?this._submitFormWithToken("sitekey_invalid"):this.Form.submitForm()}execute_recaptcha_v2_invisible(){this.execute_recaptcha_v3()}execute_recaptcha_v3(){1===+this.captchaEl.dataset.error?this._submitFormWithToken("sitekey_invalid"):window[this.captcha].execute(this.widget,{action:"submit_review"})}execute_turnstile(e){let t=window[this.captcha].getResponse(this.widget);1===+this.captchaEl.dataset.error||this.token||void 0===t?this.Form.submitForm():this._retry_execute(e=>this.execute_turnstile(e),e)}fixCompatibility(){"hcaptcha"===GLSR.captcha.type&&void 0!==window.hCaptchaOnLoad&&document.body.click()}isLoaded(e){for(let t=0;t<document.scripts.length;t++)if(e.split("?")[0]===document.scripts[t].src.split("?")[0])return!0;return!1}isWidgetLoaded(){return-1!==this.widget&&null!=this.widget}load(e,t){if(void 0===e||this.isLoaded(e))return Promise.resolve();const i=e.split("?")[0];return b._loading[i]||(b._loading[i]=new Promise((i,s)=>{const n=document.createElement("script");n.onload=i,n.onerror=s,n.src=e,n.type="module"===t?"module":"text/javascript","module"!==t&&void 0!==GLSR.captcha.urls.module&&n.setAttribute("nomodule",""),n.setAttribute("async",""),n.setAttribute("defer",""),document.head.append(n)})),b._loading[i]}render(e){if(this.Form.form.onsubmit=null,this.containerEl&&!this.isWidgetLoaded())if(void 0===window[this.captcha])this.loaded?this._retry_render(e=>this.render(e),e):this.load(GLSR.captcha.urls.module,"module").then(()=>{this.load(GLSR.captcha.urls.nomodule,"nomodule")}).then(()=>this.loaded=!0).then(()=>this._retry_render(e=>this.render(e),e)).catch(e=>console.error(e));else{this.reset(),this._buildContainer();try{this["render_"+GLSR.captcha.type]()}catch(e){this.captchaEl.dataset.error=1,console.error(e)}}}render_friendlycaptcha(){this.widget=new window[this.captcha].WidgetInstance(this.captchaEl,{doneCallback:e=>this.token=e,errorCallback:e=>{console.error(e),this.captchaEl.dataset.error=1}})}render_friendlycaptcha_v2(){this.widget=window[this.captcha].createWidget({element:this.captchaEl,sitekey:GLSR.captcha.sitekey,startMode:"focus",theme:GLSR.captcha.theme}),this.captchaEl.addEventListener("frc:widget.complete",e=>{var t;this.token=null==e||null===(t=e.detail)||void 0===t?void 0:t.response}),this.captchaEl.addEventListener("frc:widget.error",e=>{console.error(e),this.captchaEl.dataset.error=1})}render_hcaptcha(e){var t;void 0!==(null===(t=window[this.captcha])||void 0===t?void 0:t.render)?this.widget=window[this.captcha].render(this.captchaEl,{callback:e=>this.token=e,"chalexpired-callback":()=>this.reset(),"close-callback":()=>this.Form.button.loaded(),"error-callback":()=>this.captchaEl.dataset.error=1,"expired-callback":()=>this.reset()}):this._retry_render(e=>this.render_hcaptcha(e),e)}render_procaptcha(){this.widget=window[this.captcha].render(this.captchaEl,{callback:e=>this.token=e,captchaType:GLSR.captcha.captcha_type,language:GLSR.captcha.language,siteKey:GLSR.captcha.sitekey,theme:GLSR.captcha.theme,"chalexpired-callback":()=>this.reset(),"close-callback":()=>this.Form.button.loaded(),"error-callback":()=>this.captchaEl.dataset.error=1,"expired-callback":()=>this.reset()})||1}render_recaptcha_v2_invisible(){this.render_recaptcha_v3()}render_recaptcha_v3(e){var t;void 0!==(null===(t=window[this.captcha])||void 0===t?void 0:t.render)?this.widget=window[this.captcha].render(this.captchaEl,{callback:e=>this._submitFormWithToken(e),"error-callback":()=>this.captchaEl.dataset.error=1,"expired-callback":()=>this.reset(),isolated:!0}):this._retry_render(e=>this.render_recaptcha_v3(e),e)}render_turnstile(){this.widget=window[this.captcha].render(this.captchaEl,{action:"submit_review",callback:e=>this.token=e,"error-callback":()=>this.captchaEl.dataset.error=1,"expired-callback":()=>this.reset(),language:GLSR.captcha.language,sitekey:GLSR.captcha.sitekey,theme:GLSR.captcha.theme})}reset(){this.token=null,this.captchaEl&&(this.captchaEl.dataset.error=0),this.isWidgetLoaded()&&(["friendlycaptcha","friendlycaptcha_v2"].includes(GLSR.captcha.type)?this.widget.reset():window[this.captcha].reset(this.widget))}_buildContainer(){["friendlycaptcha","friendlycaptcha_v2"].includes(GLSR.captcha.type)&&this.isWidgetLoaded()&&this.widget.destroy(),Array.from(this.containerEl.getElementsByClassName(GLSR.captcha.class)).forEach(e=>e.remove()),this.captchaEl=v("div",{class:GLSR.captcha.class,"data-badge":GLSR.captcha.badge,"data-captcha-type":GLSR.captcha.captcha_type,"data-lang":GLSR.captcha.language,"data-isolated":!0,"data-sitekey":GLSR.captcha.sitekey,"data-size":GLSR.captcha.size,"data-theme":GLSR.captcha.theme,"data-type":GLSR.captcha.type}),this.containerEl.appendChild(this.captchaEl)}_retry_execute(e,t){if(void 0===t&&(t=1e4),t<=0)return console.warn("Site Reviews: captcha execute timed out"),this.captchaEl&&(this.captchaEl.dataset.error=1),void this.Form.submitForm();setTimeout(()=>e(t-100),100)}_retry_render(e,t){void 0===t&&(t=1e4),t<=0?console.warn("Site Reviews: captcha render timed out"):setTimeout(()=>e(t-100),100)}_submitFormWithToken(e){this.Form.form[GLSR.captcha.token_field]&&e&&(this.Form.form[GLSR.captcha.token_field].value=e),this.Form.submitForm()}}b._loading={};const E=(e,t,i=400,s={delay:0,direction:"normal",easing:"cubic-bezier(0.54,1.5,0.38,1.11)",endDelay:0,fill:"forwards",iterations:1})=>new Promise(n=>{t.animate([{opacity:"in"===e?0:1},{opacity:"in"===e?1:0}],{duration:i,...s}).onfinish=()=>n()}),L=(e,t,i)=>{e&&t.split(" ").forEach(t=>e.classList[i?"add":"remove"](t))},S=e=>"."+e.trim().split(" ").join("."),x=(e,t=200)=>{let i=null;return(...s)=>{clearTimeout(i),i=setTimeout(e,t,...s)}},k=e=>{try{return[null,JSON.parse(e)]}catch(t){return[t,e]}},R={contains:(e,t)=>e.includes(t),equals:(e,t)=>{if(Array.isArray(e)){let i=t.split(/\s*(?:,|$)\s*/);return e.sort().toString()===i.sort().toString()}return F(t)?A(e)===+t:String(e)===String(t)},greater:(e,t)=>!!F(t)&&A(e)>+t,less:(e,t)=>!!F(t)&&A(e)<+t,not:(e,t)=>!R.equals(e,t)},T=e=>String(e.getAttribute("type")||e.nodeName).toLowerCase(),A=e=>isNaN(e)?e.length:+e,F=e=>!isNaN(parseInt(e));class G{constructor(e){this.config=GLSR.validation_config,this.elements=Array.from(e.form.elements),this.event=this.onChange.bind(this),this.Form=e}init(){this.eventListeners("add"),this.elements.forEach(e=>e.conditions={criteria:"always",observes:[],triggers:[]}),this._setConditionObserves(),this._setConditionTriggers()}destroy(){this.eventListeners("remove"),this.elements.forEach(e=>delete e.conditions)}eventListeners(e){this.elements.forEach(t=>t[e+"EventListener"](this.eventName(t),this.event))}eventName(e){return["radio","checkbox","select"].includes(T(e))?"change":"input"}onChange(e){e.currentTarget.conditions.triggers.forEach(e=>{let t=[];e.conditions.observes.forEach(e=>t.push(this.test(e))),t=t.filter(e=>e);const i=t.length===e.conditions.observes.length,s=t.length&&"any"===e.conditions.criteria,n=e.closest(S(this.config.field));i||s?(n.classList.remove(this.config.field_hidden),this.Form.validation.initField(e)):(e.validation&&this.Form.validation.destroyField(e.validation),this.resetValue(e),n.classList.add(this.config.field_hidden))})}resetValue(e){const t=T(e);if("select"===t)Array.from(e.options).forEach(e=>e.selected=e.defaultSelected);else if(["checkbox","radio"].includes(t)){let t=this.Form.form.elements[e.name];Array.from(t.length?t:[t]).forEach(e=>e.checked=e.defaultChecked)}else e.value=e.defaultValue||"";e.dispatchEvent(new Event(this.eventName(e)))}test(e){return!R.hasOwnProperty(e.operator)||R[e.operator](this.value(e.el),e.value)}value(e){const t=e.getAttribute("name"),i=T(e),s=this.Form.form.elements[t];return"radio"===i?s.value:["checkbox","select"].includes(i)?Array.from(s.length?s:[s]).filter(e=>e["checkbox"===i?"checked":"selected"]).map(e=>e.value):new String(e.value)}_setConditionObserves(){this.elements.filter(e=>e.dataset.conditions).forEach(e=>{var t;let[i,s]=k(e.dataset.conditions);null===i&&null!=s&&null!==(t=s.conditions)&&void 0!==t&&t.length&&(s.conditions.forEach(t=>{const i=this.elements.filter(e=>e.closest(`[data-field="${t.name}"]`)).shift();i&&e.conditions.observes.push({el:i,...t})}),e.conditions.observes.length&&(e.conditions.criteria=s.criteria))})}_setConditionTriggers(){this.elements.forEach(e=>{this.elements.filter(e=>e.dataset.conditions).forEach(t=>{t.conditions.observes.forEach(i=>{i.el.getAttribute("name")===e.getAttribute("name")&&e.conditions.triggers.push(t)})})})}}const N=e=>"checkbox"===e.type?e.name+e.value:e.name,O=e=>sessionStorage.setItem(N(e.target),e.target.value);class C{constructor(e){this.fields=[],e.classList.contains("glsr-persist-data")&&[...e.elements].forEach(e=>{e.disabled||e.readonly||["file","hidden","password","submit"].includes(e.type)||!["input","select","textarea"].includes(e.localName)||this.fields.push(e)})}clear(){this.fields.length&&sessionStorage.clear()}destroy(){this.fields.forEach(e=>(e=>e.removeEventListener("change",O))(e))}init(){this.fields.forEach(e=>{(e=>{const t=sessionStorage.getItem(N(e));null!==t&&(["checkbox","radio"].includes(e.type)?e.checked=e.value===t:e.value=t,e.dispatchEvent(new Event("change")))})(e),(e=>{e.addEventListener("change",O)})(e)})}}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function j(e,t,i){return t&&function(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}(e.prototype,t),e}var P={classNames:{active:"gl-active",base:"gl-star-rating",selected:"gl-selected"},clearable:!0,maxStars:10,prebuilt:!1,stars:null,tooltip:"Select a Rating"},q=function(e,t,i){e.classList[t?"add":"remove"](i)},H=function(e){var t=document.createElement("span");for(var i in e=e||{})t.setAttribute(i,e[i]);return t},D=function(e,t,i){var s=H(i);return e.parentNode.insertBefore(s,t?e.nextSibling:e),s},I=function e(){for(var t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];var n={};return i.forEach(function(t){Object.keys(t||{}).forEach(function(s){if(void 0!==i[0][s]){var r=t[s];"Object"!==$(r)||"Object"!==$(n[s])?n[s]=r:n[s]=e(n[s],r)}})}),n},$=function(e){return{}.toString.call(e).slice(8,-1)},V=function(){function e(t,i){var s,n,r;M(this,e),this.direction=window.getComputedStyle(t,null).getPropertyValue("direction"),this.el=t,this.events={change:this.onChange.bind(this),keydown:this.onKeyDown.bind(this),mousedown:this.onPointerDown.bind(this),mouseleave:this.onPointerLeave.bind(this),mousemove:this.onPointerMove.bind(this),reset:this.onReset.bind(this),touchend:this.onPointerDown.bind(this),touchmove:this.onPointerMove.bind(this)},this.indexActive=null,this.indexSelected=null,this.props=i,this.tick=null,this.ticking=!1,this.values=function(e){var t=[];return[].forEach.call(e.options,function(e){var i=parseInt(e.value,10)||0;i>0&&t.push({index:e.index,text:e.text,value:i})}),t.sort(function(e,t){return e.value-t.value})}(t),this.widgetEl=null,this.el.widget&&this.el.widget.destroy(),s=this.values.length,n=1,r=this.props.maxStars,/^\d+$/.test(s)&&n<=s&&s<=r?this.build():this.destroy()}return j(e,[{key:"build",value:function(){this.destroy(),this.buildWidget(),this.selectValue(this.indexSelected=this.selected(),!1),this.handleEvents("add"),this.el.widget=this}},{key:"buildWidget",value:function(){var e=this,t=null,i=null;this.props.prebuilt&&(t=this.el.parentNode,i=t.querySelector("."+this.props.classNames.base+"--stars")),null===i&&((t=D(this.el,!1,{class:this.props.classNames.base})).appendChild(this.el),i=D(this.el,!0,{class:this.props.classNames.base+"--stars"}),this.values.forEach(function(t,s){var n=H({"data-index":s,"data-value":t.value});"function"==typeof e.props.stars&&e.props.stars.call(e,n,t,s),[].forEach.call(n.children,function(e){return e.style.pointerEvents="none"}),i.innerHTML+=n.outerHTML})),t.dataset.starRating="",t.classList.add(this.props.classNames.base+"--"+this.direction),this.props.tooltip&&i.setAttribute("role","tooltip"),this.widgetEl=i}},{key:"changeIndexTo",value:function(e,t){var i=this;if(this.indexActive!==e||t){if([].forEach.call(this.widgetEl.children,function(t,s){q(t,s<=e,i.props.classNames.active),q(t,s===i.indexSelected,i.props.classNames.selected)}),this.widgetEl.setAttribute("data-rating",e+1),"function"==typeof this.props.stars||this.props.prebuilt||(this.widgetEl.classList.remove("s"+10*(this.indexActive+1)),this.widgetEl.classList.add("s"+10*(e+1))),this.props.tooltip){var s,n=e<0?this.props.tooltip:null===(s=this.values[e])||void 0===s?void 0:s.text;this.widgetEl.setAttribute("aria-label",n)}this.indexActive=e}this.ticking=!1}},{key:"destroy",value:function(){this.indexActive=null,this.indexSelected=this.selected();var e=this.el.parentNode;e.classList.contains(this.props.classNames.base)&&(this.props.prebuilt?(this.widgetEl=e.querySelector("."+this.props.classNames.base+"--stars"),e.classList.remove(this.props.classNames.base+"--"+this.direction),delete e.dataset.starRating):e.parentNode.replaceChild(this.el,e),this.handleEvents("remove")),delete this.el.widget}},{key:"eventListener",value:function(e,t,i,s){var n=this;i.forEach(function(i){return e[t+"EventListener"](i,n.events[i],s||!1)})}},{key:"handleEvents",value:function(e){var t=this.el.closest("form");t&&"FORM"===t.tagName&&this.eventListener(t,e,["reset"]),this.eventListener(this.el,e,["change"]),"add"===e&&this.el.disabled||(this.eventListener(this.el,e,["keydown"]),this.eventListener(this.widgetEl,e,["mousedown","mouseleave","mousemove","touchend","touchmove"],!1))}},{key:"indexFromEvent",value:function(e){var t,i,s=(null===(t=e.touches)||void 0===t?void 0:t[0])||(null===(i=e.changedTouches)||void 0===i?void 0:i[0])||e,n=document.elementFromPoint(s.clientX,s.clientY);return n.parentNode===this.widgetEl?[].slice.call(n.parentNode.children).indexOf(n):this.indexActive}},{key:"onChange",value:function(){this.changeIndexTo(this.selected(),!0)}},{key:"onKeyDown",value:function(e){var t=e.key.slice(5);if(~["Left","Right"].indexOf(t)){e.preventDefault();var i="Left"===t?-1:1;"rtl"===this.direction&&(i*=-1);var s=this.values.length-1,n=Math.min(Math.max(this.selected()+i,-1),s);this.selectValue(n,!0)}}},{key:"onPointerDown",value:function(e){e.preventDefault();var t=this.indexFromEvent(e);this.props.clearable&&t===this.indexSelected&&(t=-1),this.selectValue(t,!0)}},{key:"onPointerLeave",value:function(e){var t=this;e.preventDefault(),cancelAnimationFrame(this.tick),requestAnimationFrame(function(){return t.changeIndexTo(t.indexSelected)})}},{key:"onPointerMove",value:function(e){var t=this;e.preventDefault(),this.ticking||(this.tick=requestAnimationFrame(function(){return t.changeIndexTo(t.indexFromEvent(e))}),this.ticking=!0)}},{key:"onReset",value:function(){var e,t=this.valueIndex(null===(e=this.el.querySelector("[selected]"))||void 0===e?void 0:e.value);this.selectValue(t||-1,!1)}},{key:"selected",value:function(){return this.valueIndex(this.el.value)}},{key:"selectValue",value:function(e,t){var i;this.el.value=(null===(i=this.values[e])||void 0===i?void 0:i.value)||"",this.indexSelected=this.selected(),!1===t?this.changeIndexTo(this.selected(),!0):this.el.dispatchEvent(new Event("change"))}},{key:"valueIndex",value:function(e){return this.values.findIndex(function(t){return t.value===+e})}}]),e}(),W=function(){function e(t,i){M(this,e),this.destroy=this.destroy.bind(this),this.props=i,this.rebuild=this.rebuild.bind(this),this.selector=t,this.widgets=[],this.build()}return j(e,[{key:"build",value:function(){var e=this;this.queryElements(this.selector).forEach(function(t){var i=I(P,e.props,JSON.parse(t.getAttribute("data-options")));"SELECT"!==t.tagName||t.widget||(!i.prebuilt&&t.parentNode.classList.contains(i.classNames.base)&&e.unwrap(t),e.widgets.push(new V(t,i)))})}},{key:"destroy",value:function(){this.widgets.forEach(function(e){return e.destroy()}),this.widgets=[]}},{key:"queryElements",value:function(e){return"HTMLSelectElement"===$(e)?[e]:"NodeList"===$(e)?[].slice.call(e):"String"===$(e)?[].slice.call(document.querySelectorAll(e)):[]}},{key:"rebuild",value:function(){this.destroy(),this.build()}},{key:"unwrap",value:function(e){var t=e.parentNode,i=t.parentNode;i.insertBefore(e,t),i.removeChild(t)}}]),e}();const B={classNames:{base:"glsr-star-rating"},clearable:!1,tooltip:!1};const Y=["required","max","maxlength","min","minlength","pattern"],J=e=>{const t=e.getAttribute("name");return e.validation.form.querySelectorAll(`input[name="${t}"]:checked`).length},K={email:{fn:function(e){return!e||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}},max:{fn:function(e,t){return!e||("checkbox"===this.type?J(this)<=parseInt(t):parseFloat(e)<=parseFloat(t))}},maxlength:{fn:function(e,t){return!e||e.length<=parseInt(t)}},min:{fn:function(e,t){return!e||("checkbox"===this.type?J(this)>=parseInt(t):parseFloat(e)>=parseFloat(t))}},minlength:{fn:function(e,t){return!e||e.length>=parseInt(t)}},number:{fn:function(e){return!e||!isNaN(parseFloat(e))},priority:2},pattern:{fn:function(e,t){let i=t.match(new RegExp("^/(.*?)/([gimy]*)$"));return!e||new RegExp(i[1],i[2]).test(e)}},required:{fn:function(e){return~["checkbox","radio"].indexOf(this.type)?J(this):null!=e&&String(e).replace(/\s/g,"").length>0},priority:99,halt:!0},tel:{fn:function(e){let t=e.replace(/[^0-9]/g,"").length;return!e||4<=t&&15>=t&&new RegExp("^[+]?[\\d\\s()-]*$").test(e)}},url:{fn:function(e){return!e||new RegExp("^(https?)://([\\p{L}\\p{N}\\p{S}\\-_.])+(.?([\\p{L}\\p{N}]|xn--[\\p{L}\\p{N}\\-]+)+.?)(:[0-9]+)?(?:/(?:[\\p{L}\\p{N}\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*(?:\\?(?:[\\p{L}\\p{N}\\-._~!$&'\\[\\]()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?(?:#(?:[\\p{L}\\p{N}\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?$","iu").test(e)}}};class X{constructor(e){this.config=GLSR.validation_config,this.event=this._onChange.bind(this),this.fields=[],this.form=e,this.form.setAttribute("novalidate",""),this.strings=GLSR.validation_strings}destroy(){for(;this.fields.length;)this.destroyField(this.fields[0])}destroyField(e){this.resetField(e),this._eventListener("remove",e.input),delete e.input.validation,this.fields=this.fields.filter(t=>t.input!==e.input)}init(){this.form.querySelectorAll("input:not([type=hidden]):not([type=submit]), select, textarea, [data-glsr-validate]").forEach(e=>this.initField(e))}initField(e){if(this.fields.find(t=>t.input.name===e.name&&"radio"!==e.type&&!e.name.endsWith("[]")))return;const t=e.closest(S(this.config.field));null!=t&&t.offsetParent&&this.fields.push(this._initField(e))}reset(){this.fields.forEach(e=>this.resetField(e))}resetField(e){let t=e.input.closest(S(this.config.field));L(e.input,this.config.input_error,!1),L(e.input,this.config.input_valid,!1),t&&(L(t,this.config.field_error,!1),L(t,this.config.field_valid,!1)),e.errors=[]}setErrors(e,t){e.hasOwnProperty("validation")||this._initField(e),e.validation.errors=t}setInvalid(e){this.toggleError(e,!0)}setValid(e){this.toggleError(e,!1)}toggleError(e,t){var i;let s=e.input.closest(S(this.config.field)),n=[e.input];if((null==e||null===(i=e.input)||void 0===i?void 0:i.form)instanceof HTMLFormElement&&(n=e.input.form.querySelectorAll(`[name="${e.input.name}"]`)),n.forEach(e=>{L(e,this.config.input_error,t),L(e,this.config.input_valid,!t)}),s){L(s,this.config.field_error,t),L(s,this.config.field_valid,!t);let i=s.querySelector(S(this.config.field_message));i&&(i.innerHTML=t?e.errors.join("<br>"):"",i.style.display=t?"":"none")}}validate(e){let t=!0,i=this.fields;return e instanceof HTMLElement&&e.hasOwnProperty("validation")&&(i=[e.validation]),i.forEach(e=>{this._validateField(e)?this.toggleError(e,!1):(this.toggleError(e,!0),t=!1)}),t}_addValidators(e,t,i){[].forEach.call(e,e=>{let s=e.name.replace("data-","");~Y.indexOf(s)?this._addValidatorToField(t,i,s,e.value):"type"===e.name&&this._addValidatorToField(t,i,e.value)})}_addValidatorToField(e,t,i,s){if(K.hasOwnProperty(i)&&(K[i].name=i,e.push(K[i]),s)){let e="pattern"===i?[s]:s.split(",");e.unshift(null),t[i]=e}}_eventListener(e,t){const i=t.getAttribute("type")||t.nodeName,s=~["radio","checkbox","SELECT"].indexOf(i)?"change":"input";t[e+"EventListener"](s,this.event)}_onChange(e){this.validate(e.currentTarget)}_initField(e){let t={},i=[];return null!==e.offsetParent&&(this._addValidators(e.attributes,i,t),this._sortValidators(i),this._eventListener("add",e)),e.validation={form:this.form,input:e,params:t,validate:()=>this.validate(e),validators:i}}_sortValidators(e){e.sort((e,t)=>(t.priority||1)-(e.priority||1))}_validateField(e){let t=[],i=!0;for(let s in e.validators){if(!e.validators.hasOwnProperty(s))continue;let n=e.validators[s],r=e.params[n.name]?e.params[n.name]:[];if(r[0]=e.input.value,!n.fn.apply(e.input,r)){i=!1;let e=this.strings[n.name];if(t.push(e.replace(/(\%s)/g,r[1])),!0===n.halt)break}}return e.errors=t,i}}class z{constructor(e,t){var i,s;this.button=w(t),this.config=GLSR.validation_config,this.events={reset:this._onReset.bind(this),submit:this._onSubmit.bind(this)},this.form=e,this.isActive=!1,this.stars=(()=>{let e=null;const t=()=>!!e&&(e.rebuild(),!0);return{init:(i,s={})=>(t()||(e=new W(i,Object.assign({},B,s))),e),destroy:()=>!!e&&(e.destroy(),!0),rebuild:t}})(),this.strings=GLSR.validation_strings,this.captcha=new b(this),this.conditions=new G(this),this.validation=new X(e),this.reviewsEl=document.getElementById(null===(i=e.closest(".glsr"))||void 0===i||null===(i=i.dataset)||void 0===i?void 0:i.reviews_id),this.session=new C(e),this.summaryEl=document.getElementById(null===(s=e.closest(".glsr"))||void 0===s||null===(s=s.dataset)||void 0===s?void 0:s.summary_id)}destroy(){this._destroyForm(),this.stars.destroy(),this.captcha.reset(),this.isActive=!1}init(){this.isActive||(this._initForm(),this.stars.init(this.form.querySelectorAll(".glsr-field-rating select"),GLSR.stars_config),this.captcha.render(),this.isActive=!0)}submitForm(){this.button.loading(),GLSR.ajax.post(this._data(),this._handleResponse.bind(this))}_data(){const e=new FormData(this.form),t={_reviews_atts:this.reviewsEl,_summary_atts:this.summaryEl};this.reviewsEl&&(e.append([`${GLSR.nameprefix}[_pagination_atts][page]`],1),e.append([`${GLSR.nameprefix}[_pagination_atts][url]`],location.href));for(let i in t)if(t[i])try{const s=JSON.parse(JSON.stringify(t[i].dataset));for(let t of Object.keys(s)){let n;try{n=JSON.parse(s[t])}catch(e){n=s[t]}e.append(`${GLSR.nameprefix}[${i}][${t}]`,n)}}catch(e){console.error(e)}return e}_destroyForm(){this.form.removeEventListener("reset",this.events.reset),this.form.removeEventListener("submit",this.events.submit),this._resetErrors(),this.conditions.destroy(),this.session.destroy(),this.validation.destroy()}_handleResponse(e,t){const i=!0===t&&void 0!==e;if(this.captcha.reset(),i&&(this.form.reset(),this.session.clear()),this._showFieldErrors(null==e?void 0:e.errors),this._showResults(null==e?void 0:e.message,i),this.button.loaded(),GLSR.Event.trigger("site-reviews/form/handle",e,this.form),i){if(e.redirect&&""!==e.redirect)return void(window.location=e.redirect);if(this.reviewsEl&&e.reviews&&(this.reviewsEl.innerHTML=e.reviews,GLSR.url_parameter)){let e=new URL(location.href);e.searchParams.delete(GLSR.url_parameter),window.history.replaceState({},"",e.toString())}this.summaryEl&&e.summary&&(this.summaryEl.innerHTML=e.summary),GLSR.Event.trigger("site-reviews/init")}}_initForm(){this._destroyForm(),this.form.addEventListener("reset",this.events.reset),this.form.addEventListener("submit",this.events.submit),this.conditions.init(),this.session.init(),this.validation.init()}_onReset(e){this.conditions.destroy(),this.conditions.init()}_onSubmit(e){if(!this.validation.validate())return e.preventDefault(),void this._showResults(this.strings.errors,!1);e.preventDefault(),this._resetErrors(),this.button.loading(),this.captcha.execute()}_resetErrors(){L(this.form,this.config.form_error,!1),this._showResults("",null),this.validation.reset()}_showFieldErrors(e){if(e)for(let t in e){if(!e.hasOwnProperty(t))continue;const i=GLSR.nameprefix?GLSR.nameprefix+"["+t+"]":t,s=this.form.querySelector('[name="'+i+'"]');s&&(this.validation.setErrors(s,e[t]),this.validation.toggleError(s.validation,"add"))}}_showResults(e,t){if(!e)return;const i=this.form.querySelector(S(this.config.form_message));null!==i&&(L(this.form,this.config.form_error,!1===t),L(i,this.config.form_message_failed,!1===t),L(i,this.config.form_message_success,!0===t),i.innerHTML=e)}}var U=function(){return"undefined"==typeof window},Q=function(e){e=e||navigator.userAgent;var t=/(iPad).*OS\s([\d_]+)/.test(e);return{ios:!t&&/(iPhone\sOS)\s([\d_]+)/.test(e)||t,android:/(Android);?[\s/]+([\d.]+)?/.test(e)}};function Z(e){if(U())return!1;if(!e)throw new Error("options must be provided");var t=!1,i={get passive(){t=!0}},s=function(){},n="__TUA_BSL_TEST_PASSIVE__";window.addEventListener(n,s,i),window.removeEventListener(n,s,i);var r=e.capture;return t?e:void 0!==r&&r}function ee(e){return!e&&(null!==e&&("production"!==process.env.NODE_ENV&&("test"!==process.env.NODE_ENV&&console.warn("If scrolling is also required in the floating layer, the target element must be provided."),!0)))}function te(){return"__BSL_PREVENT_DEFAULT__"in window||(window.__BSL_PREVENT_DEFAULT__=function(e){e.cancelable&&e.preventDefault()}),window.__BSL_PREVENT_DEFAULT__}function ie(e){return e?Array.isArray(e)?e:[e]:[]}function se(e,t,i){var s,n,r,o,a=e.scrollTop,l=e.scrollLeft,c=e.scrollWidth,d=e.scrollHeight,h=e.clientWidth,u=e.clientHeight,p=function(e){var t=window.getComputedStyle(e).flexDirection;return{column:"column-reverse"===t,row:"row-reverse"===t}}(e);return p.column?(s=i>0&&Math.abs(a)+u+1>=d,n=i<0&&Math.abs(a)<=1):(s=i>0&&0===a,n=i<0&&a+u+1>=d),p.row?(r=t>0&&Math.abs(l)+h+1>=c,o=t<0&&Math.abs(l)<=1):(r=t>0&&0===l,o=t<0&&l+h+1>=c),{isOnTop:s,isOnBottom:n,isOnLeft:r,isOnRight:o}}var ne={lockedNum:0,lockedElements:[],unLockCallback:null,documentListenerAdded:!1,initialClientPos:{clientX:0,clientY:0}};function re(e){if(U())return ne;if(!(null==e?void 0:e.useGlobalLockState))return re.lockState;var t="__BSL_LOCK_STATE__"in window?Object.assign(Object.assign({},ne),window.__BSL_LOCK_STATE__):ne;return window.__BSL_LOCK_STATE__=t,t}function oe(e,t){if(!U()){ee(e);var i,s,n,r,o,a=Q(),l=re(t);a.ios?(ie(e).filter(function(e){return e&&-1===l.lockedElements.indexOf(e)}).forEach(function(e){e.ontouchstart=function(e){var t=e.targetTouches[0],i=t.clientX,s=t.clientY;l.initialClientPos={clientX:i,clientY:s}},e.ontouchmove=function(t){!function(e,t,i){if(t){var s=e.targetTouches[0].clientX-i.clientX,n=e.targetTouches[0].clientY-i.clientY,r=Math.abs(n)>Math.abs(s),o=se(t,s,n),a=o.isOnTop,l=o.isOnBottom,c=o.isOnLeft,d=o.isOnRight;if(r&&(a||l)||!r&&(c||d))return te()(e)}e.stopPropagation()}(t,e,l.initialClientPos)},l.lockedElements.push(e)}),function(e){if(!Q().ios)return;if(e.documentListenerAdded)return;document.addEventListener("touchmove",te(),Z({passive:!1})),e.documentListenerAdded=!0}(l)):l.lockedNum<=0&&(l.unLockCallback=a.android?(i=document.documentElement,s=document.body,n=i.scrollTop||s.scrollTop,r=Object.assign({},i.style),o=Object.assign({},s.style),i.style.height="100%",i.style.overflow="hidden",s.style.top="-".concat(n,"px"),s.style.width="100%",s.style.height="auto",s.style.position="fixed",s.style.overflow="hidden",function(){i.style.height=r.height||"",i.style.overflow=r.overflow||"",["top","width","height","overflow","position"].forEach(function(e){s.style[e]=o[e]||""}),"scrollBehavior"in document.documentElement.style?window.scrollTo({top:n,behavior:"instant"}):window.scrollTo(0,n)}):function(){var e=document.documentElement,t=Object.assign({},e.style),i=!0,s=window.innerWidth-e.clientWidth,n=parseInt(window.getComputedStyle(e).paddingRight,10);return e.style.overflow="hidden",e.style.boxSizing="border-box",i&&(e.style.paddingRight="".concat(s+n,"px")),function(){["overflow","boxSizing","paddingRight"].forEach(function(i){e.style[i]=t[i]||""})}}()),l.lockedNum+=1}}function ae(e,t){var i;if(!U()){ee(e);var s=re(t);s.lockedNum-=1,s.lockedNum>0||(null===(i=s.unLockCallback)||void 0===i||i.call(s),Q().ios&&(ie(e).forEach(function(e){var t=s.lockedElements.indexOf(e);e&&-1!==t&&(e.ontouchmove=null,e.ontouchstart=null,s.lockedElements.splice(t,1))}),function(e){if(!e.documentListenerAdded)return;document.removeEventListener("touchmove",te(),Z({passive:!1})),e.documentListenerAdded=!1}(s)))}}re.lockState=ne;const le=["[contenteditable]",'[tabindex]:not([tabindex^="-"])',"a[href]","button:not([disabled]):not([aria-hidden])",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])"],ce={focus:!1,onClose:()=>{},onOpen:()=>{}},de="data-glsr-close",he="glsr-modal",ue="is-open",pe="data-glsr-trigger",fe=(e,t={})=>(t.class=he+"__"+e,t);class ve{constructor(e,t={}){this.events={_open:this._openModal.bind(this),mouseup:this._onClick.bind(this),keydown:this._onKeydown.bind(this),touchstart:this._onClick.bind(this)},this.id=e,this.triggers=[],this._config(t),this._reset()}header(e,t){return this._insertHtml(this.dom.header,e,t)}content(e,t){return this._insertHtml(this.dom.content,e,t)}footer(e,t){return this._insertHtml(this.dom.footer,e,t)}_closeModal(e=null){if(!ge.open.includes(this.id))return;e&&(e.preventDefault(),e.stopPropagation());const t=()=>{this.root.removeEventListener("animationend",t,!1),this.root.classList.remove(ue),ge.open.pop(),this.config.onClose(this,e),GLSR.Event.trigger("site-reviews/modal/close",this,e),x(()=>this._reset())()};this.root.addEventListener("animationend",t,!1),this.root.setAttribute("aria-hidden","true"),this._eventHandler("remove"),ae(this.dom.content),this.trigger&&this.trigger.focus&&this.trigger.focus()}_config(e){return this.config=Object.assign({},ce,e),this}_eventHandler(e){this._eventListener(this.dom.close,e,["keydown"]),this._eventListener(this.root,e,["mouseup","touchstart"]),this._eventListener(document,e,["keydown"])}_eventListener(e,t,i){e&&i.forEach(i=>e[t+"EventListener"](i,this.events[i]))}_focusableNodes(){return this.root?Array.from(this.root.querySelectorAll(le)):[]}_insertHtml(e,t=null,i={}){if(e&&null!==t){if(""!==t){const e=v("div",i);e.innerHTML=t,t=e.outerHTML}e.innerHTML=t}return e}_insertModal(){const e=v("button",fe("close",{"aria-label":GLSR.text.close_modal,"data-glsr-close":""})),t=v("div",fe("content",{tabindex:-1})),i=v("div",fe("header")),s=v("div",fe("footer")),n=v("div",fe("body"),v("div",fe("inner"),t)),r=v("div",fe("dialog",{"aria-modal":!0,role:"dialog"}),e,i,n,s),o=v("div",{class:he,id:this.id,"aria-hidden":!0},v("div",fe("overlay",{tabindex:-1,"data-glsr-close":""}),r));this.dom={...this.dom,body:n,close:e,content:t,dialog:r,footer:s,header:i};const a=document.querySelector("body > #page.site")??document.body;this.root=a.appendChild(o)}_onClick(e){e.target.hasAttribute(de)&&this._closeModal(e)}_onKeydown(e){[13,32].includes(e.keyCode)&&e.target===this.dom.close&&this._closeModal(e),27===e.keyCode&&ge.open.slice(-1)[0]===this.id&&this._closeModal(e),9===e.keyCode&&this._retainFocus(e)}_openModal(e){ge.open.push(this.id),this.trigger=document.activeElement,e&&(e.preventDefault(),this.trigger=e.currentTarget),this._insertModal();const t=this.trigger.closest(".glsr");t&&(this.root.style.fontSize=getComputedStyle(t).fontSize),oe(this.dom.content),this.config.onOpen(this,e),GLSR.Event.trigger("site-reviews/modal/open",this,e),this.root.setAttribute("aria-hidden","false"),this.root.classList.add(ue),this._eventHandler("add");const i=()=>{this.root.removeEventListener("animationend",i,!1),this._setFocusToFirstNode()};this.root.addEventListener("animationend",i,!1)}_registerTrigger(e){this._removeTrigger(e),e.addEventListener("click",this.events._open),this.triggers.push(e)}_removeTrigger(e){this.triggers=this.triggers.filter(t=>t!==e),e.removeEventListener("click",this.events._open)}_removeTriggers(){this.triggers.forEach(e=>this._removeTrigger(e)),this.triggers=[]}_reset(){this.dom={close:null,content:null,footer:null,header:null},this.root&&this.root.remove(),this.root=null,this.trigger=null}_retainFocus(e){let t=this._focusableNodes();if(0!==t.length)if(t=t.filter(e=>null!==e.offsetParent),this.root.contains(document.activeElement)){const i=t.indexOf(document.activeElement);e.shiftKey&&0===i?(t[t.length-1].focus(),e.preventDefault()):!e.shiftKey&&t.length>0&&i===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}_setFocusToFirstNode(){if(!this.config.focus)return;const e=this._focusableNodes();if(0===e.length)return;const t=e.filter(e=>!e.hasAttribute(de));t.length>0?t[0].focus():0===t.length&&e[0].focus()}}const ge={active:{},open:[]};var me={close:e=>{if(e)ge.active[e]&&ge.active[e]._closeModal();else for(let e in ge.active)ge.active[e]._closeModal()},init:(e,t)=>{let i;return ge.active[e]?(i=ge.active[e],i._removeTriggers(),t&&i._config(t)):i=new ve(e,t),document.querySelectorAll(`[${pe}]`).forEach(t=>{e===t.getAttribute(pe)&&i._registerTrigger(t)}),ge.active[e]=i,ge.active},modals:ge,modify:(e,t)=>{e&&ge.active[e]&&t(ge.active[e])},open:(e,t)=>{let i;ge.active[e]?(i=ge.active[e],i.root&&i._eventHandler("remove"),t&&i._config(t)):i=new ve(e,t),ge.active[e]=i,i._openModal()}};const _e="glsr-hide",ye=16,we=468,be="button.glsr-button-loadmore",Ee=".glsr-pagination a[data-page]",Le=".glsr-reviews, [data-reviews]";class Se{constructor(e,t){this.events={button:{click:this._onLoadMore.bind(this)},link:{click:this._onPaginate.bind(this)},window:{popstate:this._onPopstate.bind(this)}},this.paginationEl=t,this.reviewsEl=e.querySelector(Le),this.wrapperEl=e}destroy(){this._eventHandler("remove")}init(){this._eventHandler("add");const e=this.paginationEl.querySelector(".current");if(e){const t=this._data(e),i=e.nextElementSibling;t&&i&&2===+i.dataset.page&&GLSR.url_parameter&&window.history.replaceState(t,"",window.location)}}_data(e){try{const i=JSON.parse(JSON.stringify(this.paginationEl.dataset)),s={page:e.dataset.page||1,schema:!1,url:e.href||location.href};for(var t of Object.keys(i)){let e;try{e=JSON.parse(i[t])}catch(s){e=i[t]}s[`atts][${t}`]=e}return GLSR.ajax.data("fetch-paged-reviews",s)}catch(e){return console.error("Invalid pagination config."),!1}}_eventHandler(e){this._eventListener(window,e,this.events.window),this.wrapperEl.querySelectorAll(be).forEach(t=>{this._eventListener(t,e,this.events.button)}),this.wrapperEl.querySelectorAll(Ee).forEach(t=>{this._eventListener(t,e,this.events.link)})}_eventListener(e,t,i){Object.keys(i).forEach(s=>e[t+"EventListener"](s,i[s]))}_handleLoadMore(e,t,i,s){if(!s)return void(window.location=location);e.loaded();const n=Number(e.el.dataset.page)+1;e.el.dataset.page=n,i.max_num_pages<=n&&(this.paginationEl.innerHTML=""),this.reviewsEl.insertAdjacentHTML("beforeend",i.reviews),GLSR.Event.trigger("site-reviews/pagination/handle",i,this)}_handlePagination(e,t,i,s){s?(this._paginate(i),GLSR.url_parameter&&window.history.pushState(t,"",e.href)):window.location=e.href}_handlePopstate(e,t,i){i?this._paginate(t):console.error(t)}_loaded(){const e=this.paginationEl.querySelector(".glsr-spinner");e&&this.paginationEl.removeChild(e),this.wrapperEl.classList.remove(_e)}_loading(){this.wrapperEl.classList.add(_e),this.paginationEl.insertAdjacentHTML("beforeend",'<div class="glsr-spinner"></div>')}_onLoadMore(e){const t=e.currentTarget,i=this._data(t);if(i){const s=w(t);s.loading(),e.preventDefault(),GLSR.ajax.post(i,this._handleLoadMore.bind(this,s,i))}}_onPaginate(e){const t=e.currentTarget,i=this._data(t);i&&(this._loading(),e.preventDefault(),GLSR.ajax.post(i,this._handlePagination.bind(this,t,i)))}_onPopstate(e){GLSR.Event.trigger("site-reviews/pagination/popstate",e,this),e.state&&e.state[`${GLSR.nameprefix}[_action]`]&&(this._loading(),GLSR.ajax.post(e.state,this._handlePopstate.bind(this,e.state)))}_paginate(e){this.destroy(),this.paginationEl.innerHTML=e.pagination,this.reviewsEl.innerHTML=e.reviews,this.init(),this._scrollToTop(),this._loaded(),GLSR.Event.trigger("site-reviews/pagination/handle",e,this)}_scrollStep(e){const t=Math.min(1,(window.performance.now()-e.startTime)/we),i=.5*(1-Math.cos(Math.PI*t)),s=e.startY+(e.endY-e.startY)*i;window.scroll(0,e.offset+s),s!==e.endY&&window.requestAnimationFrame(this._scrollStep.bind(this,e))}_scrollToTop(){let e=ye;[].forEach.call(GLSR.ajax_pagination,t=>{const i=document.querySelector(t);i&&"fixed"===window.getComputedStyle(i).getPropertyValue("position")&&(e+=i.clientHeight)});const t=this.reviewsEl.getBoundingClientRect().top-e;t>0||this._scrollStep({endY:t,offset:window.pageYOffset,startTime:window.performance.now(),startY:this.reviewsEl.scrollTop})}}const xe="block:site-reviews/form",ke="block:site-reviews/review",Re="block:site-reviews/reviews",Te="site-reviews/excerpts/init",Ae="site-reviews/forms/init",Fe="site-reviews/init",Ge="site-reviews/loaded",Ne="site-reviews/modal/init",Oe="site-reviews/pagination/init",Ce=e=>{new y(e),d.trigger(Ne)},Me=()=>{GLSR.forms=GLSR.forms.filter(e=>!!e.form.closest("body")),document.querySelectorAll("form.glsr-review-form").forEach(e=>{const t=e.querySelector("[type=submit]");if(t){let i,s=GLSR.forms.findIndex(t=>t.form===e);-1!==s?(i=GLSR.forms[s],i.destroy()):(i=new z(e,t),GLSR.forms.push(i)),i.init()}})},je=()=>{GLSR.Modal.init("glsr-modal-review",{onOpen:e=>{const t=e.trigger.closest(".glsr"),i=t.cloneNode(!0),s=e.trigger.closest(".glsr-review").cloneNode(!0);s.querySelectorAll('[data-expanded="false"]').forEach(e=>e.dataset.expanded="true"),s.removeAttribute("id"),i.innerHTML="",i.removeAttribute("id"),i.appendChild(s);const n=GLSR.modal_wrapped_by.includes(i.dataset.from)?v("div",{class:t.parentElement.className,id:t.parentElement.parentElement.id,style:t.parentElement.style.cssText},i):i;e.dom.content.appendChild(n)}})},Pe=()=>{GLSR.pagination.forEach(e=>e.destroy()),GLSR.pagination=[],document.querySelectorAll(".glsr").forEach(e=>{const t=e.querySelector(".glsr-pagination");if(t&&(t.classList.contains("glsr-ajax-loadmore")||t.classList.contains("glsr-ajax-pagination"))){const i=new Se(e,t);i.init(),GLSR.pagination.push(i)}})},qe=()=>{document.querySelectorAll(".glsr").forEach(e=>{const t="glsr-"+window.getComputedStyle(e,null).getPropertyValue("direction");e.classList.add(t)}),d.trigger(Te),d.trigger(Ae),d.trigger(Oe),d.trigger(Ge)},He=()=>{d.on(ke,Ce),d.on(Re,Ce),d.on(xe,Me),d.on(Te,Ce),d.on(Ae,Me),d.on(Ne,je),d.on(Oe,Pe),d.on(Fe,qe),d.on("site-reviews/pagination/handle",(e,t)=>{d.trigger(Te,t.wrapperEl)})};window.hasOwnProperty("GLSR")||(window.GLSR={}),window.GLSR.ajax=o,window.GLSR.forms=[],window.GLSR.pagination=[],window.GLSR.Event=d,window.GLSR.Modal=me,window.GLSR.Utils={debounce:x,dom:v,fadeIn:async(e,t,i)=>E("in",e,t,i),fadeOut:async(e,t,i)=>E("out",e,t,i),isEmpty:e=>[Object,Array].includes((e||{}).constructor)&&!Object.entries(e||{}).length,parseJson:k,throttle:(e,t=32)=>{let i=null,s=0;return function(...n){const r=Date.now(),o=r-s;if(o>=t)return i&&(clearTimeout(i),i=null),s=r,e.apply(this,n);i||(i=setTimeout(()=>{s=Date.now(),i=null,e.apply(this,n)},t-o))}}},window.GLSR_init=(e,...t)=>{0===Object.keys(d.events).length&&He(),d.trigger(e||Fe,...t)},document.addEventListener("DOMContentLoaded",()=>{He(),setTimeout(()=>d.trigger(Fe),5),setTimeout(()=>(()=>{const e=new URL(location.href),t=Object.fromEntries(e.searchParams);if(!t.review_id)return;const i=t.verified?"verified":"approved",s=["form","review_id","theme","verified"],n=Object.fromEntries(s.filter(e=>e in t).map(e=>[e,t[e]]));s.forEach(t=>e.searchParams.delete(t)),history.replaceState({},"",e),GLSR.ajax.post(GLSR.ajax.data(`${i}-review`,n),(e,t)=>{if(!t)return console.error({request:n,response:e});GLSR.Modal.open(`glsr-modal-${i}`,{onOpen:t=>{t.content(e.review,e.attributes),t.dom.content.querySelectorAll('[data-expanded="false"]').forEach(e=>e.dataset.expanded="true"),e.message&&t.footer(`<p style="margin:0;padding:0;">${e.message}</p>`)}})})})(),10)})}();